web_translate_it 1.6.7 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +70 -13
- data/bin/wti +0 -1
- data/history.md +6 -0
- data/lib/web_translate_it/command_line.rb +25 -1
- data/lib/web_translate_it/configuration.rb +4 -2
- data/lib/web_translate_it/public/screen.css +233 -0
- data/lib/web_translate_it/server.rb +50 -0
- data/lib/web_translate_it/translation_file.rb +16 -1
- data/lib/web_translate_it/views/index.erb +62 -0
- data/lib/web_translate_it.rb +1 -0
- data/version.yml +2 -2
- metadata +24 -8
data/README.md
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
[Example app](http://github.com/AtelierConvivialite/rails_example_app) |
|
6
6
|
[Report a bug](http://github.com/AtelierConvivialite/webtranslateit/issues) |
|
7
7
|
[Support](http://help.webtranslateit.com)
|
8
|
+
[Documentation](http://docs.webtranslateit.com/web_translate_it_client/)
|
8
9
|
|
9
10
|
This is a gem providing tools to sync your software’s language files with [Web Translate It](https://webtranslateit.com), a web-based computer-aided translation tool.
|
10
11
|
|
@@ -12,8 +13,9 @@ This is a gem providing tools to sync your software’s language files with [Web
|
|
12
13
|
|
13
14
|
This gem provides your app with:
|
14
15
|
|
15
|
-
* an executable, `wti`, to upload and download language files from the command line (or in whatever else you want to execute it)
|
16
|
-
* a handful of rake task to fetch and upload your translations
|
16
|
+
* an executable, `wti`, that will help you to upload and download language files from the command line (or in whatever else you want to execute it),
|
17
|
+
* a handful of rake task to fetch and upload your translations,
|
18
|
+
* a Sinatra app to help you download your translations from a web-based interface,
|
17
19
|
* a rack middleware to automatically fetch new translations from Web Translate It.
|
18
20
|
|
19
21
|
## Installation
|
@@ -43,13 +45,69 @@ Run `wti --help` to see the usage:
|
|
43
45
|
-v --version Show version.
|
44
46
|
-h --help This page.
|
45
47
|
|
46
|
-
|
48
|
+
## Generalities
|
47
49
|
|
48
|
-
|
50
|
+
The first time, you’ll have to configure your project:
|
49
51
|
|
50
|
-
|
52
|
+
wti autoconf
|
53
|
+
|
54
|
+
It will ask for your Web Translate It API key, and where to save its configuration file. Letting it put in `config/translations.yml` makes everything easier.
|
55
|
+
|
56
|
+
### Uploading your first language file
|
57
|
+
|
58
|
+
If you have no file on Web Translate It yet, you need to send us your master language files. You can do it from the web interface, or from the command line:
|
59
|
+
|
60
|
+
wti add path/to/master/file.po
|
61
|
+
|
62
|
+
That’s it! Web Translate It will automatically create the corresponding target files.
|
63
|
+
|
64
|
+
### Updating a master language file
|
65
|
+
|
66
|
+
wti push
|
67
|
+
|
68
|
+
### Updating a target language file
|
51
69
|
|
52
|
-
|
70
|
+
wti push -l fr
|
71
|
+
|
72
|
+
where fr should be replaced by the locale code of your file.
|
73
|
+
|
74
|
+
### Download target language files
|
75
|
+
|
76
|
+
wti pull
|
77
|
+
|
78
|
+
### Download a specific language file
|
79
|
+
|
80
|
+
wti pull -l fr
|
81
|
+
|
82
|
+
### Download all the language files
|
83
|
+
|
84
|
+
wti pull --all
|
85
|
+
|
86
|
+
### Force pull (bypasses Web Translate It’s HTTP caching)
|
87
|
+
|
88
|
+
wti pull --force
|
89
|
+
|
90
|
+
### View project stats
|
91
|
+
|
92
|
+
wti stats
|
93
|
+
|
94
|
+
## Web Translate It Synchronisation Console
|
95
|
+
|
96
|
+
![Web Translate It](http://s3.amazonaws.com:80/edouard.baconfile.com/web_translate_it%2Fadmin_console.png)
|
97
|
+
|
98
|
+
The `wti` gem integrates since its version 1.7.0 a sinatra back-end that allow you to sync your translations directly from a friendly web interface. It allows a translation team to refresh the language files on a staging server without having to ask the developers to manually `wti pull`.
|
99
|
+
|
100
|
+
To get started, go to the directory of the application you want to sync and do:
|
101
|
+
|
102
|
+
wti server
|
103
|
+
|
104
|
+
By default, it starts an application on localhost on the port 4000. You will find the tool on `http://localhost:4000`.
|
105
|
+
|
106
|
+
Should you need to use another host or port, you can use the -h and -p options. For example: `wti server -p 1234`.
|
107
|
+
|
108
|
+
## Rake tasks
|
109
|
+
|
110
|
+
This gem includes some rake tasks and a rack middleware you could use to integrate Web Translate It with Ruby on Rails. The rake tasks are significantly slower than the executable, since it has to load the whole rails stack.
|
53
111
|
|
54
112
|
* Add to your config/environments.rb:
|
55
113
|
|
@@ -59,7 +117,7 @@ This gem includes some rake tasks and a rack middleware to integrate Web Transla
|
|
59
117
|
|
60
118
|
`rake gems:install`
|
61
119
|
|
62
|
-
*
|
120
|
+
* If you did not already did `wti autoconf`, copy your API key from Web Translate It and run:
|
63
121
|
|
64
122
|
`script/generate webtranslateit --api-key your_key_here`
|
65
123
|
|
@@ -68,8 +126,6 @@ This gem includes some rake tasks and a rack middleware to integrate Web Transla
|
|
68
126
|
- It adds a auto-configured `config/translation.yml` file using Web Translate It’s API.
|
69
127
|
- It adds `require 'web_translate_it/tasks' rescue LoadError` to your `Rakefile`
|
70
128
|
|
71
|
-
### Rake tasks provided
|
72
|
-
|
73
129
|
There are 3 rake tasks.
|
74
130
|
|
75
131
|
rake trans:fetch:all
|
@@ -86,8 +142,7 @@ Upload to Web Translate It your files in a specific locale defined in Web Transl
|
|
86
142
|
|
87
143
|
Read more about [Rails integration in the wiki](http://wiki.github.com/AtelierConvivialite/webtranslateit/).
|
88
144
|
|
89
|
-
|
90
|
-
## Supported Rails Versions
|
145
|
+
### Supported Rails Versions
|
91
146
|
|
92
147
|
The gem currently has been tested against the following versions of Rails:
|
93
148
|
|
@@ -98,8 +153,10 @@ Please open a discussion on [our support site](http://help.webtranslateit.com) i
|
|
98
153
|
|
99
154
|
# Acknowledgement
|
100
155
|
|
101
|
-
* The executable’s commands are very much inspired from [Gemcutter](http://gemcutter.org
|
102
|
-
* The Rails generator was pinched from [Hoptoad Notifier](http://github.com/thoughtbot/hoptoad_notifier
|
156
|
+
* The executable’s commands are very much inspired from [Gemcutter](http://gemcutter.org),
|
157
|
+
* The Rails generator was pinched from [Hoptoad Notifier](http://github.com/thoughtbot/hoptoad_notifier),
|
158
|
+
* The idea of a web-app to sync translations with Web Translate It come from Tom Lea’s awesome [rack-webtranslateit](http://github.com/cwninja/rack-webtranslateit),
|
159
|
+
* The Sinatra app is much inspired from Chris Wanstrath’s [CI Joe](http://github.com/defunkt/cijoe).
|
103
160
|
|
104
161
|
# What is Web Translate It anyway?
|
105
162
|
|
data/bin/wti
CHANGED
data/history.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## Edge
|
2
|
+
|
3
|
+
* New: `wti server` launch a sinatra app allowing to sync files from a web interface.
|
4
|
+
Pinched from Tom Lea’s awesome rack-webtranslate-it, but made less specific.
|
5
|
+
* Bug fix: `wti autoconf` now create directories correctly if they don’t already exist. #27
|
6
|
+
|
1
7
|
## Version 1.6.7 /2010-05-05
|
2
8
|
|
3
9
|
* New: `wti add file_path` to create a new master language file on Web Translate It.
|
@@ -9,12 +9,15 @@ push Push master language file(s) to Web Translate It.
|
|
9
9
|
add Create a new master language file to Web Translate It.
|
10
10
|
autoconf Configure your project to sync with Web Translate It.
|
11
11
|
stats Fetch and display your project statistics.
|
12
|
+
server Launch web-based synchronisation console.
|
12
13
|
|
13
14
|
OPTIONAL PARAMETERS:
|
14
15
|
--------------------
|
15
16
|
-l --locale The ISO code of a specific locale to pull or push.
|
16
17
|
-c --config Path to a translation.yml file. If this option
|
17
18
|
is absent, looks for config/translation.yml.
|
19
|
+
-h --host Set server host when using `wti server` (default 0.0.0.0).
|
20
|
+
-p --port Set server port when using `wti server` (default 4000).
|
18
21
|
--all Respectively download or upload all files.
|
19
22
|
--force Force wti pull to re-download the language file,
|
20
23
|
regardless if local version is current.
|
@@ -39,6 +42,8 @@ OPTION
|
|
39
42
|
autoconf
|
40
43
|
when 'stats'
|
41
44
|
stats
|
45
|
+
when 'server'
|
46
|
+
server
|
42
47
|
when '-v', '--version'
|
43
48
|
show_version
|
44
49
|
when '-h', '--help'
|
@@ -86,7 +91,7 @@ OPTION
|
|
86
91
|
puts "We will attempt to configure your project automagically"
|
87
92
|
api_key = Util.ask("Please enter your project API Key")
|
88
93
|
path = Util.ask("Where should we create the configuration file?", 'config/translation.yml')
|
89
|
-
FileUtils.mkpath(path.split('/')[0..path.split('/').size-
|
94
|
+
FileUtils.mkpath(path.split('/')[0..path.split('/').size-2].join('/'))
|
90
95
|
project = YAML.load WebTranslateIt::Project.fetch_info(api_key)
|
91
96
|
project_info = project['project']
|
92
97
|
File.open(path, 'w'){ |file| file << generate_configuration(api_key, project_info) }
|
@@ -127,6 +132,11 @@ OPTION
|
|
127
132
|
end
|
128
133
|
end
|
129
134
|
|
135
|
+
def self.server
|
136
|
+
host_port = fetch_server_host_and_port
|
137
|
+
WebTranslateIt::Server.start(host_port[0], host_port[1])
|
138
|
+
end
|
139
|
+
|
130
140
|
def self.show_options
|
131
141
|
puts ""
|
132
142
|
puts "Web Translate It Help:"
|
@@ -148,6 +158,20 @@ OPTION
|
|
148
158
|
return configuration
|
149
159
|
end
|
150
160
|
|
161
|
+
def self.fetch_server_host_and_port
|
162
|
+
if (index = ARGV.index('-h') || ARGV.index('--host')).nil?
|
163
|
+
host = "0.0.0.0"
|
164
|
+
else
|
165
|
+
host = ARGV[index+1]
|
166
|
+
end
|
167
|
+
if (index = ARGV.index('-p') || ARGV.index('--port')).nil?
|
168
|
+
port = "4000"
|
169
|
+
else
|
170
|
+
port = ARGV[index+1]
|
171
|
+
end
|
172
|
+
return [host,port]
|
173
|
+
end
|
174
|
+
|
151
175
|
def self.fetch_locales_to_pull(configuration)
|
152
176
|
if (index = ARGV.index('-l') || ARGV.index('--locale')).nil?
|
153
177
|
locales = configuration.target_locales
|
@@ -9,7 +9,7 @@ module WebTranslateIt
|
|
9
9
|
class Configuration
|
10
10
|
require 'yaml'
|
11
11
|
require 'fileutils'
|
12
|
-
attr_accessor :path, :api_key, :source_locale, :target_locales, :files, :ignore_locales, :logger
|
12
|
+
attr_accessor :path, :api_key, :source_locale, :target_locales, :files, :ignore_locales, :logger, :before_pull, :after_pull
|
13
13
|
|
14
14
|
# Load configuration file from the path.
|
15
15
|
def initialize(root_path = Rails.root, path_to_config_file = "config/translation.yml")
|
@@ -17,6 +17,8 @@ module WebTranslateIt
|
|
17
17
|
self.logger = logger
|
18
18
|
configuration = YAML.load_file(File.join(self.path, path_to_config_file))
|
19
19
|
self.api_key = configuration['api_key']
|
20
|
+
self.before_pull = configuration['before_pull']
|
21
|
+
self.after_pull = configuration['after_pull']
|
20
22
|
project_info = YAML.load WebTranslateIt::Project.fetch_info(api_key)
|
21
23
|
set_locales_to_ignore(configuration)
|
22
24
|
set_files(project_info['project'])
|
@@ -58,7 +60,7 @@ module WebTranslateIt
|
|
58
60
|
def api_url
|
59
61
|
"/api/projects/#{api_key}.yaml"
|
60
62
|
end
|
61
|
-
|
63
|
+
|
62
64
|
# Returns a logger. If RAILS_DEFAULT_LOGGER is defined, use it, else, define a new logger.
|
63
65
|
def logger
|
64
66
|
if defined?(Rails.logger)
|
@@ -0,0 +1,233 @@
|
|
1
|
+
/*****************************************************************************/
|
2
|
+
/*
|
3
|
+
/* Common
|
4
|
+
/*
|
5
|
+
/*****************************************************************************/
|
6
|
+
|
7
|
+
/* Global Reset */
|
8
|
+
|
9
|
+
* {
|
10
|
+
margin: 0;
|
11
|
+
padding: 0;
|
12
|
+
}
|
13
|
+
|
14
|
+
html, body {
|
15
|
+
height: 100%;
|
16
|
+
}
|
17
|
+
|
18
|
+
body {
|
19
|
+
background-color: white;
|
20
|
+
font: 13.34px helvetica, arial, clean, sans-serif;
|
21
|
+
*font-size: small;
|
22
|
+
text-align: center;
|
23
|
+
}
|
24
|
+
|
25
|
+
h1, h2, h3, h4, h5, h6 {
|
26
|
+
font-size: 100%;
|
27
|
+
}
|
28
|
+
|
29
|
+
h1 {
|
30
|
+
margin-bottom: 1em;
|
31
|
+
}
|
32
|
+
|
33
|
+
h1 a {
|
34
|
+
text-decoration: none;
|
35
|
+
color: #000;
|
36
|
+
}
|
37
|
+
|
38
|
+
.failed, .color31 {
|
39
|
+
color: red !important;
|
40
|
+
}
|
41
|
+
|
42
|
+
.worked, .color32 {
|
43
|
+
color: green !important;
|
44
|
+
}
|
45
|
+
|
46
|
+
.errored, .color33 {
|
47
|
+
color: yellow !important;
|
48
|
+
}
|
49
|
+
|
50
|
+
p {
|
51
|
+
margin: 1em 0;
|
52
|
+
}
|
53
|
+
|
54
|
+
a {
|
55
|
+
color: #00a;
|
56
|
+
}
|
57
|
+
|
58
|
+
a:hover {
|
59
|
+
color: black;
|
60
|
+
}
|
61
|
+
|
62
|
+
a:visited {
|
63
|
+
color: #a0a;
|
64
|
+
}
|
65
|
+
|
66
|
+
table {
|
67
|
+
font-size: inherit;
|
68
|
+
font: 100%;
|
69
|
+
border-collapse: collapse;
|
70
|
+
}
|
71
|
+
|
72
|
+
th {
|
73
|
+
text-align: center;
|
74
|
+
padding-right: 1em;
|
75
|
+
}
|
76
|
+
|
77
|
+
tr {
|
78
|
+
border-bottom: 1px solid #CCC;
|
79
|
+
}
|
80
|
+
|
81
|
+
td {
|
82
|
+
padding: .5em 1em;
|
83
|
+
}
|
84
|
+
|
85
|
+
.information {
|
86
|
+
background-color: #ffffc0;
|
87
|
+
color: #333;
|
88
|
+
padding: 5px;
|
89
|
+
}
|
90
|
+
|
91
|
+
/*****************************************************************************/
|
92
|
+
/*
|
93
|
+
/* Home
|
94
|
+
/*
|
95
|
+
/*****************************************************************************/
|
96
|
+
|
97
|
+
ul.posts {
|
98
|
+
list-style-type: none;
|
99
|
+
margin-bottom: 2em;
|
100
|
+
}
|
101
|
+
|
102
|
+
ul.posts li {
|
103
|
+
line-height: 1.75em;
|
104
|
+
}
|
105
|
+
|
106
|
+
ul.posts .date,
|
107
|
+
ul.posts .duration {
|
108
|
+
color: #aaa;
|
109
|
+
font-family: Monaco, "Courier New", monospace;
|
110
|
+
font-size: 80%;
|
111
|
+
}
|
112
|
+
|
113
|
+
/*****************************************************************************/
|
114
|
+
/*
|
115
|
+
/* Site
|
116
|
+
/*
|
117
|
+
/*****************************************************************************/
|
118
|
+
|
119
|
+
.site {
|
120
|
+
font-size: 110%;
|
121
|
+
text-align: justify;
|
122
|
+
width: 80%;
|
123
|
+
margin: 3em auto 2em auto;
|
124
|
+
line-height: 1.5em;
|
125
|
+
}
|
126
|
+
|
127
|
+
.title {
|
128
|
+
color: #a00;
|
129
|
+
font-weight: bold;
|
130
|
+
margin-bottom: 2em;
|
131
|
+
}
|
132
|
+
|
133
|
+
.site .title a {
|
134
|
+
color: #a00;
|
135
|
+
text-decoration: none;
|
136
|
+
}
|
137
|
+
|
138
|
+
.site .title a:hover {
|
139
|
+
color: black;
|
140
|
+
}
|
141
|
+
|
142
|
+
.site .title .extra {
|
143
|
+
color: #aaa;
|
144
|
+
text-decoration: none;
|
145
|
+
margin-left: 1em;
|
146
|
+
font-size: 0.9em;
|
147
|
+
}
|
148
|
+
|
149
|
+
.site .title a.extra:hover {
|
150
|
+
color: black;
|
151
|
+
}
|
152
|
+
|
153
|
+
.site .meta {
|
154
|
+
color: #aaa;
|
155
|
+
}
|
156
|
+
|
157
|
+
.site .footer {
|
158
|
+
font-size: 80%;
|
159
|
+
color: #666;
|
160
|
+
border-top: 4px solid #eee;
|
161
|
+
margin-top: 2em;
|
162
|
+
overflow: hidden;
|
163
|
+
}
|
164
|
+
|
165
|
+
.site .footer .contact {
|
166
|
+
float: left;
|
167
|
+
margin-right: 3em;
|
168
|
+
}
|
169
|
+
|
170
|
+
.site .footer .contact a {
|
171
|
+
color: #8085C1;
|
172
|
+
}
|
173
|
+
|
174
|
+
.site .footer .rss {
|
175
|
+
margin-top: 1.1em;
|
176
|
+
margin-right: -.2em;
|
177
|
+
float: right;
|
178
|
+
}
|
179
|
+
|
180
|
+
.site .footer .rss img {
|
181
|
+
border: 0;
|
182
|
+
}
|
183
|
+
|
184
|
+
/*****************************************************************************/
|
185
|
+
/*
|
186
|
+
/* Posts
|
187
|
+
/*
|
188
|
+
/*****************************************************************************/
|
189
|
+
|
190
|
+
#post {
|
191
|
+
|
192
|
+
}
|
193
|
+
|
194
|
+
/* standard */
|
195
|
+
|
196
|
+
#post pre {
|
197
|
+
border: 1px solid #ddd;
|
198
|
+
background-color: #eef;
|
199
|
+
padding: 0 .4em;
|
200
|
+
}
|
201
|
+
|
202
|
+
#post ul,
|
203
|
+
#post ol {
|
204
|
+
margin-left: 1.25em;
|
205
|
+
}
|
206
|
+
|
207
|
+
#post code {
|
208
|
+
border: 1px solid #ddd;
|
209
|
+
background-color: #eef;
|
210
|
+
font-size: 95%;
|
211
|
+
padding: 0 .2em;
|
212
|
+
}
|
213
|
+
|
214
|
+
#post pre code {
|
215
|
+
border: none;
|
216
|
+
}
|
217
|
+
|
218
|
+
/* terminal */
|
219
|
+
|
220
|
+
pre.terminal {
|
221
|
+
border: 1px solid black;
|
222
|
+
background-color: #333;
|
223
|
+
color: white;
|
224
|
+
padding: 5px;
|
225
|
+
overflow: auto;
|
226
|
+
word-wrap: break-word;
|
227
|
+
}
|
228
|
+
|
229
|
+
pre.terminal code {
|
230
|
+
font-family: 'Bitstream Vera Sans Mono', 'Courier', monospace;
|
231
|
+
background-color: #333;
|
232
|
+
}
|
233
|
+
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'sinatra/base'
|
2
|
+
require 'erb'
|
3
|
+
|
4
|
+
module WebTranslateIt
|
5
|
+
class Server < Sinatra::Base
|
6
|
+
attr_reader :config
|
7
|
+
|
8
|
+
dir = File.dirname(File.expand_path(__FILE__))
|
9
|
+
|
10
|
+
set :views, "#{dir}/views"
|
11
|
+
set :public, "#{dir}/public"
|
12
|
+
set :static, true
|
13
|
+
set :lock, true
|
14
|
+
|
15
|
+
helpers do
|
16
|
+
def wti_root
|
17
|
+
root = request.path
|
18
|
+
root = "" if root == "/"
|
19
|
+
root
|
20
|
+
end
|
21
|
+
|
22
|
+
def highlight(value, expected)
|
23
|
+
return if value.nil?
|
24
|
+
print_value = value == true ? "Yes" : "No"
|
25
|
+
value == expected ? "<em>#{print_value}</em>" : "<em class=\"information\">#{print_value}</em>"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
get '/' do
|
30
|
+
erb :index, :locals => { :config => config }
|
31
|
+
end
|
32
|
+
|
33
|
+
post '/pull' do
|
34
|
+
`#{config.before_pull}` if config.before_pull
|
35
|
+
WebTranslateIt::CommandLine.pull
|
36
|
+
`#{config.after_pull}` if config.after_pull
|
37
|
+
redirect "/"
|
38
|
+
end
|
39
|
+
|
40
|
+
def initialize(*args)
|
41
|
+
super
|
42
|
+
@config = WebTranslateIt::Configuration.new('.')
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.start(host, port)
|
46
|
+
WebTranslateIt::Server.run! :host => host, :port => port
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
@@ -89,7 +89,22 @@ module WebTranslateIt
|
|
89
89
|
puts "\nFile #{self.file_path} doesn't exist!"
|
90
90
|
end
|
91
91
|
end
|
92
|
-
|
92
|
+
|
93
|
+
def committed?
|
94
|
+
Dir.chdir(File.dirname(file_path)) do
|
95
|
+
system "git status | grep 'modified: #{File.basename(file_path)}' > /dev/null"
|
96
|
+
end
|
97
|
+
! $?.success?
|
98
|
+
end
|
99
|
+
|
100
|
+
def exists?
|
101
|
+
File.exists?(file_path)
|
102
|
+
end
|
103
|
+
|
104
|
+
def modified_remotely?
|
105
|
+
fetch == "200 OK"
|
106
|
+
end
|
107
|
+
|
93
108
|
protected
|
94
109
|
|
95
110
|
# Convenience method which returns the date of last modification of a language file.
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<link href="<%= wti_root %>/screen.css" media="screen" rel="stylesheet" type="text/css" />
|
5
|
+
<link rel="shortcut icon" href="<%= wti_root %>/favicon.ico" type="image/x-icon" />
|
6
|
+
<title>Web Translate It Synchronisation Console</title>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<div class="site">
|
10
|
+
<div class="title">
|
11
|
+
<a href="<%= wti_root %>/">Web Translate It Synchronisation Console</a>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div id="home">
|
15
|
+
<h1>Language File Status</h1>
|
16
|
+
<table>
|
17
|
+
<thead>
|
18
|
+
<tr>
|
19
|
+
<th>File Name</th>
|
20
|
+
<th>Locale</th>
|
21
|
+
<th>Exists</th>
|
22
|
+
<th>Committed</th>
|
23
|
+
<th>New Version Available</th>
|
24
|
+
</tr>
|
25
|
+
</thead>
|
26
|
+
<tbody>
|
27
|
+
<% config.files.each do |file| %>
|
28
|
+
<tr>
|
29
|
+
<td><%= file.file_path %></td>
|
30
|
+
<td><%= file.locale.upcase %></td>
|
31
|
+
<td><%= highlight(file.exists?, true) %></td>
|
32
|
+
<td><%= highlight(file.committed?, true) %></td>
|
33
|
+
<td><%= highlight(file.modified_remotely?, false) %></td>
|
34
|
+
</tr>
|
35
|
+
<% end %>
|
36
|
+
</tbody>
|
37
|
+
</table>
|
38
|
+
|
39
|
+
<form method="post" action="<%= wti_root %>/pull">
|
40
|
+
<input type="submit" value="Get new translations" />
|
41
|
+
</form>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<div class="footer">
|
45
|
+
<div class="contact">
|
46
|
+
<p>
|
47
|
+
<a href="http://docs.webtranslateit.com">Documentation</a><br/>
|
48
|
+
<a href="http://github.com/AtelierConvivialite/web_translate_it">Source</a><br/>
|
49
|
+
<a href="http://github.com/AtelierConvivialite/web_translate_it/issues">Issues</a><br/>
|
50
|
+
<a href="http://twitter.com/webtranslateit">Twitter</a>
|
51
|
+
</p>
|
52
|
+
</div>
|
53
|
+
<div class="contact">
|
54
|
+
<p>
|
55
|
+
<code>wti</code> v.<%= WebTranslateIt::Util.version %><br/>
|
56
|
+
Built with <a href="http://sinatrarb.com/">Sinatra</a>
|
57
|
+
</p>
|
58
|
+
</div>
|
59
|
+
</div>
|
60
|
+
</div>
|
61
|
+
</body>
|
62
|
+
</html>
|
data/lib/web_translate_it.rb
CHANGED
@@ -6,6 +6,7 @@ require File.join(File.dirname(__FILE__), 'web_translate_it', 'auto_fetch')
|
|
6
6
|
require File.join(File.dirname(__FILE__), 'web_translate_it', 'command_line')
|
7
7
|
require File.join(File.dirname(__FILE__), 'web_translate_it', 'project')
|
8
8
|
require File.join(File.dirname(__FILE__), 'web_translate_it', 'tasks')
|
9
|
+
require File.join(File.dirname(__FILE__), 'web_translate_it', 'server')
|
9
10
|
|
10
11
|
module WebTranslateIt
|
11
12
|
|
data/version.yml
CHANGED
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 1
|
7
|
-
- 6
|
8
7
|
- 7
|
9
|
-
|
8
|
+
- 0
|
9
|
+
version: 1.7.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- "\xC3\x89douard Bri\xC3\xA8re"
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-05-
|
17
|
+
date: 2010-05-12 00:00:00 +02:00
|
18
18
|
default_executable: wti
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -31,9 +31,22 @@ dependencies:
|
|
31
31
|
type: :runtime
|
32
32
|
version_requirements: *id001
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: sinatra
|
35
35
|
prerelease: false
|
36
36
|
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
segments:
|
41
|
+
- 1
|
42
|
+
- 0
|
43
|
+
version: "1.0"
|
44
|
+
type: :runtime
|
45
|
+
version_requirements: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
prerelease: false
|
49
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
37
50
|
requirements:
|
38
51
|
- - ">="
|
39
52
|
- !ruby/object:Gem::Version
|
@@ -43,8 +56,8 @@ dependencies:
|
|
43
56
|
- 9
|
44
57
|
version: 1.2.9
|
45
58
|
type: :development
|
46
|
-
version_requirements: *
|
47
|
-
description:
|
59
|
+
version_requirements: *id003
|
60
|
+
description: An ruby executable, a sinatra app and a handful of rake tasks to sync your translations between your app and webtranslateit.com.
|
48
61
|
email: edouard@atelierconvivialite.com
|
49
62
|
executables:
|
50
63
|
- wti
|
@@ -65,9 +78,12 @@ files:
|
|
65
78
|
- lib/web_translate_it/command_line.rb
|
66
79
|
- lib/web_translate_it/configuration.rb
|
67
80
|
- lib/web_translate_it/project.rb
|
81
|
+
- lib/web_translate_it/public/screen.css
|
82
|
+
- lib/web_translate_it/server.rb
|
68
83
|
- lib/web_translate_it/tasks.rb
|
69
84
|
- lib/web_translate_it/translation_file.rb
|
70
85
|
- lib/web_translate_it/util.rb
|
86
|
+
- lib/web_translate_it/views/index.erb
|
71
87
|
- lib/web_translate_it.rb
|
72
88
|
- generators/webtranslateit/lib/insert_commands.rb
|
73
89
|
- generators/webtranslateit/templates/translation.yml
|
@@ -80,7 +96,7 @@ has_rdoc: true
|
|
80
96
|
homepage: https://webtranslateit.com
|
81
97
|
licenses: []
|
82
98
|
|
83
|
-
post_install_message:
|
99
|
+
post_install_message:
|
84
100
|
rdoc_options:
|
85
101
|
- --main
|
86
102
|
- README.md
|
@@ -106,7 +122,7 @@ rubyforge_project:
|
|
106
122
|
rubygems_version: 1.3.6
|
107
123
|
signing_key:
|
108
124
|
specification_version: 3
|
109
|
-
summary: Sync your translations between your
|
125
|
+
summary: Sync your translations between your app and Web Translate It
|
110
126
|
test_files:
|
111
127
|
- spec/examples/config/translation.yml
|
112
128
|
- spec/examples/en.yml
|