i18n-youdao-tasks 0.9.37

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +448 -0
  4. data/Rakefile +13 -0
  5. data/bin/i18n-tasks +15 -0
  6. data/bin/i18n-tasks.cmd +2 -0
  7. data/config/locales/en.yml +129 -0
  8. data/config/locales/ru.yml +131 -0
  9. data/i18n-tasks.gemspec +58 -0
  10. data/lib/i18n/tasks/base_task.rb +52 -0
  11. data/lib/i18n/tasks/cli.rb +214 -0
  12. data/lib/i18n/tasks/command/collection.rb +21 -0
  13. data/lib/i18n/tasks/command/commander.rb +38 -0
  14. data/lib/i18n/tasks/command/commands/data.rb +107 -0
  15. data/lib/i18n/tasks/command/commands/eq_base.rb +22 -0
  16. data/lib/i18n/tasks/command/commands/health.rb +30 -0
  17. data/lib/i18n/tasks/command/commands/interpolations.rb +22 -0
  18. data/lib/i18n/tasks/command/commands/meta.rb +37 -0
  19. data/lib/i18n/tasks/command/commands/missing.rb +73 -0
  20. data/lib/i18n/tasks/command/commands/tree.rb +102 -0
  21. data/lib/i18n/tasks/command/commands/usages.rb +81 -0
  22. data/lib/i18n/tasks/command/dsl.rb +56 -0
  23. data/lib/i18n/tasks/command/option_parsers/enum.rb +57 -0
  24. data/lib/i18n/tasks/command/option_parsers/locale.rb +60 -0
  25. data/lib/i18n/tasks/command/options/common.rb +47 -0
  26. data/lib/i18n/tasks/command/options/data.rb +97 -0
  27. data/lib/i18n/tasks/command/options/locales.rb +44 -0
  28. data/lib/i18n/tasks/command_error.rb +15 -0
  29. data/lib/i18n/tasks/commands.rb +29 -0
  30. data/lib/i18n/tasks/concurrent/cache.rb +22 -0
  31. data/lib/i18n/tasks/concurrent/cached_value.rb +61 -0
  32. data/lib/i18n/tasks/configuration.rb +136 -0
  33. data/lib/i18n/tasks/console_context.rb +76 -0
  34. data/lib/i18n/tasks/data/adapter/json_adapter.rb +29 -0
  35. data/lib/i18n/tasks/data/adapter/yaml_adapter.rb +27 -0
  36. data/lib/i18n/tasks/data/file_formats.rb +99 -0
  37. data/lib/i18n/tasks/data/file_system.rb +14 -0
  38. data/lib/i18n/tasks/data/file_system_base.rb +200 -0
  39. data/lib/i18n/tasks/data/router/conservative_router.rb +62 -0
  40. data/lib/i18n/tasks/data/router/pattern_router.rb +62 -0
  41. data/lib/i18n/tasks/data/tree/node.rb +206 -0
  42. data/lib/i18n/tasks/data/tree/nodes.rb +97 -0
  43. data/lib/i18n/tasks/data/tree/siblings.rb +333 -0
  44. data/lib/i18n/tasks/data/tree/traversal.rb +197 -0
  45. data/lib/i18n/tasks/data.rb +87 -0
  46. data/lib/i18n/tasks/html_keys.rb +14 -0
  47. data/lib/i18n/tasks/ignore_keys.rb +31 -0
  48. data/lib/i18n/tasks/interpolations.rb +30 -0
  49. data/lib/i18n/tasks/key_pattern_matching.rb +38 -0
  50. data/lib/i18n/tasks/locale_list.rb +19 -0
  51. data/lib/i18n/tasks/locale_pathname.rb +17 -0
  52. data/lib/i18n/tasks/logging.rb +35 -0
  53. data/lib/i18n/tasks/missing_keys.rb +185 -0
  54. data/lib/i18n/tasks/plural_keys.rb +67 -0
  55. data/lib/i18n/tasks/references.rb +103 -0
  56. data/lib/i18n/tasks/reports/base.rb +75 -0
  57. data/lib/i18n/tasks/reports/terminal.rb +243 -0
  58. data/lib/i18n/tasks/scanners/erb_ast_processor.rb +51 -0
  59. data/lib/i18n/tasks/scanners/erb_ast_scanner.rb +48 -0
  60. data/lib/i18n/tasks/scanners/file_scanner.rb +66 -0
  61. data/lib/i18n/tasks/scanners/files/caching_file_finder.rb +35 -0
  62. data/lib/i18n/tasks/scanners/files/caching_file_finder_provider.rb +31 -0
  63. data/lib/i18n/tasks/scanners/files/caching_file_reader.rb +28 -0
  64. data/lib/i18n/tasks/scanners/files/file_finder.rb +61 -0
  65. data/lib/i18n/tasks/scanners/files/file_reader.rb +19 -0
  66. data/lib/i18n/tasks/scanners/local_ruby_parser.rb +74 -0
  67. data/lib/i18n/tasks/scanners/occurrence_from_position.rb +29 -0
  68. data/lib/i18n/tasks/scanners/pattern_mapper.rb +60 -0
  69. data/lib/i18n/tasks/scanners/pattern_scanner.rb +108 -0
  70. data/lib/i18n/tasks/scanners/pattern_with_scope_scanner.rb +100 -0
  71. data/lib/i18n/tasks/scanners/relative_keys.rb +70 -0
  72. data/lib/i18n/tasks/scanners/results/key_occurrences.rb +54 -0
  73. data/lib/i18n/tasks/scanners/results/occurrence.rb +69 -0
  74. data/lib/i18n/tasks/scanners/ruby_ast_call_finder.rb +63 -0
  75. data/lib/i18n/tasks/scanners/ruby_ast_scanner.rb +234 -0
  76. data/lib/i18n/tasks/scanners/ruby_key_literals.rb +30 -0
  77. data/lib/i18n/tasks/scanners/scanner.rb +17 -0
  78. data/lib/i18n/tasks/scanners/scanner_multiplexer.rb +43 -0
  79. data/lib/i18n/tasks/split_key.rb +72 -0
  80. data/lib/i18n/tasks/stats.rb +24 -0
  81. data/lib/i18n/tasks/string_interpolation.rb +17 -0
  82. data/lib/i18n/tasks/translation.rb +29 -0
  83. data/lib/i18n/tasks/translators/base_translator.rb +156 -0
  84. data/lib/i18n/tasks/translators/deepl_translator.rb +81 -0
  85. data/lib/i18n/tasks/translators/google_translator.rb +69 -0
  86. data/lib/i18n/tasks/translators/yandex_translator.rb +63 -0
  87. data/lib/i18n/tasks/translators/youdao_translator.rb +69 -0
  88. data/lib/i18n/tasks/unused_keys.rb +25 -0
  89. data/lib/i18n/tasks/used_keys.rb +184 -0
  90. data/lib/i18n/tasks/version.rb +7 -0
  91. data/lib/i18n/tasks.rb +69 -0
  92. data/templates/config/i18n-tasks.yml +142 -0
  93. data/templates/minitest/i18n_test.rb +36 -0
  94. data/templates/rspec/i18n_spec.rb +34 -0
  95. metadata +441 -0
