translation_diff 1.0.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 (85) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +84 -0
  3. data/.github/workflows/release.yml +28 -0
  4. data/.gitignore +11 -0
  5. data/.rubocop.yml +39 -0
  6. data/.ruby-version +1 -0
  7. data/CHANGELOG.md +723 -0
  8. data/Gemfile +61 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +158 -0
  11. data/Rakefile +41 -0
  12. data/data/languages/azure.json +285 -0
  13. data/data/languages/deepl.json +220 -0
  14. data/data/languages/google.json +399 -0
  15. data/data/languages/modernmt.json +413 -0
  16. data/docs/caching.md +185 -0
  17. data/docs/configuration.md +205 -0
  18. data/docs/contracts.md +187 -0
  19. data/docs/development.md +34 -0
  20. data/docs/errors.md +92 -0
  21. data/docs/how-it-works.md +145 -0
  22. data/docs/instrumentation.md +96 -0
  23. data/docs/languages.md +94 -0
  24. data/docs/providers.md +379 -0
  25. data/docs/sql-cache.md +366 -0
  26. data/lib/generators/translation_diff/install_generator.rb +15 -0
  27. data/lib/generators/translation_diff/templates/create_translation_diff_tables.rb.erb +24 -0
  28. data/lib/translation_diff/active_record/support.rb +34 -0
  29. data/lib/translation_diff/active_record.rb +3 -0
  30. data/lib/translation_diff/batch.rb +98 -0
  31. data/lib/translation_diff/call_preparation.rb +47 -0
  32. data/lib/translation_diff/capabilities.rb +9 -0
  33. data/lib/translation_diff/configuration/cache_guard_options.rb +39 -0
  34. data/lib/translation_diff/configuration/cache_ttl_option.rb +30 -0
  35. data/lib/translation_diff/configuration/option_table.rb +38 -0
  36. data/lib/translation_diff/configuration/provider_option_owners.rb +40 -0
  37. data/lib/translation_diff/configuration.rb +135 -0
  38. data/lib/translation_diff/context.rb +23 -0
  39. data/lib/translation_diff/dispatcher.rb +57 -0
  40. data/lib/translation_diff/document.rb +23 -0
  41. data/lib/translation_diff/errors.rb +44 -0
  42. data/lib/translation_diff/fragment.rb +33 -0
  43. data/lib/translation_diff/http_provider.rb +128 -0
  44. data/lib/translation_diff/instrumentation.rb +25 -0
  45. data/lib/translation_diff/languages/refresh.rb +70 -0
  46. data/lib/translation_diff/languages/set.rb +53 -0
  47. data/lib/translation_diff/languages.rb +30 -0
  48. data/lib/translation_diff/leaves.rb +22 -0
  49. data/lib/translation_diff/markup.rb +85 -0
  50. data/lib/translation_diff/passage.rb +149 -0
  51. data/lib/translation_diff/preview.rb +3 -0
  52. data/lib/translation_diff/previewer.rb +78 -0
  53. data/lib/translation_diff/provider.rb +91 -0
  54. data/lib/translation_diff/providers/amazon.rb +126 -0
  55. data/lib/translation_diff/providers/azure.rb +78 -0
  56. data/lib/translation_diff/providers/deepl.rb +88 -0
  57. data/lib/translation_diff/providers/google.rb +64 -0
  58. data/lib/translation_diff/providers/libretranslate.rb +65 -0
  59. data/lib/translation_diff/providers/modernmt.rb +74 -0
  60. data/lib/translation_diff/providers/null.rb +20 -0
  61. data/lib/translation_diff/providers.rb +69 -0
  62. data/lib/translation_diff/railtie.rb +12 -0
  63. data/lib/translation_diff/rate_limiters/active_record.rb +92 -0
  64. data/lib/translation_diff/rate_limiters/redis.rb +59 -0
  65. data/lib/translation_diff/rate_limiters.rb +9 -0
  66. data/lib/translation_diff/redaction.rb +45 -0
  67. data/lib/translation_diff/registry.rb +31 -0
  68. data/lib/translation_diff/segment.rb +32 -0
  69. data/lib/translation_diff/segmenters/pragmatic.rb +102 -0
  70. data/lib/translation_diff/segmenters/simple.rb +122 -0
  71. data/lib/translation_diff/segmenters.rb +4 -0
  72. data/lib/translation_diff/sentence_cache.rb +76 -0
  73. data/lib/translation_diff/stores/active_record.rb +106 -0
  74. data/lib/translation_diff/stores/memory.rb +34 -0
  75. data/lib/translation_diff/stores/redis.rb +49 -0
  76. data/lib/translation_diff/stores.rb +9 -0
  77. data/lib/translation_diff/tasks/translation_diff.rake +21 -0
  78. data/lib/translation_diff/translation/request.rb +8 -0
  79. data/lib/translation_diff/translation/response.rb +35 -0
  80. data/lib/translation_diff/translation/usage.rb +8 -0
  81. data/lib/translation_diff/translator.rb +103 -0
  82. data/lib/translation_diff/version.rb +3 -0
  83. data/lib/translation_diff.rb +93 -0
  84. data/translation_diff.gemspec +56 -0
  85. metadata +243 -0
