web_translate_it 2.4.9 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/wti +21 -21
- data/history.md +36 -0
- data/lib/web_translate_it/command_line.rb +64 -11
- data/lib/web_translate_it/configuration.rb +15 -3
- data/lib/web_translate_it/translation_file.rb +30 -24
- data/lib/web_translate_it/util/array_util.rb +5 -1
- data/license +1 -1
- data/readme.md +2 -2
- metadata +6 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f01930a3c46a7521f57e14caa623d495f37d81f1e392ceee1d11716e53366f69
|
4
|
+
data.tar.gz: 24f554f5a22af0333e19adbcd846e1e100d789d06be261b28a943851307e5c57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65aa66ec8c8b70c937c18de52857e8d2a54835847b147ea2b9c8e07e761ea8ef262b1af6db87be42ee6b41c36b94eaee1748f677e36dacb453e27e84e4710f7d
|
7
|
+
data.tar.gz: 47d4c899f44bb80f04d695a0365fe2acd9948b3cfac8eec936ce9df44c846a4659fcbd34e1023aab686ac2b51ec3ed39f0e68ff84e3852484745ae905b058533
|
data/bin/wti
CHANGED
@@ -14,18 +14,18 @@ The most commonly used wti commands are:
|
|
14
14
|
match Display matching of local files with File Manager
|
15
15
|
add Create and push a new master language file
|
16
16
|
rm Delete a master language file from a project
|
17
|
+
mv Moves a file both locally and from a project
|
17
18
|
addlocale Add a new locale to the project
|
18
19
|
rmlocale Delete a locale from a project
|
19
20
|
status Fetch and display project statistics
|
20
21
|
init Configure your project to sync
|
21
|
-
configuser Configure your user email
|
22
22
|
|
23
23
|
See `wti <command> --help` for more information on a specific command.
|
24
24
|
|
25
25
|
[options] are:
|
26
26
|
EOS
|
27
27
|
|
28
|
-
SUB_COMMANDS = %w(pull push match add addlocale status st init
|
28
|
+
SUB_COMMANDS = %w(pull push match add rm mv addlocale rmlocale status st init)
|
29
29
|
global_options = Optimist::options do
|
30
30
|
stop_on SUB_COMMANDS
|
31
31
|
banner show_commands
|
@@ -40,10 +40,10 @@ command_options = case command
|
|
40
40
|
wti pull [filename] - Pull target language file(s)
|
41
41
|
[options] are:
|
42
42
|
EOS
|
43
|
-
opt :locale, "ISO code of locale(s) to pull", :
|
43
|
+
opt :locale, "ISO code of locale(s) to pull, space-separated", type: :string
|
44
44
|
opt :all, "Pull all files"
|
45
45
|
opt :force, "Force pull (bypass conditional requests to WTI)"
|
46
|
-
opt :config, "Path to a configuration file", :
|
46
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
47
47
|
opt :debug, "Display debug information"
|
48
48
|
end
|
49
49
|
when "push"
|
@@ -52,15 +52,15 @@ EOS
|
|
52
52
|
wti push [filename] - Push master language file(s)
|
53
53
|
[options] are:
|
54
54
|
EOS
|
55
|
-
opt :locale, "ISO code of locale(s) to push", :
|
55
|
+
opt :locale, "ISO code of locale(s) to push, space-separated", type: :string
|
56
56
|
opt :target, "Upload all target files"
|
57
57
|
opt :force, "Force push (bypass conditional requests to WTI)"
|
58
58
|
opt :low_priority, "WTI will process this file with a low priority"
|
59
59
|
opt :merge, "Force WTI to merge this file"
|
60
60
|
opt :ignore_missing, "Force WTI to not obsolete missing strings"
|
61
61
|
opt :minor, "Minor Changes. When pushing a master file, prevents target translations to be flagged as `to_verify`."
|
62
|
-
opt :label, "Apply a label to the changes", :
|
63
|
-
opt :config, "Path to a configuration file", :
|
62
|
+
opt :label, "Apply a label to the changes", type: :string
|
63
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
64
64
|
opt :all, "DEPRECATED -- See `wti push --target` instead"
|
65
65
|
opt :debug, "Display debug information"
|
66
66
|
end
|
@@ -68,48 +68,49 @@ EOS
|
|
68
68
|
Optimist::options do
|
69
69
|
banner "wti add filename - Create and push a new master language file"
|
70
70
|
opt :low_priority, "WTI will process this file with a low priority"
|
71
|
-
opt :config, "Path to a configuration file", :
|
71
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
72
72
|
opt :debug, "Display debug information"
|
73
73
|
end
|
74
74
|
when "rm"
|
75
75
|
Optimist::options do
|
76
76
|
banner "wti rm filename - Delete a master language file"
|
77
|
-
opt :config, "Path to a configuration file", :
|
77
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
78
78
|
opt :debug, "Display debug information"
|
79
79
|
end
|
80
|
+
when "mv"
|
81
|
+
Optimist::options do
|
82
|
+
banner "wti mv filename - Moves a master language file and its target files"
|
83
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
84
|
+
opt :debug, "Display debug information"
|
85
|
+
end
|
80
86
|
when "addlocale"
|
81
87
|
Optimist::options do
|
82
88
|
banner "wti addlocale localename - Add a new locale to the project"
|
83
|
-
opt :config, "Path to a configuration file", :
|
89
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
84
90
|
opt :debug, "Display debug information"
|
85
91
|
end
|
86
92
|
when "rmlocale"
|
87
93
|
Optimist::options do
|
88
94
|
banner "wti rmlocale localename Delete a locale from the project"
|
89
|
-
opt :config, "Path to a configuration file", :
|
95
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
90
96
|
opt :debug, "Display debug information"
|
91
97
|
end
|
92
98
|
when "status"
|
93
99
|
Optimist::options do
|
94
|
-
banner "wti status - Fetch and display project statistics"
|
95
|
-
opt :config, "Path to a configuration file", :
|
100
|
+
banner "wti status - Fetch and display project statistics.\nReturns 100 if untranslated segments exist in project\nReturns 101 if unproofread segments exist in project."
|
101
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
96
102
|
opt :debug, "Display debug information"
|
97
103
|
end
|
98
104
|
when "init"
|
99
105
|
Optimist::options do
|
100
106
|
banner "wti init [api_token] - Configure your project to sync"
|
101
|
-
opt :config, "Path to a configuration file", :
|
102
|
-
opt :debug, "Display debug information"
|
103
|
-
end
|
104
|
-
when "configuser"
|
105
|
-
Optimist::options do
|
106
|
-
banner "wti configuser - Configure your user email"
|
107
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
107
108
|
opt :debug, "Display debug information"
|
108
109
|
end
|
109
110
|
when "match"
|
110
111
|
Optimist::options do
|
111
112
|
banner "wti match - Display matching of local files with File Manager"
|
112
|
-
opt :config, "Path to a configuration file", :
|
113
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
113
114
|
opt :debug, "Display debug information"
|
114
115
|
end
|
115
116
|
else
|
@@ -128,4 +129,3 @@ rescue Interrupt => e
|
|
128
129
|
puts StringUtil.failure("\nQuitting...")
|
129
130
|
exit 1
|
130
131
|
end
|
131
|
-
|
data/history.md
CHANGED
@@ -1,3 +1,39 @@
|
|
1
|
+
## Version 2.5.0 / 2021-11-15
|
2
|
+
|
3
|
+
* Display files that are being updated on WebTranslateIt but are not ready to be downloaded by a `*`.
|
4
|
+
|
5
|
+
``` bash
|
6
|
+
~/Desktop/test% wti pull
|
7
|
+
# Pulling files on test 3
|
8
|
+
*cs-CZ.de.yml | 65a7fc8..65a7fc8 Skipped
|
9
|
+
en.yml | ffd8096..ffd8096 Skipped
|
10
|
+
i18nextv4.de.json | 142aca7..142aca7 Skipped
|
11
|
+
*cs-CZ.yml | 42c32a3..42c32a3 Skipped
|
12
|
+
de.yml | 9dda491..9dda491 Skipped
|
13
|
+
test.de.json | 48a9c13..48a9c13 Skipped
|
14
|
+
test.de.txt | 8f305f3..8f305f3 Skipped
|
15
|
+
test.json | 7a9478f..7a9478f Skipped
|
16
|
+
i18nextv4.json | 84d6cdf..8776cb3 OK
|
17
|
+
test.txt | 8f305f3..7a1a5db OK
|
18
|
+
```
|
19
|
+
* Improve help on `wti status` documentation.
|
20
|
+
|
21
|
+
## Version 2.4.12 / 2021-06-30
|
22
|
+
|
23
|
+
* Add ability to pass project API token as an ENV variable. You can run:
|
24
|
+
`export WTI_PROJECT_API_KEY=[my_api_token]`
|
25
|
+
`wti pull`
|
26
|
+
|
27
|
+
## Version 2.4.11 / 2019-10-22
|
28
|
+
|
29
|
+
* Fix for `wti pull` without parameters.
|
30
|
+
|
31
|
+
## Version 2.4.10 / 2019-10-21
|
32
|
+
|
33
|
+
* New command: `wti mv path/to/file.po newpath/to/file.po` to move a language file
|
34
|
+
both on your local working directory and on your WebTranslateIt project.
|
35
|
+
* Fix: `wti pull something` now doesn’t pull anything if no files match what needs to be pulled. Close #151.
|
36
|
+
|
1
37
|
## Version 2.4.9 / 2019-08-07
|
2
38
|
|
3
39
|
* Fix issue referencing old `Trollop` library. #149
|
@@ -18,6 +18,8 @@ module WebTranslateIt
|
|
18
18
|
message = "Creating master files"
|
19
19
|
when 'rm'
|
20
20
|
message = "Deleting files"
|
21
|
+
when 'mv'
|
22
|
+
message = "Moving files"
|
21
23
|
when 'addlocale'
|
22
24
|
message = "Adding locale"
|
23
25
|
when 'rmlocale'
|
@@ -44,7 +46,7 @@ module WebTranslateIt
|
|
44
46
|
parameters.each do |parameter|
|
45
47
|
found_files += files.find_all{ |file| File.fnmatch(parameter, file.file_path) }
|
46
48
|
end
|
47
|
-
files = found_files if
|
49
|
+
files = found_files if parameters.any?
|
48
50
|
files = files.uniq.sort{ |a,b| a.file_path <=> b.file_path }
|
49
51
|
if files.size == 0
|
50
52
|
puts "No files to pull."
|
@@ -111,7 +113,7 @@ module WebTranslateIt
|
|
111
113
|
to_add = parameters.reject{ |param| added.include?(File.expand_path(param))}
|
112
114
|
if to_add.any?
|
113
115
|
to_add.each do |param|
|
114
|
-
file = TranslationFile.new(nil, param, nil, configuration.api_key)
|
116
|
+
file = TranslationFile.new(nil, param.gsub(/ /, "\\ "), nil, configuration.api_key)
|
115
117
|
success = file.create(http, command_options.low_priority)
|
116
118
|
complete_success = false if !success
|
117
119
|
end
|
@@ -127,26 +129,77 @@ module WebTranslateIt
|
|
127
129
|
STDOUT.sync = true
|
128
130
|
if parameters == []
|
129
131
|
puts StringUtil.failure("Error: You must provide the path to the master file to remove.")
|
130
|
-
puts "Usage: wti path/to/
|
132
|
+
puts "Usage: wti rm path/to/master_file_1 path/to/master_file_2 ..."
|
131
133
|
exit
|
132
134
|
end
|
133
135
|
WebTranslateIt::Connection.new(configuration.api_key) do |http|
|
134
136
|
parameters.each do |param|
|
135
137
|
if Util.ask_yes_no("Are you sure you want to delete the master file #{param}?\nThis will also delete its target files and translations.", false)
|
136
|
-
configuration.files.find_all{ |file| file.file_path == param }
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
138
|
+
files = configuration.files.find_all{ |file| file.file_path == param }
|
139
|
+
if files.any?
|
140
|
+
files.each do |master_file|
|
141
|
+
master_file.delete(http)
|
142
|
+
# delete files
|
143
|
+
if File.exists?(master_file.file_path)
|
144
|
+
success = File.delete(master_file.file_path)
|
145
|
+
puts StringUtil.success("Deleted master file #{master_file.file_path}.") if success
|
146
|
+
end
|
143
147
|
complete_success = false if !success
|
148
|
+
configuration.files.find_all{ |file| file.master_id == master_file.id }.each do |target_file|
|
149
|
+
if File.exists?(target_file.file_path)
|
150
|
+
success = File.delete(target_file.file_path)
|
151
|
+
puts StringUtil.success("Deleted target file #{target_file.file_path}.") if success
|
152
|
+
else
|
153
|
+
puts StringUtil.failure("Target file #{target_file.file_path} doesn’t exist locally")
|
154
|
+
end
|
155
|
+
complete_success = false if !success
|
156
|
+
end
|
144
157
|
end
|
158
|
+
puts StringUtil.success("All done.") if complete_success
|
159
|
+
else
|
160
|
+
puts StringUtil.failure("#{param}: File doesn’t exist on project.")
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
complete_success
|
166
|
+
end
|
167
|
+
|
168
|
+
def mv
|
169
|
+
complete_success = true
|
170
|
+
STDOUT.sync = true
|
171
|
+
if parameters.count != 2
|
172
|
+
puts StringUtil.failure("Error: You must provide the source path and destination path of the master file to move.")
|
173
|
+
puts "Usage: wti mv path/to/master_file_old_path path/to/master_file_new_path ..."
|
174
|
+
exit
|
175
|
+
end
|
176
|
+
source = parameters[0]
|
177
|
+
destination = parameters[1]
|
178
|
+
WebTranslateIt::Connection.new(configuration.api_key) do |http|
|
179
|
+
if Util.ask_yes_no("Are you sure you want to move the master file #{source} and its target files?", true)
|
180
|
+
configuration.files.find_all{ |file| file.file_path == source }.each do |master_file|
|
181
|
+
master_file.upload(http, false, false, nil, false, false, true, true, destination)
|
182
|
+
# move master file
|
183
|
+
if File.exists?(source)
|
184
|
+
success = File.rename(source, destination) if File.exists?(source)
|
185
|
+
puts StringUtil.success("Moved master file #{master_file.file_path}.") if success
|
186
|
+
end
|
187
|
+
complete_success = false if !success
|
188
|
+
configuration.files.find_all{ |file| file.master_id == master_file.id }.each do |target_file|
|
189
|
+
if File.exists?(target_file.file_path)
|
190
|
+
success = File.delete(target_file.file_path)
|
191
|
+
complete_success = false if !success
|
192
|
+
end
|
193
|
+
end
|
194
|
+
configuration.reload
|
195
|
+
configuration.files.find_all{ |file| file.master_id == master_file.id }.each do |target_file|
|
196
|
+
success = target_file.fetch(http)
|
197
|
+
complete_success = false if !success
|
145
198
|
end
|
199
|
+
puts StringUtil.success("All done.") if complete_success
|
146
200
|
end
|
147
201
|
end
|
148
202
|
end
|
149
|
-
puts StringUtil.success("Master file deleted.")
|
150
203
|
complete_success
|
151
204
|
end
|
152
205
|
|
@@ -20,7 +20,7 @@ module WebTranslateIt
|
|
20
20
|
self.path = root_path
|
21
21
|
self.logger = logger
|
22
22
|
if File.exists?(File.expand_path(path_to_config_file, self.path))
|
23
|
-
self.api_key = configuration['api_key']
|
23
|
+
self.api_key = ENV["WTI_PROJECT_API_KEY"] || configuration['api_key']
|
24
24
|
self.before_pull = configuration['before_pull']
|
25
25
|
self.after_pull = configuration['after_pull']
|
26
26
|
self.before_push = configuration['before_push']
|
@@ -33,11 +33,23 @@ module WebTranslateIt
|
|
33
33
|
WebTranslateIt::Connection.turn_silent_on if configuration['silence_errors']
|
34
34
|
self.project_name = project_info['project']['name']
|
35
35
|
else
|
36
|
-
puts StringUtil.failure("\
|
36
|
+
puts StringUtil.failure("\nNo configuration file found in #{File.expand_path(path_to_config_file, self.path)}")
|
37
37
|
exit(1)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
+
# Reload project data
|
42
|
+
#
|
43
|
+
def reload
|
44
|
+
project_info = YAML.load WebTranslateIt::Project.fetch_info(self.api_key)
|
45
|
+
set_locales_to_ignore(configuration)
|
46
|
+
set_locales_needed(configuration)
|
47
|
+
set_files(project_info['project'])
|
48
|
+
set_locales(project_info['project'])
|
49
|
+
WebTranslateIt::Connection.turn_silent_on if configuration['silence_errors']
|
50
|
+
self.project_name = project_info['project']['name']
|
51
|
+
end
|
52
|
+
|
41
53
|
# Set the project locales from the Project API.
|
42
54
|
# Implementation example:
|
43
55
|
#
|
@@ -59,7 +71,7 @@ module WebTranslateIt
|
|
59
71
|
if project_file['name'].nil? or project_file['name'].strip == ''
|
60
72
|
puts "File #{project_file['id']} not set up"
|
61
73
|
else
|
62
|
-
self.files.push TranslationFile.new(project_file['id'], project_file['name'], project_file['locale_code'], self.api_key, project_file['updated_at'], project_file['hash_file'], project_file['master_project_file_id'])
|
74
|
+
self.files.push TranslationFile.new(project_file['id'], project_file['name'], project_file['locale_code'], self.api_key, project_file['updated_at'], project_file['hash_file'], project_file['master_project_file_id'], project_file['fresh'])
|
63
75
|
end
|
64
76
|
end
|
65
77
|
end
|
@@ -12,9 +12,9 @@ module WebTranslateIt
|
|
12
12
|
require 'time'
|
13
13
|
require 'fileutils'
|
14
14
|
|
15
|
-
attr_accessor :id, :file_path, :locale, :api_key, :updated_at, :remote_checksum, :master_id
|
15
|
+
attr_accessor :id, :file_path, :locale, :api_key, :updated_at, :remote_checksum, :master_id, :fresh
|
16
16
|
|
17
|
-
def initialize(id, file_path, locale, api_key, updated_at = nil, remote_checksum = "", master_id = nil)
|
17
|
+
def initialize(id, file_path, locale, api_key, updated_at = nil, remote_checksum = "", master_id = nil, fresh = nil)
|
18
18
|
self.id = id
|
19
19
|
self.file_path = file_path
|
20
20
|
self.locale = locale
|
@@ -22,6 +22,7 @@ module WebTranslateIt
|
|
22
22
|
self.updated_at = updated_at
|
23
23
|
self.remote_checksum = remote_checksum
|
24
24
|
self.master_id = master_id
|
25
|
+
self.fresh = fresh
|
25
26
|
end
|
26
27
|
|
27
28
|
# Fetch a language file.
|
@@ -40,7 +41,11 @@ module WebTranslateIt
|
|
40
41
|
success = true
|
41
42
|
tries ||= 3
|
42
43
|
display = []
|
43
|
-
|
44
|
+
if self.fresh
|
45
|
+
display.push(self.file_path)
|
46
|
+
else
|
47
|
+
display.push("*#{self.file_path}")
|
48
|
+
end
|
44
49
|
display.push "#{StringUtil.checksumify(self.local_checksum.to_s)}..#{StringUtil.checksumify(self.remote_checksum.to_s)}"
|
45
50
|
if !File.exist?(self.file_path) or force or self.remote_checksum != self.local_checksum
|
46
51
|
begin
|
@@ -82,7 +87,7 @@ module WebTranslateIt
|
|
82
87
|
#
|
83
88
|
# Note that the request might or might not eventually be acted upon, as it might be disallowed when processing
|
84
89
|
# actually takes place. This is due to the fact that language file imports are handled by background processing.
|
85
|
-
def upload(http_connection, merge=false, ignore_missing=false, label=nil, low_priority=false, minor_changes=false, force=false)
|
90
|
+
def upload(http_connection, merge=false, ignore_missing=false, label=nil, low_priority=false, minor_changes=false, force=false, rename_others=false, destination_path=nil)
|
86
91
|
success = true
|
87
92
|
tries ||= 3
|
88
93
|
display = []
|
@@ -92,7 +97,10 @@ module WebTranslateIt
|
|
92
97
|
if force or self.remote_checksum != self.local_checksum
|
93
98
|
File.open(self.file_path) do |file|
|
94
99
|
begin
|
95
|
-
|
100
|
+
params = {"file" => UploadIO.new(file, "text/plain", file.path), "merge" => merge, "ignore_missing" => ignore_missing, "label" => label, "low_priority" => low_priority, "minor_changes" => minor_changes }
|
101
|
+
params["name"] = destination_path unless destination_path.nil?
|
102
|
+
params["rename_others"] = rename_others
|
103
|
+
request = Net::HTTP::Put::Multipart.new(api_url, params)
|
96
104
|
WebTranslateIt::Util.add_fields(request)
|
97
105
|
display.push Util.handle_response(http_connection.request(request))
|
98
106
|
rescue Timeout::Error
|
@@ -113,7 +121,7 @@ module WebTranslateIt
|
|
113
121
|
end
|
114
122
|
puts ArrayUtil.to_columns(display)
|
115
123
|
else
|
116
|
-
puts StringUtil.failure("Can't push #{self.file_path}. File doesn't exist.")
|
124
|
+
puts StringUtil.failure("Can't push #{self.file_path}. File doesn't exist locally.")
|
117
125
|
end
|
118
126
|
return success
|
119
127
|
end
|
@@ -156,7 +164,7 @@ module WebTranslateIt
|
|
156
164
|
end
|
157
165
|
end
|
158
166
|
else
|
159
|
-
puts StringUtil.failure("\nFile #{self.file_path} doesn't exist!")
|
167
|
+
puts StringUtil.failure("\nFile #{self.file_path} doesn't exist locally!")
|
160
168
|
end
|
161
169
|
return success
|
162
170
|
end
|
@@ -169,27 +177,25 @@ module WebTranslateIt
|
|
169
177
|
display = []
|
170
178
|
display.push file_path
|
171
179
|
if File.exists?(self.file_path)
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
else
|
184
|
-
success = false
|
185
|
-
end
|
186
|
-
rescue
|
187
|
-
display.push StringUtil.failure("An error occured: #{$!}")
|
180
|
+
begin
|
181
|
+
request = Net::HTTP::Delete.new(api_url_for_delete)
|
182
|
+
WebTranslateIt::Util.add_fields(request)
|
183
|
+
display.push Util.handle_response(http_connection.request(request))
|
184
|
+
puts ArrayUtil.to_columns(display)
|
185
|
+
rescue Timeout::Error
|
186
|
+
puts StringUtil.failure("Request timeout. Will retry in 5 seconds.")
|
187
|
+
if (tries -= 1) > 0
|
188
|
+
sleep(5)
|
189
|
+
retry
|
190
|
+
else
|
188
191
|
success = false
|
189
192
|
end
|
193
|
+
rescue
|
194
|
+
display.push StringUtil.failure("An error occured: #{$!}")
|
195
|
+
success = false
|
190
196
|
end
|
191
197
|
else
|
192
|
-
puts StringUtil.failure("\
|
198
|
+
puts StringUtil.failure("\nMaster file #{self.file_path} doesn't exist locally!")
|
193
199
|
end
|
194
200
|
return success
|
195
201
|
end
|
@@ -1,6 +1,10 @@
|
|
1
1
|
class ArrayUtil
|
2
2
|
def self.to_columns(arr)
|
3
|
-
|
3
|
+
if arr[0][0] == "*"
|
4
|
+
"*#{StringUtil.backward_truncate(arr[0][1..-1])} | #{arr[1]} #{arr[2]}\n"
|
5
|
+
else
|
6
|
+
" #{StringUtil.backward_truncate(arr[0])} | #{arr[1]} #{arr[2]}\n"
|
7
|
+
end
|
4
8
|
end
|
5
9
|
|
6
10
|
def self.chunk(arr, pieces=2)
|
data/license
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2009-
|
3
|
+
Copyright (c) 2009-2019 WebTranslateIt Software S.L
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
6
|
this software and associated documentation files (the "Software"), to deal in
|
data/readme.md
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
wti lets you easily sync your language files with [WebTranslateIt.com](https://webtranslateit.com), a web-based tool to translation software.
|
9
9
|
|
10
|
-
<img src="
|
10
|
+
<img src="http://edouard.baconfile.com.s3.us-east-1.amazonaws.com/web_translate_it/wti4.png" alt="WebTranslateIt Synchronization Tool" width="500px">
|
11
11
|
|
12
12
|
### wti...
|
13
13
|
|
@@ -276,4 +276,4 @@ fr: 100% translated, 100% completed.
|
|
276
276
|
|
277
277
|
# License
|
278
278
|
|
279
|
-
Copyright (c) 2009-
|
279
|
+
Copyright (c) 2009-2021 WebTranslateIt Software S.L, released under the MIT License.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: web_translate_it
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edouard Briere
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-11-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multipart-post
|
@@ -124,7 +124,7 @@ homepage: https://webtranslateit.com
|
|
124
124
|
licenses:
|
125
125
|
- MIT
|
126
126
|
metadata: {}
|
127
|
-
post_install_message:
|
127
|
+
post_install_message:
|
128
128
|
rdoc_options:
|
129
129
|
- "--main"
|
130
130
|
- readme.md
|
@@ -141,9 +141,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
141
141
|
- !ruby/object:Gem::Version
|
142
142
|
version: '0'
|
143
143
|
requirements: []
|
144
|
-
|
145
|
-
|
146
|
-
signing_key:
|
144
|
+
rubygems_version: 3.0.6
|
145
|
+
signing_key:
|
147
146
|
specification_version: 4
|
148
147
|
summary: A CLI to sync locale files with WebTranslateIt.com.
|
149
148
|
test_files:
|