crowdin-cli 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +5 -5
- data/bin/crowdin-cli +29 -62
- data/lib/crowdin-cli/version.rb +1 -1
- metadata +4 -4
data/README.md
CHANGED
@@ -38,7 +38,7 @@ base_path: /path/to/your/project
|
|
38
38
|
files:
|
39
39
|
-
|
40
40
|
source: /locale/en/LC_MESSAGES/messages.po
|
41
|
-
translation: /locale/%
|
41
|
+
translation: /locale/%two_letters_code%/LC_MESSAGES/%original_file_name%
|
42
42
|
```
|
43
43
|
|
44
44
|
* `api_key` - Crowdin Project API key
|
@@ -51,8 +51,8 @@ files:
|
|
51
51
|
|
52
52
|
Use the following placeholders to put appropriate variables into the resulting file name:
|
53
53
|
* `%language%` - Language name (i.e. Ukrainian)
|
54
|
-
* `%
|
55
|
-
* `%
|
54
|
+
* `%two_letters_code%` - Language code ISO 639-1 (i.e. uk)
|
55
|
+
* `%three_letters_code%` - Language code ISO 639-2/T (i.e. ukr)
|
56
56
|
* `%locale%` - Locale (like uk-UA)
|
57
57
|
* `%locale_with_underscore%` - Locale (i.e. uk_UA)
|
58
58
|
* `%original_file_name%` - Original file name
|
@@ -67,7 +67,7 @@ files:
|
|
67
67
|
```
|
68
68
|
Example for Gettext projects:
|
69
69
|
```
|
70
|
-
/locale/%
|
70
|
+
/locale/%two_letters_code%/LC_MESSAGES/%original_file_name%
|
71
71
|
```
|
72
72
|
|
73
73
|
Also you can add and upload all directories mathing the pattern including all nested files and localizable files.
|
@@ -83,7 +83,7 @@ base_path: /path/to/your/project
|
|
83
83
|
files:
|
84
84
|
-
|
85
85
|
source: /locale/en/**/*.po
|
86
|
-
translation: /locale/%
|
86
|
+
translation: /locale/%two_letters_code%/**/%original_file_name%
|
87
87
|
```
|
88
88
|
## Usage
|
89
89
|
|
data/bin/crowdin-cli
CHANGED
@@ -40,6 +40,30 @@ def walk_local_tree(files, result = { dirs: [], files: [] })
|
|
40
40
|
return result
|
41
41
|
end
|
42
42
|
|
43
|
+
# +path_ - relative path to file in Crowdin project
|
44
|
+
# +export_pattern+ - basically, is a file['translation'] from crowdin.yaml
|
45
|
+
# +lang+ - Hash containing language information
|
46
|
+
#
|
47
|
+
def export_pattern_to_path(path, export_pattern, lang)
|
48
|
+
original_path = File.dirname(path)
|
49
|
+
original_file_name = File.basename(path)
|
50
|
+
file_extension = File.extname(path)[1..-1]
|
51
|
+
file_name = File.basename(path, file_extension)
|
52
|
+
|
53
|
+
export_pattern.gsub(/%.+?%/, {
|
54
|
+
'%language%' => lang['name'],
|
55
|
+
'%two_letters_code%' => lang['iso_639_1'],
|
56
|
+
'%tree_letters_code%' => lang['iso_639_3'],
|
57
|
+
'%locale%' => lang['locale'],
|
58
|
+
'%locale_with_underscore%' => lang['locale'].gsub('-', '_'),
|
59
|
+
'%android_code%' => android_locale_code(lang['locale']),
|
60
|
+
'%original_file_name%' => original_file_name,
|
61
|
+
'%original_path%' => original_path,
|
62
|
+
'%file_extension%' => file_extension,
|
63
|
+
'%file_name%' => file_extension,
|
64
|
+
})
|
65
|
+
end
|
66
|
+
|
43
67
|
def unzip_file(file, dest)
|
44
68
|
# overwrite files if they already exist inside of the extracted path
|
45
69
|
Zip.options[:on_exists_proc] = true
|
@@ -119,23 +143,7 @@ command :upload do |c|
|
|
119
143
|
else
|
120
144
|
Dir.glob("#{@base_path}#{file['source']}").each do |source|
|
121
145
|
dest = source.sub("#{@base_path}", '') # relative path in Crowdin
|
122
|
-
|
123
|
-
original_file_name = File.basename(dest)
|
124
|
-
file_extension = File.extname(dest)
|
125
|
-
file_name = File.basename(dest, file_extension)
|
126
|
-
|
127
|
-
file_pattern = file['translation'].gsub(/%.+?%/, {
|
128
|
-
'%language%' => source_language['name'],
|
129
|
-
'%two_letter_code%' => source_language['iso_639_1'],
|
130
|
-
'%tree_letter_code%' => source_language['iso_639_3'],
|
131
|
-
'%locale%' => source_language['locale'],
|
132
|
-
'%locale_with_underscore%' => source_language['locale'].gsub('-', '_'),
|
133
|
-
'%original_file_name%' => original_file_name,
|
134
|
-
'%android_code%' => android_locale_code(source_language['locale']),
|
135
|
-
'%original_path%' => original_path,
|
136
|
-
'%file_extension%' => file_extension,
|
137
|
-
'%file_name%' => file_extension,
|
138
|
-
})
|
146
|
+
file_pattern = export_pattern_to_path(dest, file['translation'], source_language)
|
139
147
|
|
140
148
|
diff = (dest.split('/') - file_pattern.split('/')).join('/')
|
141
149
|
export_pattern = file['translation'].sub('**', diff)
|
@@ -220,64 +228,23 @@ command :upload do |c|
|
|
220
228
|
@config['files'].each do |file|
|
221
229
|
if File.exists?("#{@base_path}#{file['source']}")
|
222
230
|
dest = file['source'].sub("#{@base_path}", '')
|
223
|
-
original_path = File.dirname(dest)
|
224
|
-
original_file_name = File.basename(dest)
|
225
|
-
file_extension = File.extname(dest)[1..-1]
|
226
|
-
file_name = File.basename(dest, file_extension)
|
227
231
|
|
228
232
|
translation_languages.each do |lang|
|
229
|
-
source = file['translation']
|
230
|
-
'%language%' => lang['name'],
|
231
|
-
'%two_letter_code%' => lang['iso_639_1'],
|
232
|
-
'%tree_letter_code%' => lang['iso_639_3'],
|
233
|
-
'%locale%' => lang['locale'],
|
234
|
-
'%locale_with_underscore%' => lang['locale'].gsub('-', '_'),
|
235
|
-
'%original_file_name%' => original_file_name,
|
236
|
-
'%android_code%' => android_locale_code(lang['locale']),
|
237
|
-
'%original_path%' => original_path,
|
238
|
-
'%file_extension%' => file_extension,
|
239
|
-
'%file_name%' => file_extension,
|
240
|
-
})
|
233
|
+
source = export_pattern_to_path(dest, file['translation'], lang)
|
241
234
|
|
242
235
|
translated_files[lang['crowdin_code']] << { source: "#{@base_path}#{source}", dest: dest }
|
243
236
|
end
|
244
237
|
else
|
245
238
|
Dir.glob("#{@base_path}#{file['source']}").each do |source|
|
246
239
|
dest = source.sub("#{@base_path}", '')
|
247
|
-
|
248
|
-
|
249
|
-
file_extension = File.extname(dest)
|
250
|
-
file_name = File.basename(dest, file_extension)
|
251
|
-
|
252
|
-
file_pattern = file['translation'].gsub(/%.+?%/, {
|
253
|
-
'%language%' => source_language['name'],
|
254
|
-
'%two_letter_code%' => source_language['iso_639_1'],
|
255
|
-
'%tree_letter_code%' => source_language['iso_639_3'],
|
256
|
-
'%locale%' => source_language['locale'],
|
257
|
-
'%locale_with_underscore%' => source_language['locale'].gsub('-', '_'),
|
258
|
-
'%original_file_name%' => original_file_name,
|
259
|
-
'%android_code%' => android_locale_code(source_language['locale']),
|
260
|
-
'%original_path%' => original_path,
|
261
|
-
'%file_extension%' => file_extension,
|
262
|
-
'%file_name%' => file_extension,
|
263
|
-
})
|
240
|
+
|
241
|
+
file_pattern = export_pattern_to_path(dest, file['translation'], source_language)
|
264
242
|
|
265
243
|
diff = (dest.split('/') - file_pattern.split('/')).join('/')
|
266
244
|
export_pattern = file['translation'].sub('**', diff)
|
267
245
|
|
268
246
|
translation_languages.each do |lang|
|
269
|
-
source =
|
270
|
-
'%language%' => lang['name'],
|
271
|
-
'%two_letter_code%' => lang['iso_639_1'],
|
272
|
-
'%tree_letter_code%' => lang['iso_639_3'],
|
273
|
-
'%locale%' => lang['locale'],
|
274
|
-
'%locale_with_underscore%' => lang['locale'].gsub('-', '_'),
|
275
|
-
'%original_file_name%' => original_file_name,
|
276
|
-
'%android_code%' => android_locale_code(lang['locale']),
|
277
|
-
'%original_path%' => original_path,
|
278
|
-
'%file_extension%' => file_extension,
|
279
|
-
'%file_name%' => file_extension,
|
280
|
-
})
|
247
|
+
source = export_pattern_to_path(dest, export_pattern, lang)
|
281
248
|
|
282
249
|
translated_files[lang['crowdin_code']] << { source: "#{@base_path}#{source}", dest: dest }
|
283
250
|
end
|
data/lib/crowdin-cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crowdin-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -96,7 +96,7 @@ dependencies:
|
|
96
96
|
requirement: !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|
99
|
-
- - '
|
99
|
+
- - ! '>='
|
100
100
|
- !ruby/object:Gem::Version
|
101
101
|
version: 0.0.8
|
102
102
|
type: :runtime
|
@@ -104,7 +104,7 @@ dependencies:
|
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
|
-
- - '
|
107
|
+
- - ! '>='
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: 0.0.8
|
110
110
|
description:
|