i18n-context-generator 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +163 -26
  3. data/lib/i18n_context_generator/android_resource.rb +209 -0
  4. data/lib/i18n_context_generator/apple_string_literal.rb +28 -0
  5. data/lib/i18n_context_generator/cache.rb +40 -8
  6. data/lib/i18n_context_generator/changed_location.rb +55 -0
  7. data/lib/i18n_context_generator/cli.rb +163 -76
  8. data/lib/i18n_context_generator/config/cli_values.rb +33 -0
  9. data/lib/i18n_context_generator/config/defaults.rb +35 -0
  10. data/lib/i18n_context_generator/config/schema.rb +225 -0
  11. data/lib/i18n_context_generator/config/serialization.rb +64 -0
  12. data/lib/i18n_context_generator/config/validation.rb +249 -0
  13. data/lib/i18n_context_generator/config.rb +293 -102
  14. data/lib/i18n_context_generator/context_extractor/cache_identity.rb +65 -0
  15. data/lib/i18n_context_generator/context_extractor/extraction_result.rb +46 -0
  16. data/lib/i18n_context_generator/context_extractor/run_logging.rb +45 -6
  17. data/lib/i18n_context_generator/context_extractor/source_entries.rb +103 -0
  18. data/lib/i18n_context_generator/context_extractor/source_filters.rb +51 -5
  19. data/lib/i18n_context_generator/context_extractor/translation_filters.rb +91 -0
  20. data/lib/i18n_context_generator/context_extractor/workflow.rb +118 -0
  21. data/lib/i18n_context_generator/context_extractor.rb +207 -216
  22. data/lib/i18n_context_generator/file_classifier.rb +72 -0
  23. data/lib/i18n_context_generator/generated_comment.rb +32 -0
  24. data/lib/i18n_context_generator/git_diff/xml_changes.rb +235 -0
  25. data/lib/i18n_context_generator/git_diff.rb +224 -95
  26. data/lib/i18n_context_generator/llm/anthropic.rb +65 -38
  27. data/lib/i18n_context_generator/llm/client.rb +294 -92
  28. data/lib/i18n_context_generator/llm/openai.rb +92 -51
  29. data/lib/i18n_context_generator/llm/openai_compatible.rb +20 -0
  30. data/lib/i18n_context_generator/llm/prompt_evidence.rb +47 -0
  31. data/lib/i18n_context_generator/llm/request_policy.rb +147 -0
  32. data/lib/i18n_context_generator/localization_syntax.rb +246 -0
  33. data/lib/i18n_context_generator/parsers/android_xml_parser.rb +47 -8
  34. data/lib/i18n_context_generator/parsers/base.rb +7 -4
  35. data/lib/i18n_context_generator/parsers/json_parser.rb +4 -0
  36. data/lib/i18n_context_generator/parsers/xcstrings_parser.rb +79 -0
  37. data/lib/i18n_context_generator/parsers/yaml_parser.rb +20 -7
  38. data/lib/i18n_context_generator/path_policy.rb +107 -0
  39. data/lib/i18n_context_generator/platform_validator.rb +24 -50
  40. data/lib/i18n_context_generator/run_metrics.rb +47 -0
  41. data/lib/i18n_context_generator/searcher/comment_masking.rb +115 -0
  42. data/lib/i18n_context_generator/searcher/match_filtering.rb +52 -0
  43. data/lib/i18n_context_generator/searcher/source_discovery.rb +109 -64
  44. data/lib/i18n_context_generator/searcher.rb +61 -205
  45. data/lib/i18n_context_generator/supplemental_context.rb +77 -0
  46. data/lib/i18n_context_generator/translation_comment_index.rb +121 -0
  47. data/lib/i18n_context_generator/version.rb +1 -1
  48. data/lib/i18n_context_generator/writers/android_xml_writer.rb +48 -18
  49. data/lib/i18n_context_generator/writers/atomic_file.rb +37 -0
  50. data/lib/i18n_context_generator/writers/csv_writer.rb +43 -18
  51. data/lib/i18n_context_generator/writers/helpers.rb +7 -29
  52. data/lib/i18n_context_generator/writers/json_writer.rb +31 -6
  53. data/lib/i18n_context_generator/writers/preview.rb +80 -0
  54. data/lib/i18n_context_generator/writers/result_serialization.rb +30 -0
  55. data/lib/i18n_context_generator/writers/strings_writer.rb +23 -12
  56. data/lib/i18n_context_generator/writers/swift_writer.rb +16 -54
  57. data/lib/i18n_context_generator/writers/xcstrings_writer.rb +57 -0
  58. data/lib/i18n_context_generator/xcstrings_document.rb +218 -0
  59. data/lib/i18n_context_generator/xml_scanner.rb +38 -0
  60. data/lib/i18n_context_generator.rb +20 -4
  61. metadata +59 -12
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: i18n-context-generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Automattic
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-03-24 00:00:00.000000000 Z
11
+ date: 2026-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: csv
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.3'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: dotstrings
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +86,14 @@ dependencies:
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '1.3'
89
+ version: '1.5'
76
90
  type: :runtime
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '1.3'
96
+ version: '1.5'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: tty-progressbar
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -112,30 +126,30 @@ dependencies:
112
126
  name: rubocop-rake
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - ">="
129
+ - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '0'
131
+ version: '0.7'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - ">="
136
+ - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '0'
138
+ version: '0.7'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: rubocop-rspec
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - ">="
143
+ - - "~>"
130
144
  - !ruby/object:Gem::Version