@@ -0,0 +1,220 @@
1
+ {
2
+ "provider": "deepl",
3
+ "captured_at": "2026-09-10",
4
+ "endpoint": "https://api.deepl.com/v2/languages",
5
+ "source": [
6
+ "af",
7
+ "an",
8
+ "ar",
9
+ "as",
10
+ "ay",
11
+ "az",
12
+ "ba",
13
+ "be",
14
+ "bg",
15
+ "bn",
16
+ "br",
17
+ "bs",
18
+ "ca",
19
+ "cs",
20
+ "cy",
21
+ "da",
22
+ "de",
23
+ "el",
24
+ "en",
25
+ "eo",
26
+ "es",
27
+ "et",
28
+ "eu",
29
+ "fa",
30
+ "fi",
31
+ "fr",
32
+ "ga",
33
+ "gl",
34
+ "gn",
35
+ "gu",
36
+ "ha",
37
+ "he",
38
+ "hi",
39
+ "hr",
40
+ "ht",
41
+ "hu",
42
+ "hy",
43
+ "id",
44
+ "ig",
45
+ "is",
46
+ "it",
47
+ "ja",
48
+ "jv",
49
+ "ka",
50
+ "kk",
51
+ "ko",
52
+ "ky",
53
+ "la",
54
+ "lb",
55
+ "ln",
56
+ "lt",
57
+ "lv",
58
+ "mg",
59
+ "mi",
60
+ "mk",
61
+ "ml",
62
+ "mn",
63
+ "mr",
64
+ "ms",
65
+ "mt",
66
+ "my",
67
+ "nb",
68
+ "ne",
69
+ "nl",
70
+ "oc",
71
+ "om",
72
+ "pa",
73
+ "pl",
74
+ "ps",
75
+ "pt",
76
+ "qu",
77
+ "ro",
78
+ "ru",
79
+ "sa",
80
+ "sk",
81
+ "sl",
82
+ "sq",
83
+ "sr",
84
+ "st",
85
+ "su",
86
+ "sv",
87
+ "sw",
88
+ "ta",
89
+ "te",
90
+ "tg",
91
+ "th",
92
+ "tk",
93
+ "tl",
94
+ "tn",
95
+ "tr",
96
+ "ts",
97
+ "tt",
98
+ "uk",
99
+ "ur",
100
+ "uz",
101
+ "vi",
102
+ "wo",
103
+ "xh",
104
+ "yi",
105
+ "zh",
106
+ "zu"
107
+ ],
108
+ "target": [
109
+ "af",
110
+ "an",
111
+ "ar",
112
+ "as",
113
+ "ay",
114
+ "az",
115
+ "ba",
116
+ "be",
117
+ "bg",
118
+ "bn",
119
+ "br",
120
+ "bs",
121
+ "ca",
122
+ "cs",
123
+ "cy",
124
+ "da",
125
+ "de",
126
+ "de-ch",
127
+ "de-de",
128
+ "el",
129
+ "en-gb",
130
+ "en-us",
131
+ "eo",
132
+ "es",
133
+ "es-419",
134
+ "et",
135
+ "eu",
136
+ "fa",
137
+ "fi",
138
+ "fr",
139
+ "fr-ca",
140
+ "fr-fr",
141
+ "ga",
142
+ "gl",
143
+ "gn",
144
+ "gu",
145
+ "ha",
146
+ "he",
147
+ "hi",
148
+ "hr",
149
+ "ht",
150
+ "hu",
151
+ "hy",
152
+ "id",
153
+ "ig",
154
+ "is",
155
+ "it",
156
+ "ja",
157
+ "jv",
158
+ "ka",
159
+ "kk",
160
+ "ko",
161
+ "ky",
162
+ "la",
163
+ "lb",
164
+ "ln",
165
+ "lt",
166
+ "lv",
167
+ "mg",
168
+ "mi",
169
+ "mk",
170
+ "ml",
171
+ "mn",
172
+ "mr",
173
+ "ms",
174
+ "mt",
175
+ "my",
176
+ "nb",
177
+ "ne",
178
+ "nl",
179
+ "oc",
180
+ "om",
181
+ "pa",
182
+ "pl",
183
+ "ps",
184
+ "pt-br",
185
+ "pt-pt",
186
+ "qu",
187
+ "ro",
188
+ "ru",
189
+ "sa",
190
+ "sk",
191
+ "sl",
192
+ "sq",
193
+ "sr",
194
+ "st",
195
+ "su",
196
+ "sv",
197
+ "sw",
198
+ "ta",
199
+ "te",
200
+ "tg",
201
+ "th",
202
+ "tk",
203
+ "tl",
204
+ "tn",
205
+ "tr",
206
+ "ts",
207
+ "tt",
208
+ "uk",
209
+ "ur",
210
+ "uz",
211
+ "vi",
212
+ "wo",
213
+ "xh",
214
+ "yi",
215
+ "zh",
216
+ "zh-hans",
217
+ "zh-hant",
218
+ "zu"
219
+ ]
220
+ }
@@ -0,0 +1,399 @@
1
+ {
2
+ "provider": "google",
3
+ "captured_at": "2026-09-10",
4
+ "endpoint": "https://translation.googleapis.com/language/translate/v2/languages",
5
+ "source": [
6
+ "ab",
7
+ "ace",
8
+ "ach",
9
+ "af",
10
+ "ak",
11
+ "alz",
12
+ "am",
13
+ "ar",
14
+ "as",
15
+ "awa",
16
+ "ay",
17
+ "az",
18
+ "ba",
19
+ "ban",
20
+ "bbc",
21
+ "be",
22
+ "bem",
23
+ "bew",
24
+ "bg",
25
+ "bho",
26
+ "bik",
27
+ "bm",
28
+ "bn",
29
+ "br",
30
+ "bs",
31
+ "bts",
32
+ "btx",
33
+ "bua",
34
+ "ca",
35
+ "ceb",
36
+ "cgg",
37
+ "chm",
38
+ "ckb",
39
+ "cnh",
40
+ "co",
41
+ "crh",
42
+ "crs",
43
+ "cs",
44
+ "cv",
45
+ "cy",
46
+ "da",
47
+ "de",
48
+ "din",
49
+ "doi",
50
+ "dov",
51
+ "dv",
52
+ "dz",
53
+ "ee",
54
+ "el",
55
+ "en",
56
+ "eo",
57
+ "es",
58
+ "et",
59
+ "eu",
60
+ "fa",
61
+ "ff",
62
+ "fi",
63
+ "fj",
64
+ "fr",
65
+ "fr-ca",
66
+ "fy",
67
+ "ga",
68
+ "gaa",
69
+ "gd",
70
+ "gl",
71
+ "gn",
72
+ "gom",
73
+ "gu",
74
+ "ha",
75
+ "haw",
76
+ "he",
77
+ "hi",
78
+ "hil",
79
+ "hmn",
80
+ "hr",
81
+ "hrx",
82
+ "ht",
83
+ "hu",
84
+ "hy",
85
+ "id",
86
+ "ig",
87
+ "ilo",
88
+ "is",
89
+ "it",
90
+ "iw",
91
+ "ja",
92
+ "jv",
93
+ "jw",
94
+ "ka",
95
+ "kk",
96
+ "km",
97
+ "kn",
98
+ "ko",
99
+ "kri",
100
+ "ktu",
101
+ "ku",
102
+ "ky",
103
+ "la",
104
+ "lb",
105
+ "lg",
106
+ "li",
107
+ "lij",
108
+ "lmo",
109
+ "ln",
110
+ "lo",
111
+ "lt",
112
+ "ltg",
113
+ "luo",
114
+ "lus",
115
+ "lv",
116
+ "mai",
117
+ "mak",
118
+ "mg",
119
+ "mi",
120
+ "min",
121
+ "mk",
122
+ "ml",
123
+ "mn",
124
+ "mni-mtei",
125
+ "mr",
126
+ "ms",
127
+ "ms-arab",
128
+ "mt",
129
+ "my",
130
+ "ne",
131
+ "new",
132
+ "nl",
133
+ "no",
134
+ "nr",
135
+ "nso",
136
+ "nus",
137
+ "ny",
138
+ "oc",
139
+ "om",
140
+ "or",
141
+ "pa",
142
+ "pa-arab",
143
+ "pag",
144
+ "pam",
145
+ "pap",
146
+ "pl",
147
+ "ps",
148
+ "pt",
149
+ "pt-pt",
150
+ "qu",
151
+ "rn",
152
+ "ro",
153
+ "rom",
154
+ "ru",
155
+ "rw",
156
+ "sa",
157
+ "scn",
158
+ "sd",
159
+ "sg",
160
+ "shn",
161
+ "si",
162
+ "sk",
163
+ "sl",
164
+ "sm",
165
+ "sn",
166
+ "so",
167
+ "sq",
168
+ "sr",
169
+ "ss",
170
+ "st",
171
+ "su",
172
+ "sv",
173
+ "sw",
174
+ "szl",
175
+ "ta",
176
+ "te",
177
+ "tet",
178
+ "tg",
179
+ "th",
180
+ "ti",
181
+ "tk",
182
+ "tl",
183
+ "tn",
184
+ "tr",
185
+ "ts",
186
+ "tt",
187
+ "ug",
188
+ "uk",
189
+ "ur",
190
+ "uz",
191
+ "vi",
192
+ "xh",
193
+ "yi",
194
+ "yo",
195
+ "yua",
196
+ "yue",
197
+ "zh",
198
+ "zh-cn",
199
+ "zh-tw",
200
+ "zu"
201
+ ],
202
+ "target": [
203
+ "ab",
204
+ "ace",
205
+ "ach",
206
+ "af",
207
+ "ak",
208
+ "alz",
209
+ "am",
210
+ "ar",
211
+ "as",
212
+ "awa",
213
+ "ay",
214
+ "az",
215
+ "ba",
216
+ "ban",
217
+ "bbc",
218
+ "be",
219
+ "bem",
220
+ "bew",
221
+ "bg",
222
+ "bho",
223
+ "bik",
224
+ "bm",
225
+ "bn",
226
+ "br",
227
+ "bs",
228
+ "bts",
229
+ "btx",
230
+ "bua",
231
+ "ca",
232
+ "ceb",
233
+ "cgg",
234
+ "chm",
235
+ "ckb",
236
+ "cnh",
237
+ "co",
238
+ "crh",
239
+ "crs",
240
+ "cs",
241
+ "cv",
242
+ "cy",
243
+ "da",
244
+ "de",
245
+ "din",
246
+ "doi",
247
+ "dov",
248
+ "dv",
249
+ "dz",
250
+ "ee",
251
+ "el",
252
+ "en",
253
+ "eo",
254
+ "es",
255
+ "et",
256
+ "eu",
257
+ "fa",
258
+ "ff",
259
+ "fi",
260
+ "fj",
261
+ "fr",
262
+ "fr-ca",
263
+ "fy",
264
+ "ga",
265
+ "gaa",
266
+ "gd",
267
+ "gl",
268
+ "gn",
269
+ "gom",
270
+ "gu",
271
+ "ha",
272
+ "haw",
273
+ "he",
274
+ "hi",
275
+ "hil",
276
+ "hmn",
277
+ "hr",
278
+ "hrx",
279
+ "ht",
280
+ "hu",
281
+ "hy",
282
+ "id",
283
+ "ig",
284
+ "ilo",
285
+ "is",
286
+ "it",
287
+ "iw",
288
+ "ja",
289
+ "jv",
290
+ "jw",
291
+ "ka",
292
+ "kk",
293
+ "km",
294
+ "kn",
295
+ "ko",
296
+ "kri",
297
+ "ktu",
298
+ "ku",
299
+ "ky",
300
+ "la",
301
+ "lb",
302
+ "lg",
303
+ "li",
304
+ "lij",
305
+ "lmo",
306
+ "ln",
307
+ "lo",
308
+ "lt",
309
+ "ltg",
310
+ "luo",
311
+ "lus",
312
+ "lv",
313
+ "mai",
314
+ "mak",
315
+ "mg",
316
+ "mi",
317
+ "min",
318
+ "mk",
319
+ "ml",
320
+ "mn",
321
+ "mni-mtei",
322
+ "mr",
323
+ "ms",
324
+ "ms-arab",
325
+ "mt",
326
+ "my",
327
+ "ne",
328
+ "new",
329
+ "nl",
330
+ "no",
331
+ "nr",
332
+ "nso",
333
+ "nus",
334
+ "ny",
335
+ "oc",
336
+ "om",
337
+ "or",
338
+ "pa",
339
+ "pa-arab",
340
+ "pag",
341
+ "pam",
342
+ "pap",
343
+ "pl",
344
+ "ps",
345
+ "pt",
346
+ "pt-pt",
347
+ "qu",
348
+ "rn",
349
+ "ro",
350
+ "rom",
351
+ "ru",
352
+ "rw",
353
+ "sa",
354
+ "scn",
355
+ "sd",
356
+ "sg",
357
+ "shn",
358
+ "si",
359
+ "sk",
360
+ "sl",
361
+ "sm",
362
+ "sn",
363
+ "so",
364
+ "sq",
365
+ "sr",
366
+ "ss",
367
+ "st",
368
+ "su",
369
+ "sv",
370
+ "sw",
371
+ "szl",
372
+ "ta",
373
+ "te",
374
+ "tet",
375
+ "tg",
376
+ "th",
377
+ "ti",
378
+ "tk",
379
+ "tl",
380
+ "tn",
381
+ "tr",
382
+ "ts",
383
+ "tt",
384
+ "ug",
385
+ "uk",
386
+ "ur",
387
+ "uz",
388
+ "vi",
389
+ "xh",
390
+ "yi",
391
+ "yo",
392
+ "yua",
393
+ "yue",
394
+ "zh",
395
+ "zh-cn",
396
+ "zh-tw",
397
+ "zu"
398
+ ]
399
+ }