i18n-context-generator 0.3.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 +165 -73
  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 +315 -105
  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 +65 -0
  17. data/lib/i18n_context_generator/context_extractor/source_entries.rb +103 -0
  18. data/lib/i18n_context_generator/context_extractor/source_filters.rb +104 -0
  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 +218 -164
  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 +280 -88
  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 +232 -0
  44. data/lib/i18n_context_generator/searcher.rb +69 -201
  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 +62 -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.3.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-23 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,28 +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
179
+ - lib/i18n_context_generator/context_extractor/run_logging.rb
180
+ - lib/i18n_context_generator/context_extractor/source_entries.rb
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
155
186
  - lib/i18n_context_generator/git_diff.rb
187
+ - lib/i18n_context_generator/git_diff/xml_changes.rb
156
188
  - lib/i18n_context_generator/llm/anthropic.rb
157
189
  - lib/i18n_context_generator/llm/client.rb
158
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
159
195
  - lib/i18n_context_generator/parsers/android_xml_parser.rb
160
196
  - lib/i18n_context_generator/parsers/base.rb
161
197
  - lib/i18n_context_generator/parsers/json_parser.rb
162
198
  - lib/i18n_context_generator/parsers/strings_parser.rb
199
+ - lib/i18n_context_generator/parsers/xcstrings_parser.rb
163
200
  - lib/i18n_context_generator/parsers/yaml_parser.rb
201
+ - lib/i18n_context_generator/path_policy.rb
164
202
  - lib/i18n_context_generator/platform_validator.rb
203
+ - lib/i18n_context_generator/run_metrics.rb
165
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
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
166
210
  - lib/i18n_context_generator/version.rb
167
211
  - lib/i18n_context_generator/writers/android_xml_writer.rb
212
+ - lib/i18n_context_generator/writers/atomic_file.rb
168
213
  - lib/i18n_context_generator/writers/csv_writer.rb
169
214
  - lib/i18n_context_generator/writers/helpers.rb
170
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
171
218
  - lib/i18n_context_generator/writers/strings_writer.rb
172
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
173
223
  homepage: https://github.com/Automattic/i18n-context-generator
174
224
  licenses:
175
225
  - MPL-2.0