131
- version: '0'
145
+ version: '3.9'
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - ">="
150
+ - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: '0'
152
+ version: '3.9'
139
153
  description: A CLI tool that analyzes source code to extract contextual information
140
154
  for translation keys, improving translation quality with AI-powered analysis.
141
155
  email: mobile@automattic.com
@@ -148,31 +162,64 @@ files:
148
162
  - README.md
149
163
  - exe/i18n-context-generator
150
164
  - lib/i18n_context_generator.rb
165
+ - lib/i18n_context_generator/android_resource.rb
166
+ - lib/i18n_context_generator/apple_string_literal.rb
151
167
  - lib/i18n_context_generator/cache.rb
168
+ - lib/i18n_context_generator/changed_location.rb
152
169
  - lib/i18n_context_generator/cli.rb
153
170
  - lib/i18n_context_generator/config.rb
171
+ - lib/i18n_context_generator/config/cli_values.rb
172
+ - lib/i18n_context_generator/config/defaults.rb
173
+ - lib/i18n_context_generator/config/schema.rb
174
+ - lib/i18n_context_generator/config/serialization.rb
175
+ - lib/i18n_context_generator/config/validation.rb
154
176
  - lib/i18n_context_generator/context_extractor.rb
177
+ - lib/i18n_context_generator/context_extractor/cache_identity.rb
178
+ - lib/i18n_context_generator/context_extractor/extraction_result.rb
155
179
  - lib/i18n_context_generator/context_extractor/run_logging.rb
180
+ - lib/i18n_context_generator/context_extractor/source_entries.rb
156
181
  - lib/i18n_context_generator/context_extractor/source_filters.rb
182
+ - lib/i18n_context_generator/context_extractor/translation_filters.rb
183
+ - lib/i18n_context_generator/context_extractor/workflow.rb
184
+ - lib/i18n_context_generator/file_classifier.rb
185
+ - lib/i18n_context_generator/generated_comment.rb
157
186
  - lib/i18n_context_generator/git_diff.rb
187
+ - lib/i18n_context_generator/git_diff/xml_changes.rb
158
188
  - lib/i18n_context_generator/llm/anthropic.rb
159
189
  - lib/i18n_context_generator/llm/client.rb
160
190
  - lib/i18n_context_generator/llm/openai.rb
191
+ - lib/i18n_context_generator/llm/openai_compatible.rb
192
+ - lib/i18n_context_generator/llm/prompt_evidence.rb
193
+ - lib/i18n_context_generator/llm/request_policy.rb
194
+ - lib/i18n_context_generator/localization_syntax.rb
161
195
  - lib/i18n_context_generator/parsers/android_xml_parser.rb
162
196
  - lib/i18n_context_generator/parsers/base.rb
163
197
  - lib/i18n_context_generator/parsers/json_parser.rb
164
198
  - lib/i18n_context_generator/parsers/strings_parser.rb
199
+ - lib/i18n_context_generator/parsers/xcstrings_parser.rb
165
200
  - lib/i18n_context_generator/parsers/yaml_parser.rb
201
+ - lib/i18n_context_generator/path_policy.rb
166
202
  - lib/i18n_context_generator/platform_validator.rb
203
+ - lib/i18n_context_generator/run_metrics.rb
167
204
  - lib/i18n_context_generator/searcher.rb
205
+ - lib/i18n_context_generator/searcher/comment_masking.rb
206
+ - lib/i18n_context_generator/searcher/match_filtering.rb
168
207
  - lib/i18n_context_generator/searcher/source_discovery.rb
208
+ - lib/i18n_context_generator/supplemental_context.rb
209
+ - lib/i18n_context_generator/translation_comment_index.rb
169
210
  - lib/i18n_context_generator/version.rb
170
211
  - lib/i18n_context_generator/writers/android_xml_writer.rb
212
+ - lib/i18n_context_generator/writers/atomic_file.rb
171
213
  - lib/i18n_context_generator/writers/csv_writer.rb
172
214
  - lib/i18n_context_generator/writers/helpers.rb
173
215
  - lib/i18n_context_generator/writers/json_writer.rb
216
+ - lib/i18n_context_generator/writers/preview.rb
217
+ - lib/i18n_context_generator/writers/result_serialization.rb
174
218
  - lib/i18n_context_generator/writers/strings_writer.rb
175
219
  - lib/i18n_context_generator/writers/swift_writer.rb
220
+ - lib/i18n_context_generator/writers/xcstrings_writer.rb
221
+ - lib/i18n_context_generator/xcstrings_document.rb
222
+ - lib/i18n_context_generator/xml_scanner.rb
176
223
  homepage: https://github.com/Automattic/i18n-context-generator
177
224
  licenses:
178
225
  - MPL-2.0