@@ -0,0 +1,142 @@
1
+ # i18n-tasks finds and manages missing and unused translations: https://github.com/glebm/i18n-tasks
2
+
3
+ # The "main" locale.
4
+ base_locale: en
5
+ ## All available locales are inferred from the data by default. Alternatively, specify them explicitly:
6
+ # locales: [es, fr]
7
+ ## Reporting locale, default: en. Available: en, ru.
8
+ # internal_locale: en
9
+
10
+ # Read and write translations.
11
+ data:
12
+ ## Translations are read from the file system. Supported format: YAML, JSON.
13
+ ## Provide a custom adapter:
14
+ # adapter: I18n::Tasks::Data::FileSystem
15
+
16
+ # Locale files or `File.find` patterns where translations are read from:
17
+ read:
18
+ ## Default:
19
+ # - config/locales/%{locale}.yml
20
+ ## More files:
21
+ # - config/locales/**/*.%{locale}.yml
22
+
23
+ # Locale files to write new keys to, based on a list of key pattern => file rules. Matched from top to bottom:
24
+ # `i18n-tasks normalize -p` will force move the keys according to these rules
25
+ write:
26
+ ## For example, write devise and simple form keys to their respective files:
27
+ # - ['{devise, simple_form}.*', 'config/locales/\1.%{locale}.yml']
28
+ ## Catch-all default:
29
+ # - config/locales/%{locale}.yml
30
+
31
+ # External locale data (e.g. gems).
32
+ # This data is not considered unused and is never written to.
33
+ external:
34
+ ## Example (replace %#= with %=):
35
+ # - "<%#= %x[bundle info vagrant --path].chomp %>/templates/locales/%{locale}.yml"
36
+
37
+ ## Specify the router (see Readme for details). Valid values: conservative_router, pattern_router, or a custom class.
38
+ # router: conservative_router
39
+
40
+ yaml:
41
+ write:
42
+ # do not wrap lines at 80 characters
43
+ line_width: -1
44
+
45
+ ## Pretty-print JSON:
46
+ # json:
47
+ # write:
48
+ # indent: ' '
49
+ # space: ' '
50
+ # object_nl: "\n"
51
+ # array_nl: "\n"
52
+
53
+ # Find translate calls
54
+ search:
55
+ ## Paths or `File.find` patterns to search in:
56
+ # paths:
57
+ # - app/
58
+
59
+ ## Root directories for relative keys resolution.
60
+ # relative_roots:
61
+ # - app/controllers
62
+ # - app/helpers
63
+ # - app/mailers
64
+ # - app/presenters
65
+ # - app/views
66
+
67
+ ## Directories where method names which should not be part of a relative key resolution.
68
+ # By default, if a relative translation is used inside a method, the name of the method will be considered part of the resolved key.
69
+ # Directories listed here will not consider the name of the method part of the resolved key
70
+ #
71
+ # relative_exclude_method_name_paths:
72
+ # -
73
+
74
+ ## Files or `File.fnmatch` patterns to exclude from search. Some files are always excluded regardless of this setting:
75
+ ## %w(*.jpg *.png *.gif *.svg *.ico *.eot *.otf *.ttf *.woff *.woff2 *.pdf *.css *.sass *.scss *.less *.yml *.json *.map)
76
+ exclude:
77
+ - app/assets/images
78
+ - app/assets/fonts
79
+ - app/assets/videos
80
+
81
+ ## Alternatively, the only files or `File.fnmatch patterns` to search in `paths`:
82
+ ## If specified, this settings takes priority over `exclude`, but `exclude` still applies.
83
+ # only: ["*.rb", "*.html.slim"]
84
+
85
+ ## If `strict` is `false`, guess usages such as t("categories.#{category}.title"). The default is `true`.
86
+ # strict: true
87
+
88
+ ## Multiple scanners can be used. Their results are merged.
89
+ ## The options specified above are passed down to each scanner. Per-scanner options can be specified as well.
90
+ ## See this example of a custom scanner: https://github.com/glebm/i18n-tasks/wiki/A-custom-scanner-example
91
+
92
+ ## Translation Services
93
+ # translation:
94
+ # # Google Translate
95
+ # # Get an API key and set billing info at https://code.google.com/apis/console to use Google Translate
96
+ # google_translate_api_key: "AbC-dEf5"
97
+ # # DeepL Pro Translate
98
+ # # Get an API key and subscription at https://www.deepl.com/pro to use DeepL Pro
99
+ # deepl_api_key: "48E92789-57A3-466A-9959-1A1A1A1A1A1A"
100
+ # # deepl_host: "https://api.deepl.com"
101
+ # # deepl_version: "v2"
102
+
103
+ ## Do not consider these keys missing:
104
+ # ignore_missing:
105
+ # - 'errors.messages.{accepted,blank,invalid,too_short,too_long}'
106
+ # - '{devise,simple_form}.*'
107
+
108
+ ## Consider these keys used:
109
+ # ignore_unused:
110
+ # - 'activerecord.attributes.*'
111
+ # - '{devise,kaminari,will_paginate}.*'
112
+ # - 'simple_form.{yes,no}'
113
+ # - 'simple_form.{placeholders,hints,labels}.*'
114
+ # - 'simple_form.{error_notification,required}.:'
115
+
116
+ ## Exclude these keys from the `i18n-tasks eq-base' report:
117
+ # ignore_eq_base:
118
+ # all:
119
+ # - common.ok
120
+ # fr,es:
121
+ # - common.brand
122
+
123
+ ## Exclude these keys from the `i18n-tasks check-consistent-interpolations` report:
124
+ # ignore_inconsistent_interpolations:
125
+ # - 'activerecord.attributes.*'
126
+
127
+ ## Ignore these keys completely:
128
+ # ignore:
129
+ # - kaminari.*
130
+
131
+ ## Sometimes, it isn't possible for i18n-tasks to match the key correctly,
132
+ ## e.g. in case of a relative key defined in a helper method.
133
+ ## In these cases you can use the built-in PatternMapper to map patterns to keys, e.g.:
134
+ #
135
+ # <%# I18n::Tasks.add_scanner 'I18n::Tasks::Scanners::PatternMapper',
136
+ # only: %w(*.html.haml *.html.slim),
137
+ # patterns: [['= title\b', '.page_title']] %>
138
+ #
139
+ # The PatternMapper can also match key literals via a special %{key} interpolation, e.g.:
140
+ #
141
+ # <%# I18n::Tasks.add_scanner 'I18n::Tasks::Scanners::PatternMapper',
142
+ # patterns: [['\bSpree\.t[( ]\s*%{key}', 'spree.%{key}']] %>
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'i18n/tasks'
4
+
5
+ class I18nTest < ActiveSupport::TestCase
6
+ def setup
7
+ @i18n = I18n::Tasks::BaseTask.new
8
+ @missing_keys = @i18n.missing_keys
9
+ @unused_keys = @i18n.unused_keys
10
+ end
11
+
12
+ def test_no_missing_keys
13
+ assert_empty @missing_keys,
14
+ "Missing #{@missing_keys.leaves.count} i18n keys, run `i18n-tasks missing' to show them"
15
+ end
16
+
17
+ def test_no_unused_keys
18
+ assert_empty @unused_keys,
19
+ "#{@unused_keys.leaves.count} unused i18n keys, run `i18n-tasks unused' to show them"
20
+ end
21
+
22
+ def test_files_are_normalized
23
+ non_normalized = @i18n.non_normalized_paths
24
+ error_message = "The following files need to be normalized:\n" \
25
+ "#{non_normalized.map { |path| " #{path}" }.join("\n")}\n" \
26
+ "Please run `i18n-tasks normalize' to fix"
27
+ assert_empty non_normalized, error_message
28
+ end
29
+
30
+ def test_no_inconsistent_interpolations
31
+ inconsistent_interpolations = @i18n.inconsistent_interpolations
32
+ error_message = "#{inconsistent_interpolations.leaves.count} i18n keys have inconsistent interpolations.\n" \
33
+ "Please run `i18n-tasks check-consistent-interpolations' to show them"
34
+ assert_empty inconsistent_interpolations, error_message
35
+ end
36
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'i18n/tasks'
4
+
5
+ RSpec.describe I18n do
6
+ let(:i18n) { I18n::Tasks::BaseTask.new }
7
+ let(:missing_keys) { i18n.missing_keys }
8
+ let(:unused_keys) { i18n.unused_keys }
9
+ let(:inconsistent_interpolations) { i18n.inconsistent_interpolations }
10
+
11
+ it 'does not have missing keys' do
12
+ expect(missing_keys).to be_empty,
13
+ "Missing #{missing_keys.leaves.count} i18n keys, run `i18n-tasks missing' to show them"
14
+ end
15
+
16
+ it 'does not have unused keys' do
17
+ expect(unused_keys).to be_empty,
18
+ "#{unused_keys.leaves.count} unused i18n keys, run `i18n-tasks unused' to show them"
19
+ end
20
+
21
+ it 'files are normalized' do
22
+ non_normalized = i18n.non_normalized_paths
23
+ error_message = "The following files need to be normalized:\n" \
24
+ "#{non_normalized.map { |path| " #{path}" }.join("\n")}\n" \
25
+ "Please run `i18n-tasks normalize' to fix"
26
+ expect(non_normalized).to be_empty, error_message
27
+ end
28
+
29
+ it 'does not have inconsistent interpolations' do
30
+ error_message = "#{inconsistent_interpolations.leaves.count} i18n keys have inconsistent interpolations.\n" \
31
+ "Run `i18n-tasks check-consistent-interpolations' to show them"
32
+ expect(inconsistent_interpolations).to be_empty, error_message
33
+ end
34
+ end
metadata ADDED
@@ -0,0 +1,441 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: i18n-youdao-tasks
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.37
5
+ platform: ruby
6
+ authors:
7
+ - glebm
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-03-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 4.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 4.0.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: ast
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.1.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 2.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: better_html
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: erubi
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: highline
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 2.0.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 2.0.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: i18n
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: parser
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 2.2.3.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 2.2.3.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: rails-i18n
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rainbow
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: 2.2.2
132
+ - - "<"
133
+ - !ruby/object:Gem::Version
134
+ version: '4.0'
135
+ type: :runtime
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: 2.2.2
142
+ - - "<"
143
+ - !ruby/object:Gem::Version
144
+ version: '4.0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: terminal-table
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: 1.5.1
152
+ type: :runtime
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: 1.5.1
159
+ - !ruby/object:Gem::Dependency
160
+ name: axlsx
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '2.0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '2.0'
173
+ - !ruby/object:Gem::Dependency
174
+ name: bundler
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '2.0'
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: 2.0.1
183
+ type: :development
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
189
+ version: '2.0'
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: 2.0.1
193
+ - !ruby/object:Gem::Dependency
194
+ name: rake
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ - !ruby/object:Gem::Dependency
208
+ name: rspec
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: '3.3'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - "~>"
219
+ - !ruby/object:Gem::Version
220
+ version: '3.3'
221
+ - !ruby/object:Gem::Dependency
222
+ name: rubocop
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: 1.6.1
228
+ type: :development
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - "~>"
233
+ - !ruby/object:Gem::Version
234
+ version: 1.6.1
235
+ - !ruby/object:Gem::Dependency
236
+ name: simplecov
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - ">="
240
+ - !ruby/object:Gem::Version
241
+ version: '0'
242
+ type: :development
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - ">="
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ - !ruby/object:Gem::Dependency
250
+ name: yard
251
+ requirement: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ version: '0'
256
+ type: :development
257
+ prerelease: false
258
+ version_requirements: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ - !ruby/object:Gem::Dependency
264
+ name: deepl-rb
265
+ requirement: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: 2.1.0
270
+ type: :development
271
+ prerelease: false
272
+ version_requirements: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - ">="
275
+ - !ruby/object:Gem::Version
276
+ version: 2.1.0
277
+ - !ruby/object:Gem::Dependency
278
+ name: easy_translate
279
+ requirement: !ruby/object:Gem::Requirement
280
+ requirements:
281
+ - - ">="
282
+ - !ruby/object:Gem::Version
283
+ version: 0.5.1
284
+ type: :development
285
+ prerelease: false
286
+ version_requirements: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - ">="
289
+ - !ruby/object:Gem::Version
290
+ version: 0.5.1
291
+ - !ruby/object:Gem::Dependency
292
+ name: yandex-translator
293
+ requirement: !ruby/object:Gem::Requirement
294
+ requirements:
295
+ - - ">="
296
+ - !ruby/object:Gem::Version
297
+ version: 0.3.3
298
+ type: :development
299
+ prerelease: false
300
+ version_requirements: !ruby/object:Gem::Requirement
301
+ requirements:
302
+ - - ">="
303
+ - !ruby/object:Gem::Version
304
+ version: 0.3.3
305
+ description: |
306
+ i18n-tasks helps you find and manage missing and unused translations.
307
+
308
+ It analyses code statically for key usages, such as `I18n.t('some.key')`, in order to report keys that are missing or unused,
309
+ pre-fill missing keys (optionally from Google Translate), and remove unused keys.
310
+ email:
311
+ - glex.spb@gmail.com
312
+ executables:
313
+ - i18n-tasks
314
+ extensions: []
315
+ extra_rdoc_files: []
316
+ files:
317
+ - LICENSE.txt
318
+ - README.md
319
+ - Rakefile
320
+ - bin/i18n-tasks
321
+ - bin/i18n-tasks.cmd
322
+ - config/locales/en.yml
323
+ - config/locales/ru.yml
324
+ - i18n-tasks.gemspec
325
+ - lib/i18n/tasks.rb
326
+ - lib/i18n/tasks/base_task.rb
327
+ - lib/i18n/tasks/cli.rb
328
+ - lib/i18n/tasks/command/collection.rb
329
+ - lib/i18n/tasks/command/commander.rb
330
+ - lib/i18n/tasks/command/commands/data.rb
331
+ - lib/i18n/tasks/command/commands/eq_base.rb
332
+ - lib/i18n/tasks/command/commands/health.rb
333
+ - lib/i18n/tasks/command/commands/interpolations.rb
334
+ - lib/i18n/tasks/command/commands/meta.rb
335
+ - lib/i18n/tasks/command/commands/missing.rb
336
+ - lib/i18n/tasks/command/commands/tree.rb
337
+ - lib/i18n/tasks/command/commands/usages.rb
338
+ - lib/i18n/tasks/command/dsl.rb
339
+ - lib/i18n/tasks/command/option_parsers/enum.rb
340
+ - lib/i18n/tasks/command/option_parsers/locale.rb
341
+ - lib/i18n/tasks/command/options/common.rb
342
+ - lib/i18n/tasks/command/options/data.rb
343
+ - lib/i18n/tasks/command/options/locales.rb
344
+ - lib/i18n/tasks/command_error.rb
345
+ - lib/i18n/tasks/commands.rb
346
+ - lib/i18n/tasks/concurrent/cache.rb
347
+ - lib/i18n/tasks/concurrent/cached_value.rb
348
+ - lib/i18n/tasks/configuration.rb
349
+ - lib/i18n/tasks/console_context.rb
350
+ - lib/i18n/tasks/data.rb
351
+ - lib/i18n/tasks/data/adapter/json_adapter.rb
352
+ - lib/i18n/tasks/data/adapter/yaml_adapter.rb
353
+ - lib/i18n/tasks/data/file_formats.rb
354
+ - lib/i18n/tasks/data/file_system.rb
355
+ - lib/i18n/tasks/data/file_system_base.rb
356
+ - lib/i18n/tasks/data/router/conservative_router.rb
357
+ - lib/i18n/tasks/data/router/pattern_router.rb
358
+ - lib/i18n/tasks/data/tree/node.rb
359
+ - lib/i18n/tasks/data/tree/nodes.rb
360
+ - lib/i18n/tasks/data/tree/siblings.rb
361
+ - lib/i18n/tasks/data/tree/traversal.rb
362
+ - lib/i18n/tasks/html_keys.rb
363
+ - lib/i18n/tasks/ignore_keys.rb
364
+ - lib/i18n/tasks/interpolations.rb
365
+ - lib/i18n/tasks/key_pattern_matching.rb
366
+ - lib/i18n/tasks/locale_list.rb
367
+ - lib/i18n/tasks/locale_pathname.rb
368
+ - lib/i18n/tasks/logging.rb
369
+ - lib/i18n/tasks/missing_keys.rb
370
+ - lib/i18n/tasks/plural_keys.rb
371
+ - lib/i18n/tasks/references.rb
372
+ - lib/i18n/tasks/reports/base.rb
373
+ - lib/i18n/tasks/reports/terminal.rb
374
+ - lib/i18n/tasks/scanners/erb_ast_processor.rb
375
+ - lib/i18n/tasks/scanners/erb_ast_scanner.rb
376
+ - lib/i18n/tasks/scanners/file_scanner.rb
377
+ - lib/i18n/tasks/scanners/files/caching_file_finder.rb
378
+ - lib/i18n/tasks/scanners/files/caching_file_finder_provider.rb
379
+ - lib/i18n/tasks/scanners/files/caching_file_reader.rb
380
+ - lib/i18n/tasks/scanners/files/file_finder.rb
381
+ - lib/i18n/tasks/scanners/files/file_reader.rb
382
+ - lib/i18n/tasks/scanners/local_ruby_parser.rb
383
+ - lib/i18n/tasks/scanners/occurrence_from_position.rb
384
+ - lib/i18n/tasks/scanners/pattern_mapper.rb
385
+ - lib/i18n/tasks/scanners/pattern_scanner.rb
386
+ - lib/i18n/tasks/scanners/pattern_with_scope_scanner.rb
387
+ - lib/i18n/tasks/scanners/relative_keys.rb
388
+ - lib/i18n/tasks/scanners/results/key_occurrences.rb
389
+ - lib/i18n/tasks/scanners/results/occurrence.rb
390
+ - lib/i18n/tasks/scanners/ruby_ast_call_finder.rb
391
+ - lib/i18n/tasks/scanners/ruby_ast_scanner.rb
392
+ - lib/i18n/tasks/scanners/ruby_key_literals.rb
393
+ - lib/i18n/tasks/scanners/scanner.rb
394
+ - lib/i18n/tasks/scanners/scanner_multiplexer.rb
395
+ - lib/i18n/tasks/split_key.rb
396
+ - lib/i18n/tasks/stats.rb
397
+ - lib/i18n/tasks/string_interpolation.rb
398
+ - lib/i18n/tasks/translation.rb
399
+ - lib/i18n/tasks/translators/base_translator.rb
400
+ - lib/i18n/tasks/translators/deepl_translator.rb
401
+ - lib/i18n/tasks/translators/google_translator.rb
402
+ - lib/i18n/tasks/translators/yandex_translator.rb
403
+ - lib/i18n/tasks/translators/youdao_translator.rb
404
+ - lib/i18n/tasks/unused_keys.rb
405
+ - lib/i18n/tasks/used_keys.rb
406
+ - lib/i18n/tasks/version.rb
407
+ - templates/config/i18n-tasks.yml
408
+ - templates/minitest/i18n_test.rb
409
+ - templates/rspec/i18n_spec.rb
410
+ homepage: https://github.com/glebm/i18n-tasks
411
+ licenses:
412
+ - MIT
413
+ metadata:
414
+ issue_tracker: https://github.com/glebm/i18n-tasks
415
+ post_install_message: |
416
+ # Install default configuration:
417
+ cp $(bundle exec i18n-tasks gem-path)/templates/config/i18n-tasks.yml config/
418
+ # Add an RSpec for missing and unused keys:
419
+ cp $(bundle exec i18n-tasks gem-path)/templates/rspec/i18n_spec.rb spec/
420
+ rdoc_options: []
421
+ require_paths:
422
+ - lib
423
+ required_ruby_version: !ruby/object:Gem::Requirement
424
+ requirements:
425
+ - - ">="
426
+ - !ruby/object:Gem::Version
427
+ version: '2.6'
428
+ - - "<"
429
+ - !ruby/object:Gem::Version
430
+ version: '4.0'
431
+ required_rubygems_version: !ruby/object:Gem::Requirement
432
+ requirements:
433
+ - - ">="
434
+ - !ruby/object:Gem::Version
435
+ version: '0'
436
+ requirements: []
437
+ rubygems_version: 3.2.3
438
+ signing_key:
439
+ specification_version: 4
440
+ summary: Manage localization and translation with the awesome power of static analysis
441
+ test_files: []