i18n-tasks 0.9.30 → 0.9.31

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c748cb31dcf9a41f13b85f43f0dcad3be53f39ddcff325d41c587c1b32b7812b
4
- data.tar.gz: bb8f185177f4c0bdd936c45e71827088d12f45a43718d4a3cf1b533ac937343f
3
+ metadata.gz: b6f870248df7b94a77747317666b12fa096bd04c6c9a5fc7ab8ef8eb850a207c
4
+ data.tar.gz: '092e4392eb447157a40aea73dc0214039dcd31efb09c80d0959750929765620c'
5
5
  SHA512:
6
- metadata.gz: 94d977df364cc0494ea55b19d45a3754503211433a983b4963f17b0617182752d15651b3c636808399d00fadfbbc4bff3aa2098ef398a50e814fdfd9d30488ff
7
- data.tar.gz: e000d084559176d27f3c1ea6938715e076f6b233d767f3c2ed328ecfe07d2c0deb11feefff4ec10cbc2aad51e807fa4ff883aedd694b41dfd3dbd8aabfc2fe2a
6
+ metadata.gz: 9756b702d3c268a0fd42f1f203e2c1786903433f0a7492540feeab117de3f6da018fb8d6b41c924414793b050718c71200f3fe801965178212bf13cfdd836960
7
+ data.tar.gz: 85328d93b330ea66c77acf856e5d6c549a42e8dc3064487d58b4506a3ff99bb41cc6099cb5e2b44014e863353280f5e012f1d45e1d2e07139c35c4172d200793
data/README.md CHANGED
@@ -22,7 +22,7 @@ i18n-tasks can be used with any project using the ruby [i18n gem][i18n-gem] (def
22
22
  Add i18n-tasks to the Gemfile:
23
23
 
24
24
  ```ruby
25
- gem 'i18n-tasks', '~> 0.9.30'
25
+ gem 'i18n-tasks', '~> 0.9.31'
26
26
  ```
27
27
 
28
28
  Copy the default [configuration file](#configuration):
@@ -104,6 +104,17 @@ $ i18n-tasks translate-missing --backend=deepl
104
104
  $ i18n-tasks translate-missing --backend=deepl --from=en fr nl
105
105
  ```
106
106
 
107
+ ### Yandex Translate missing keys
108
+
109
+ Translate missing values with Yandex Translate ([more below on the API key](#yandex-translation-config)).
110
+
111
+ ```console
112
+ $ i18n-tasks translate-missing --backend=yandex
113
+
114
+ # accepts from and locales options:
115
+ $ i18n-tasks translate-missing --from=en es fr
116
+ ```
117
+
107
118
  ### Find usages
108
119
 
109
120
  See where the keys are used with `i18n-tasks find`:
@@ -397,6 +408,17 @@ translation:
397
408
  deepl_api_key: <Deep Pro API key>
398
409
  ```
399
410
 
411
+ <a name="yandex-translation-config"></a>
412
+ ### Yandex Translate
413
+
414
+ `i18n-tasks translate-missing` requires a Yandex API key, get it at [Yandex](https://tech.yandex.com/translate).
415
+
416
+ ```yaml
417
+ # config/i18n-tasks.yml
418
+ translation:
419
+ yandex_api_key: <Yandex API key>
420
+ ```
421
+
400
422
  ## Interactive console
401
423
 
402
424
  `i18n-tasks irb` starts an IRB session in i18n-tasks context. Type `guide` for more information.
@@ -120,3 +120,9 @@ en:
120
120
  none: Every translation is in use.
121
121
  usages:
122
122
  none: No key usages found.
123
+ yandex_translate:
124
+ errors:
125
+ no_api_key: >-
126
+ Set Yandex API key via YANDEX_API_KEY environment variable or translation.yandex_api_key
127
+ in config/i18n-tasks.yml. Get the key at https://tech.yandex.com/translate.
128
+ no_results: Yandex returned no results.
@@ -122,3 +122,9 @@ ru:
122
122
  none: Все переводы используются.
123
123
  usages:
124
124
  none: Не найдено использований.
125
+ yandex_translate:
126
+ errors:
127
+ no_api_key: |-
128
+ Установить ключ API Яндекса с помощью переменной среды YANDEX_API_KEY или translation.yandex_api_key
129
+ в config / i18n-tasks.yml. Получите ключ по адресу https://tech.yandex.com/translate/.
130
+ no_results: Яндекс не дал результатов.
@@ -44,11 +44,14 @@ TEXT
44
44
  s.add_dependency 'terminal-table', '>= 1.5.1'
45
45
  s.add_development_dependency 'axlsx', '~> 2.0'
46
46
  s.add_development_dependency 'bundler', '~> 2.0', '>= 2.0.1'
47
- s.add_development_dependency 'deepl-rb', '>= 2.1.0'
48
- s.add_development_dependency 'easy_translate', '>= 0.5.1'
49
47
  s.add_development_dependency 'rake'
50
48
  s.add_development_dependency 'rspec', '~> 3.3'
51
49
  s.add_development_dependency 'rubocop', '~> 0.53.0'
52
50
  s.add_development_dependency 'simplecov'
53
51
  s.add_development_dependency 'yard'
52
+
53
+ # Translation backends
54
+ s.add_development_dependency 'deepl-rb', '>= 2.1.0'
55
+ s.add_development_dependency 'easy_translate', '>= 0.5.1' # Google Translate
56
+ s.add_development_dependency 'yandex-translator', '>= 0.3.3'
54
57
  end
@@ -59,6 +59,7 @@ module I18n::Tasks::Configuration # rubocop:disable Metrics/ModuleLength
59
59
  conf = (config[:translation] || {}).with_indifferent_access
60
60
  conf[:google_translate_api_key] = ENV['GOOGLE_TRANSLATE_API_KEY'] if ENV.key?('GOOGLE_TRANSLATE_API_KEY')
61
61
  conf[:deepl_api_key] = ENV['DEEPL_AUTH_KEY'] if ENV.key?('DEEPL_AUTH_KEY')
62
+ conf[:yandex_api_key] = ENV['YANDEX_API_KEY'] if ENV.key?('YANDEX_API_KEY')
62
63
  conf
63
64
  end
64
65
  end
@@ -9,7 +9,7 @@ module I18n::Tasks
9
9
  # @return [Hash] locale tree
10
10
  def parse(str, options)
11
11
  if YAML.method(:load).arity.abs == 2
12
- YAML.load(str, options || {})
12
+ YAML.load(str, **(options || {}))
13
13
  else
14
14
  # older jruby and rbx 2.2.7 do not accept options
15
15
  YAML.load(str)
@@ -2,12 +2,13 @@
2
2
 
3
3
  require 'i18n/tasks/translators/deepl_translator.rb'
4
4
  require 'i18n/tasks/translators/google_translator.rb'
5
+ require 'i18n/tasks/translators/yandex_translator.rb'
5
6
 
6
7
  module I18n::Tasks
7
8
  module Translation
8
9
  # @param [I18n::Tasks::Tree::Siblings] forest to translate to the locales of its root nodes
9
10
  # @param [String] from locale
10
- # @param [:deepl, :google] backend
11
+ # @param [:deepl, :google, :yandex] backend
11
12
  # @return [I18n::Tasks::Tree::Siblings] translated forest
12
13
  def translate_forest(forest, from:, backend: :google)
13
14
  case backend
@@ -15,6 +16,8 @@ module I18n::Tasks
15
16
  Translators::DeeplTranslator.new(self).translate_forest(forest, from)
16
17
  when :google
17
18
  Translators::GoogleTranslator.new(self).translate_forest(forest, from)
19
+ when :yandex
20
+ Translators::YandexTranslator.new(self).translate_forest(forest, from)
18
21
  else
19
22
  fail CommandError, "invalid backend: #{backend}"
20
23
  end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'i18n/tasks/translators/base_translator'
4
+
5
+ module I18n::Tasks::Translators
6
+ class YandexTranslator < BaseTranslator
7
+ def initialize(*)
8
+ begin
9
+ require 'yandex-translator'
10
+ rescue LoadError
11
+ raise ::I18n::Tasks::CommandError, "Add gem 'yandex-translator' to your Gemfile to use this command"
12
+ end
13
+ super
14
+ end
15
+
16
+ protected
17
+
18
+ def translate_values(list, **options)
19
+ list.map { |item| translator.translate(item, options) }
20
+ end
21
+
22
+ def options_for_translate_values(from:, to:, **options)
23
+ options.merge(
24
+ from: to_yandex_compatible_locale(from),
25
+ to: to_yandex_compatible_locale(to)
26
+ )
27
+ end
28
+
29
+ def options_for_html
30
+ { format: 'html' }
31
+ end
32
+
33
+ def options_for_plain
34
+ { format: 'plain' }
35
+ end
36
+
37
+ def no_results_error_message
38
+ I18n.t('i18n_tasks.yandex_translate.errors.no_results')
39
+ end
40
+
41
+ private
42
+
43
+ # Convert 'es-ES' to 'es'
44
+ def to_yandex_compatible_locale(locale)
45
+ return locale unless locale.include?('-')
46
+ locale.split('-', 2).first
47
+ end
48
+
49
+ def translator
50
+ @translator ||= Yandex::Translator.new(api_key)
51
+ end
52
+
53
+ def api_key
54
+ @api_key ||= begin
55
+ key = @i18n_tasks.translation_config[:yandex_api_key]
56
+ fail ::I18n::Tasks::CommandError, I18n.t('i18n_tasks.yandex_translate.errors.no_api_key') if key.blank?
57
+ key
58
+ end
59
+ end
60
+ end
61
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module I18n
4
4
  module Tasks
5
- VERSION = '0.9.30'
5
+ VERSION = '0.9.31'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: i18n-tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.30
4
+ version: 0.9.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - glebm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-13 00:00:00.000000000 Z
11
+ date: 2020-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -177,35 +177,49 @@ dependencies:
177
177
  - !ruby/object:Gem::Version
178
178
  version: 2.0.1
179
179
  - !ruby/object:Gem::Dependency
180
- name: deepl-rb
180
+ name: rake
181
181
  requirement: !ruby/object:Gem::Requirement
182
182
  requirements:
183
183
  - - ">="
184
184
  - !ruby/object:Gem::Version
185
- version: 2.1.0
185
+ version: '0'
186
186
  type: :development
187
187
  prerelease: false
188
188
  version_requirements: !ruby/object:Gem::Requirement
189
189
  requirements:
190
190
  - - ">="
191
191
  - !ruby/object:Gem::Version
192
- version: 2.1.0
192
+ version: '0'
193
193
  - !ruby/object:Gem::Dependency
194
- name: easy_translate
194
+ name: rspec
195
195
  requirement: !ruby/object:Gem::Requirement
196
196
  requirements:
197
- - - ">="
197
+ - - "~>"
198
198
  - !ruby/object:Gem::Version
199
- version: 0.5.1
199
+ version: '3.3'
200
200
  type: :development
201
201
  prerelease: false
202
202
  version_requirements: !ruby/object:Gem::Requirement
203
203
  requirements:
204
- - - ">="
204
+ - - "~>"
205
205
  - !ruby/object:Gem::Version
206
- version: 0.5.1
206
+ version: '3.3'
207
207
  - !ruby/object:Gem::Dependency
208
- name: rake
208
+ name: rubocop
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: 0.53.0
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - "~>"
219
+ - !ruby/object:Gem::Version
220
+ version: 0.53.0
221
+ - !ruby/object:Gem::Dependency
222
+ name: simplecov
209
223
  requirement: !ruby/object:Gem::Requirement
210
224
  requirements:
211
225
  - - ">="
@@ -219,61 +233,61 @@ dependencies:
219
233
  - !ruby/object:Gem::Version
220
234
  version: '0'
221
235
  - !ruby/object:Gem::Dependency
222
- name: rspec
236
+ name: yard
223
237
  requirement: !ruby/object:Gem::Requirement
224
238
  requirements:
225
- - - "~>"
239
+ - - ">="
226
240
  - !ruby/object:Gem::Version
227
- version: '3.3'
241
+ version: '0'
228
242
  type: :development
229
243
  prerelease: false
230
244
  version_requirements: !ruby/object:Gem::Requirement
231
245
  requirements:
232
- - - "~>"
246
+ - - ">="
233
247
  - !ruby/object:Gem::Version
234
- version: '3.3'
248
+ version: '0'
235
249
  - !ruby/object:Gem::Dependency
236
- name: rubocop
250
+ name: deepl-rb
237
251
  requirement: !ruby/object:Gem::Requirement
238
252
  requirements:
239
- - - "~>"
253
+ - - ">="
240
254
  - !ruby/object:Gem::Version
241
- version: 0.53.0
255
+ version: 2.1.0
242
256
  type: :development
243
257
  prerelease: false
244
258
  version_requirements: !ruby/object:Gem::Requirement
245
259
  requirements:
246
- - - "~>"
260
+ - - ">="
247
261
  - !ruby/object:Gem::Version
248
- version: 0.53.0
262
+ version: 2.1.0
249
263
  - !ruby/object:Gem::Dependency
250
- name: simplecov
264
+ name: easy_translate
251
265
  requirement: !ruby/object:Gem::Requirement
252
266
  requirements:
253
267
  - - ">="
254
268
  - !ruby/object:Gem::Version
255
- version: '0'
269
+ version: 0.5.1
256
270
  type: :development
257
271
  prerelease: false
258
272
  version_requirements: !ruby/object:Gem::Requirement
259
273
  requirements:
260
274
  - - ">="
261
275
  - !ruby/object:Gem::Version
262
- version: '0'
276
+ version: 0.5.1
263
277
  - !ruby/object:Gem::Dependency
264
- name: yard
278
+ name: yandex-translator
265
279
  requirement: !ruby/object:Gem::Requirement
266
280
  requirements:
267
281
  - - ">="
268
282
  - !ruby/object:Gem::Version
269
- version: '0'
283
+ version: 0.3.3
270
284
  type: :development
271
285
  prerelease: false
272
286
  version_requirements: !ruby/object:Gem::Requirement
273
287
  requirements:
274
288
  - - ">="
275
289
  - !ruby/object:Gem::Version
276
- version: '0'
290
+ version: 0.3.3
277
291
  description: |
278
292
  i18n-tasks helps you find and manage missing and unused translations.
279
293
 
@@ -368,6 +382,7 @@ files:
368
382
  - lib/i18n/tasks/translators/base_translator.rb
369
383
  - lib/i18n/tasks/translators/deepl_translator.rb
370
384
  - lib/i18n/tasks/translators/google_translator.rb
385
+ - lib/i18n/tasks/translators/yandex_translator.rb
371
386
  - lib/i18n/tasks/unused_keys.rb
372
387
  - lib/i18n/tasks/used_keys.rb
373
388
  - lib/i18n/tasks/version.rb
@@ -398,7 +413,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
398
413
  - !ruby/object:Gem::Version
399
414
  version: '0'
400
415
  requirements: []
401
- rubygems_version: 3.1.2
416
+ rubygems_version: 3.0.3
402
417
  signing_key:
403
418
  specification_version: 4
404
419
  summary: Manage localization and translation with the awesome power of static analysis