poly-lexis 0.2.1 → 0.3.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.
package/dist/index.d.ts CHANGED
@@ -118,8 +118,9 @@ interface ManageTranslationsOptions {
118
118
  /**
119
119
  * Smart translation management - handles init, validation, auto-fill, and type generation
120
120
  * based on the current state of the project
121
+ * @returns true if translations are valid, false otherwise
121
122
  */
122
- declare function manageTranslations(projectRoot?: string, options?: ManageTranslationsOptions): Promise<void>;
123
+ declare function manageTranslations(projectRoot?: string, options?: ManageTranslationsOptions): Promise<boolean>;
123
124
 
124
125
  /**
125
126
  * Validate all translations against the source language
@@ -134,11 +135,27 @@ declare function getMissingForLanguage(projectRoot: string, language: string): A
134
135
  }>;
135
136
 
136
137
  /**
137
- * Supported language codes for translations
138
- * Based on Google Translate API supported languages (ISO 639-1 and regional variants)
139
- * Complete list of all languages supported by Google Cloud Translation API
138
+ * Translation provider types
140
139
  */
141
- declare const SUPPORTED_LANGUAGES: readonly ["af", "sq", "am", "ar", "hy", "as", "ay", "az", "bm", "eu", "be", "bn", "bho", "bs", "bg", "ca", "ceb", "ny", "zh", "zh_cn", "zh_tw", "co", "hr", "cs", "da", "dv", "doi", "nl", "en", "eo", "et", "ee", "tl", "fi", "fr", "gl", "ka", "de", "el", "gn", "gu", "ht", "ha", "haw", "iw", "he", "hi", "hmn", "hu", "is", "ig", "ilo", "id", "ga", "it", "ja", "jw", "kn", "kk", "km", "rw", "gom", "ko", "kri", "ku", "ckb", "ky", "lo", "la", "lv", "ln", "lt", "lg", "lb", "mk", "mai", "mg", "ms", "ml", "mt", "mi", "mr", "mni", "lus", "mn", "my", "ne", "no", "or", "om", "ps", "fa", "pl", "pt", "pt_br", "pa", "qu", "ro", "ru", "sm", "sa", "gd", "sr", "st", "sn", "sd", "si", "sk", "sl", "so", "es", "su", "sw", "sv", "tg", "ta", "tt", "te", "th", "ti", "ts", "tr", "tk", "ak", "uk", "ur", "ug", "uz", "vi", "cy", "xh", "yi", "yo", "zu"];
140
+ declare const TRANSLATION_PROVIDERS: readonly ["deepl", "google"];
141
+ type TranslationProviderType = (typeof TRANSLATION_PROVIDERS)[number];
142
+ /**
143
+ * DeepL supported target languages
144
+ * Based on DeepL API v2 documentation
145
+ */
146
+ declare const DEEPL_LANGUAGES: readonly ["ar", "bg", "cs", "da", "de", "el", "en", "en_gb", "en_us", "es", "es_419", "et", "fi", "fr", "he", "hu", "id", "it", "ja", "ko", "lt", "lv", "nb", "nl", "pl", "pt", "pt_br", "pt_pt", "ro", "ru", "sk", "sl", "sv", "th", "tr", "uk", "vi", "zh", "zh_hans", "zh_hant"];
147
+ /**
148
+ * Google Translate supported languages
149
+ * Based on Google Cloud Translation API v2
150
+ * Reference: https://docs.cloud.google.com/translate/docs/languages
151
+ */
152
+ declare const GOOGLE_LANGUAGES: readonly ["af", "sq", "am", "ar", "hy", "az", "eu", "be", "bn", "bs", "bg", "ca", "ceb", "zh", "zh_cn", "zh_tw", "co", "hr", "cs", "da", "nl", "en", "eo", "et", "fi", "fr", "fy", "gl", "ka", "de", "el", "gu", "ht", "ha", "haw", "he", "hi", "hmn", "hu", "is", "ig", "id", "ga", "it", "ja", "jv", "kn", "kk", "km", "rw", "ko", "ku", "ky", "lo", "la", "lv", "lt", "lb", "mk", "mg", "ms", "ml", "mt", "mi", "mr", "mn", "my", "ne", "no", "ny", "or", "ps", "fa", "pl", "pt", "pt_br", "pa", "ro", "ru", "sm", "gd", "sr", "st", "sn", "sd", "si", "sk", "sl", "so", "es", "su", "sw", "sv", "tl", "tg", "ta", "tt", "te", "th", "tr", "tk", "uk", "ur", "ug", "uz", "vi", "cy", "xh", "yi", "yo", "zu"];
153
+ /**
154
+ * All supported language codes (union of DeepL and Google Translate)
155
+ */
156
+ declare const SUPPORTED_LANGUAGES: readonly string[];
157
+ type DeepLLanguage = (typeof DEEPL_LANGUAGES)[number];
158
+ type GoogleLanguage = (typeof GOOGLE_LANGUAGES)[number];
142
159
  type SupportedLanguage = (typeof SUPPORTED_LANGUAGES)[number];
143
160
  /**
144
161
  * JSON Schema for .translationsrc.json
@@ -159,7 +176,7 @@ declare const TRANSLATION_CONFIG_SCHEMA: {
159
176
  description: string;
160
177
  items: {
161
178
  type: string;
162
- enum: readonly ["af", "sq", "am", "ar", "hy", "as", "ay", "az", "bm", "eu", "be", "bn", "bho", "bs", "bg", "ca", "ceb", "ny", "zh", "zh_cn", "zh_tw", "co", "hr", "cs", "da", "dv", "doi", "nl", "en", "eo", "et", "ee", "tl", "fi", "fr", "gl", "ka", "de", "el", "gn", "gu", "ht", "ha", "haw", "iw", "he", "hi", "hmn", "hu", "is", "ig", "ilo", "id", "ga", "it", "ja", "jw", "kn", "kk", "km", "rw", "gom", "ko", "kri", "ku", "ckb", "ky", "lo", "la", "lv", "ln", "lt", "lg", "lb", "mk", "mai", "mg", "ms", "ml", "mt", "mi", "mr", "mni", "lus", "mn", "my", "ne", "no", "or", "om", "ps", "fa", "pl", "pt", "pt_br", "pa", "qu", "ro", "ru", "sm", "sa", "gd", "sr", "st", "sn", "sd", "si", "sk", "sl", "so", "es", "su", "sw", "sv", "tg", "ta", "tt", "te", "th", "ti", "ts", "tr", "tk", "ak", "uk", "ur", "ug", "uz", "vi", "cy", "xh", "yi", "yo", "zu"];
179
+ enum: readonly string[];
163
180
  };
164
181
  minItems: number;
165
182
  uniqueItems: boolean;
@@ -167,7 +184,7 @@ declare const TRANSLATION_CONFIG_SCHEMA: {
167
184
  sourceLanguage: {
168
185
  type: string;
169
186
  description: string;
170
- enum: readonly ["af", "sq", "am", "ar", "hy", "as", "ay", "az", "bm", "eu", "be", "bn", "bho", "bs", "bg", "ca", "ceb", "ny", "zh", "zh_cn", "zh_tw", "co", "hr", "cs", "da", "dv", "doi", "nl", "en", "eo", "et", "ee", "tl", "fi", "fr", "gl", "ka", "de", "el", "gn", "gu", "ht", "ha", "haw", "iw", "he", "hi", "hmn", "hu", "is", "ig", "ilo", "id", "ga", "it", "ja", "jw", "kn", "kk", "km", "rw", "gom", "ko", "kri", "ku", "ckb", "ky", "lo", "la", "lv", "ln", "lt", "lg", "lb", "mk", "mai", "mg", "ms", "ml", "mt", "mi", "mr", "mni", "lus", "mn", "my", "ne", "no", "or", "om", "ps", "fa", "pl", "pt", "pt_br", "pa", "qu", "ro", "ru", "sm", "sa", "gd", "sr", "st", "sn", "sd", "si", "sk", "sl", "so", "es", "su", "sw", "sv", "tg", "ta", "tt", "te", "th", "ti", "ts", "tr", "tk", "ak", "uk", "ur", "ug", "uz", "vi", "cy", "xh", "yi", "yo", "zu"];
187
+ enum: readonly string[];
171
188
  default: string;
172
189
  };
173
190
  typesOutputPath: {
@@ -175,6 +192,12 @@ declare const TRANSLATION_CONFIG_SCHEMA: {
175
192
  description: string;
176
193
  default: string;
177
194
  };
195
+ provider: {
196
+ type: string;
197
+ description: string;
198
+ enum: readonly ["deepl", "google"];
199
+ default: string;
200
+ };
178
201
  };
179
202
  required: string[];
180
203
  additionalProperties: boolean;
@@ -183,6 +206,18 @@ declare const TRANSLATION_CONFIG_SCHEMA: {
183
206
  * Validate if a language code is supported
184
207
  */
185
208
  declare function isValidLanguage(lang: string): lang is SupportedLanguage;
209
+ /**
210
+ * Validate if a language is supported by DeepL
211
+ */
212
+ declare function isValidDeepLLanguage(lang: string): lang is DeepLLanguage;
213
+ /**
214
+ * Validate if a language is supported by Google Translate
215
+ */
216
+ declare function isValidGoogleLanguage(lang: string): lang is GoogleLanguage;
217
+ /**
218
+ * Validate if a language is supported by a specific provider
219
+ */
220
+ declare function isValidLanguageForProvider(lang: string, provider: TranslationProviderType): boolean;
186
221
  /**
187
222
  * Validate languages array
188
223
  */
@@ -190,6 +225,17 @@ declare function validateLanguages(languages: string[]): {
190
225
  valid: boolean;
191
226
  invalid: string[];
192
227
  };
228
+ /**
229
+ * Validate languages array for a specific provider
230
+ */
231
+ declare function validateLanguagesForProvider(languages: string[], provider: TranslationProviderType): {
232
+ valid: boolean;
233
+ invalid: string[];
234
+ };
235
+ /**
236
+ * Get supported languages for a specific provider
237
+ */
238
+ declare function getSupportedLanguages(provider: TranslationProviderType): readonly string[];
193
239
 
194
240
  /**
195
241
  * Translation provider interface
@@ -344,4 +390,4 @@ declare function sortKeys<T extends Record<string, unknown>>(obj: T): T;
344
390
  */
345
391
  declare function ensureTranslationsStructure(translationsPath: string, languages: string[]): void;
346
392
 
347
- export { DEFAULT_CONFIG, DEFAULT_LANGUAGES, GoogleTranslateProvider, type ManageTranslationsOptions, type MissingTranslation, SUPPORTED_LANGUAGES, type SupportedLanguage, TRANSLATION_CONFIG_SCHEMA, type TranslateOptions, type TranslationConfig, type TranslationEntry, type TranslationFile, type TranslationFiles, type TranslationProvider, type TranslationProviderFactory, type TranslationResult, type ValidationResult, addTranslationKey, addTranslationKeys, autoFillTranslations, detectExistingTranslations, ensureTranslationsStructure, extractVariables, fillNamespace, generateTranslationTypes, getAvailableLanguages, getMissingForLanguage, getNamespaces, getTranslationProvider, hasInterpolation, initTranslations, initTranslationsInteractive, isValidLanguage, loadConfig, manageTranslations, readTranslations, resetTranslationProvider, setTranslationProvider, sortKeys, translateBatch, translateText, validateLanguages, validateTranslations, validateVariables, writeTranslation };
393
+ export { DEEPL_LANGUAGES, DEFAULT_CONFIG, DEFAULT_LANGUAGES, type DeepLLanguage, GOOGLE_LANGUAGES, type GoogleLanguage, GoogleTranslateProvider, type ManageTranslationsOptions, type MissingTranslation, SUPPORTED_LANGUAGES, type SupportedLanguage, TRANSLATION_CONFIG_SCHEMA, TRANSLATION_PROVIDERS, type TranslateOptions, type TranslationConfig, type TranslationEntry, type TranslationFile, type TranslationFiles, type TranslationProvider, type TranslationProviderFactory, type TranslationProviderType, type TranslationResult, type ValidationResult, addTranslationKey, addTranslationKeys, autoFillTranslations, detectExistingTranslations, ensureTranslationsStructure, extractVariables, fillNamespace, generateTranslationTypes, getAvailableLanguages, getMissingForLanguage, getNamespaces, getSupportedLanguages, getTranslationProvider, hasInterpolation, initTranslations, initTranslationsInteractive, isValidDeepLLanguage, isValidGoogleLanguage, isValidLanguage, isValidLanguageForProvider, loadConfig, manageTranslations, readTranslations, resetTranslationProvider, setTranslationProvider, sortKeys, translateBatch, translateText, validateLanguages, validateLanguagesForProvider, validateTranslations, validateVariables, writeTranslation };
package/dist/index.js CHANGED
@@ -93,6 +93,22 @@ var init_utils = __esm({
93
93
  function isValidLanguage(lang) {
94
94
  return SUPPORTED_LANGUAGES.includes(lang);
95
95
  }
96
+ function isValidDeepLLanguage(lang) {
97
+ return DEEPL_LANGUAGES.includes(lang);
98
+ }
99
+ function isValidGoogleLanguage(lang) {
100
+ return GOOGLE_LANGUAGES.includes(lang);
101
+ }
102
+ function isValidLanguageForProvider(lang, provider) {
103
+ switch (provider) {
104
+ case "deepl":
105
+ return isValidDeepLLanguage(lang);
106
+ case "google":
107
+ return isValidGoogleLanguage(lang);
108
+ default:
109
+ return false;
110
+ }
111
+ }
96
112
  function validateLanguages(languages) {
97
113
  const invalid = languages.filter((lang) => !isValidLanguage(lang));
98
114
  return {
@@ -100,11 +116,111 @@ function validateLanguages(languages) {
100
116
  invalid
101
117
  };
102
118
  }
103
- var SUPPORTED_LANGUAGES, TRANSLATION_CONFIG_SCHEMA;
119
+ function validateLanguagesForProvider(languages, provider) {
120
+ const invalid = languages.filter((lang) => !isValidLanguageForProvider(lang, provider));
121
+ return {
122
+ valid: invalid.length === 0,
123
+ invalid
124
+ };
125
+ }
126
+ function getSupportedLanguages(provider) {
127
+ switch (provider) {
128
+ case "deepl":
129
+ return DEEPL_LANGUAGES;
130
+ case "google":
131
+ return GOOGLE_LANGUAGES;
132
+ default:
133
+ return [];
134
+ }
135
+ }
136
+ var TRANSLATION_PROVIDERS, DEEPL_LANGUAGES, GOOGLE_LANGUAGES, SUPPORTED_LANGUAGES, TRANSLATION_CONFIG_SCHEMA;
104
137
  var init_schema = __esm({
105
138
  "src/translations/core/schema.ts"() {
106
139
  "use strict";
107
- SUPPORTED_LANGUAGES = [
140
+ TRANSLATION_PROVIDERS = ["deepl", "google"];
141
+ DEEPL_LANGUAGES = [
142
+ "ar",
143
+ // Arabic
144
+ "bg",
145
+ // Bulgarian
146
+ "cs",
147
+ // Czech
148
+ "da",
149
+ // Danish
150
+ "de",
151
+ // German
152
+ "el",
153
+ // Greek
154
+ "en",
155
+ // English (unspecified)
156
+ "en_gb",
157
+ // English (British)
158
+ "en_us",
159
+ // English (American)
160
+ "es",
161
+ // Spanish
162
+ "es_419",
163
+ // Spanish (Latin American)
164
+ "et",
165
+ // Estonian
166
+ "fi",
167
+ // Finnish
168
+ "fr",
169
+ // French
170
+ "he",
171
+ // Hebrew (next-gen models only)
172
+ "hu",
173
+ // Hungarian
174
+ "id",
175
+ // Indonesian
176
+ "it",
177
+ // Italian
178
+ "ja",
179
+ // Japanese
180
+ "ko",
181
+ // Korean
182
+ "lt",
183
+ // Lithuanian
184
+ "lv",
185
+ // Latvian
186
+ "nb",
187
+ // Norwegian Bokmål
188
+ "nl",
189
+ // Dutch
190
+ "pl",
191
+ // Polish
192
+ "pt",
193
+ // Portuguese (unspecified)
194
+ "pt_br",
195
+ // Portuguese (Brazilian)
196
+ "pt_pt",
197
+ // Portuguese (excluding Brazilian)
198
+ "ro",
199
+ // Romanian
200
+ "ru",
201
+ // Russian
202
+ "sk",
203
+ // Slovak
204
+ "sl",
205
+ // Slovenian
206
+ "sv",
207
+ // Swedish
208
+ "th",
209
+ // Thai (next-gen models only)
210
+ "tr",
211
+ // Turkish
212
+ "uk",
213
+ // Ukrainian
214
+ "vi",
215
+ // Vietnamese (next-gen models only)
216
+ "zh",
217
+ // Chinese (unspecified)
218
+ "zh_hans",
219
+ // Chinese (simplified)
220
+ "zh_hant"
221
+ // Chinese (traditional)
222
+ ];
223
+ GOOGLE_LANGUAGES = [
108
224
  "af",
109
225
  // Afrikaans
110
226
  "sq",
@@ -115,22 +231,14 @@ var init_schema = __esm({
115
231
  // Arabic
116
232
  "hy",
117
233
  // Armenian
118
- "as",
119
- // Assamese
120
- "ay",
121
- // Aymara
122
234
  "az",
123
235
  // Azerbaijani
124
- "bm",
125
- // Bambara
126
236
  "eu",
127
237
  // Basque
128
238
  "be",
129
239
  // Belarusian
130
240
  "bn",
131
241
  // Bengali
132
- "bho",
133
- // Bhojpuri
134
242
  "bs",
135
243
  // Bosnian
136
244
  "bg",
@@ -139,12 +247,10 @@ var init_schema = __esm({
139
247
  // Catalan
140
248
  "ceb",
141
249
  // Cebuano
142
- "ny",
143
- // Chichewa
144
250
  "zh",
145
- // Chinese (Simplified) - Google uses 'zh' or 'zh-CN'
251
+ // Chinese (Simplified)
146
252
  "zh_cn",
147
- // Chinese (Simplified) - alternative format
253
+ // Chinese (Simplified)
148
254
  "zh_tw",
149
255
  // Chinese (Traditional)
150
256
  "co",
@@ -155,10 +261,6 @@ var init_schema = __esm({
155
261
  // Czech
156
262
  "da",
157
263
  // Danish
158
- "dv",
159
- // Dhivehi
160
- "doi",
161
- // Dogri
162
264
  "nl",
163
265
  // Dutch
164
266
  "en",
@@ -167,14 +269,12 @@ var init_schema = __esm({
167
269
  // Esperanto
168
270
  "et",
169
271
  // Estonian
170
- "ee",
171
- // Ewe
172
- "tl",
173
- // Filipino (Tagalog)
174
272
  "fi",
175
273
  // Finnish
176
274
  "fr",
177
275
  // French
276
+ "fy",
277
+ // Frisian
178
278
  "gl",
179
279
  // Galician
180
280
  "ka",
@@ -183,8 +283,6 @@ var init_schema = __esm({
183
283
  // German
184
284
  "el",
185
285
  // Greek
186
- "gn",
187
- // Guarani
188
286
  "gu",
189
287
  // Gujarati
190
288
  "ht",
@@ -193,8 +291,6 @@ var init_schema = __esm({
193
291
  // Hausa
194
292
  "haw",
195
293
  // Hawaiian
196
- "iw",
197
- // Hebrew (legacy code, 'he' is preferred)
198
294
  "he",
199
295
  // Hebrew
200
296
  "hi",
@@ -207,8 +303,6 @@ var init_schema = __esm({
207
303
  // Icelandic
208
304
  "ig",
209
305
  // Igbo
210
- "ilo",
211
- // Ilocano
212
306
  "id",
213
307
  // Indonesian
214
308
  "ga",
@@ -217,7 +311,7 @@ var init_schema = __esm({
217
311
  // Italian
218
312
  "ja",
219
313
  // Japanese
220
- "jw",
314
+ "jv",
221
315
  // Javanese
222
316
  "kn",
223
317
  // Kannada
@@ -227,16 +321,10 @@ var init_schema = __esm({
227
321
  // Khmer
228
322
  "rw",
229
323
  // Kinyarwanda
230
- "gom",
231
- // Konkani
232
324
  "ko",
233
325
  // Korean
234
- "kri",
235
- // Krio
236
326
  "ku",
237
- // Kurdish (Kurmanji)
238
- "ckb",
239
- // Kurdish (Sorani)
327
+ // Kurdish
240
328
  "ky",
241
329
  // Kyrgyz
242
330
  "lo",
@@ -245,18 +333,12 @@ var init_schema = __esm({
245
333
  // Latin
246
334
  "lv",
247
335
  // Latvian
248
- "ln",
249
- // Lingala
250
336
  "lt",
251
337
  // Lithuanian
252
- "lg",
253
- // Luganda
254
338
  "lb",
255
339
  // Luxembourgish
256
340
  "mk",
257
341
  // Macedonian
258
- "mai",
259
- // Maithili
260
342
  "mg",
261
343
  // Malagasy
262
344
  "ms",
@@ -269,10 +351,6 @@ var init_schema = __esm({
269
351
  // Maori
270
352
  "mr",
271
353
  // Marathi
272
- "mni",
273
- // Meiteilon (Manipuri)
274
- "lus",
275
- // Mizo
276
354
  "mn",
277
355
  // Mongolian
278
356
  "my",
@@ -281,10 +359,10 @@ var init_schema = __esm({
281
359
  // Nepali
282
360
  "no",
283
361
  // Norwegian
362
+ "ny",
363
+ // Nyanja (Chichewa)
284
364
  "or",
285
- // Odia
286
- "om",
287
- // Oromo
365
+ // Odia (Oriya)
288
366
  "ps",
289
367
  // Pashto
290
368
  "fa",
@@ -297,18 +375,14 @@ var init_schema = __esm({
297
375
  // Portuguese (Brazil)
298
376
  "pa",
299
377
  // Punjabi
300
- "qu",
301
- // Quechua
302
378
  "ro",
303
379
  // Romanian
304
380
  "ru",
305
381
  // Russian
306
382
  "sm",
307
383
  // Samoan
308
- "sa",
309
- // Sanskrit
310
384
  "gd",
311
- // Scottish Gaelic
385
+ // Scots Gaelic
312
386
  "sr",
313
387
  // Serbian
314
388
  "st",
@@ -318,7 +392,7 @@ var init_schema = __esm({
318
392
  "sd",
319
393
  // Sindhi
320
394
  "si",
321
- // Sinhala
395
+ // Sinhala (Sinhalese)
322
396
  "sk",
323
397
  // Slovak
324
398
  "sl",
@@ -333,6 +407,8 @@ var init_schema = __esm({
333
407
  // Swahili
334
408
  "sv",
335
409
  // Swedish
410
+ "tl",
411
+ // Tagalog (Filipino)
336
412
  "tg",
337
413
  // Tajik
338
414
  "ta",
@@ -343,16 +419,10 @@ var init_schema = __esm({
343
419
  // Telugu
344
420
  "th",
345
421
  // Thai
346
- "ti",
347
- // Tigrinya
348
- "ts",
349
- // Tsonga
350
422
  "tr",
351
423
  // Turkish
352
424
  "tk",
353
425
  // Turkmen
354
- "ak",
355
- // Twi
356
426
  "uk",
357
427
  // Ukrainian
358
428
  "ur",
@@ -374,6 +444,9 @@ var init_schema = __esm({
374
444
  "zu"
375
445
  // Zulu
376
446
  ];
447
+ SUPPORTED_LANGUAGES = Array.from(
448
+ /* @__PURE__ */ new Set([...DEEPL_LANGUAGES, ...GOOGLE_LANGUAGES])
449
+ ).sort();
377
450
  TRANSLATION_CONFIG_SCHEMA = {
378
451
  $schema: "http://json-schema.org/draft-07/schema#",
379
452
  title: "Translation Configuration",
@@ -405,6 +478,12 @@ var init_schema = __esm({
405
478
  type: "string",
406
479
  description: "Path to output TypeScript types file",
407
480
  default: "src/types/i18nTypes.ts"
481
+ },
482
+ provider: {
483
+ type: "string",
484
+ description: "Translation provider to use (deepl or google)",
485
+ enum: TRANSLATION_PROVIDERS,
486
+ default: "deepl"
408
487
  }
409
488
  },
410
489
  required: ["translationsPath", "languages", "sourceLanguage"],
@@ -580,7 +659,7 @@ function preserveVariables(text) {
580
659
  const variableMap = /* @__PURE__ */ new Map();
581
660
  let placeholderIndex = 0;
582
661
  const textWithPlaceholders = text.replace(/\{\{([^}]+)\}\}/g, (match) => {
583
- const placeholder = `__PLACEHOLDER_${placeholderIndex}__`;
662
+ const placeholder = `XXX_${placeholderIndex}_XXX`;
584
663
  variableMap.set(placeholder, match);
585
664
  placeholderIndex++;
586
665
  return placeholder;
@@ -1185,7 +1264,7 @@ async function manageTranslations(projectRoot = process.cwd(), options = {}) {
1185
1264
  if (!fs5.existsSync(sourceLangPath)) {
1186
1265
  console.log(`\u26A0\uFE0F Source language directory not found: ${sourceLangPath}`);
1187
1266
  console.log("Please add translation files to the source language directory.\n");
1188
- return;
1267
+ return false;
1189
1268
  }
1190
1269
  console.log("\u{1F50D} Validating translations...\n");
1191
1270
  const validationResult = validateTranslations(projectRoot);
@@ -1249,6 +1328,11 @@ async function manageTranslations(projectRoot = process.cwd(), options = {}) {
1249
1328
  console.log("\n\u2705 All systems ready!");
1250
1329
  }
1251
1330
  console.log("=====\n");
1331
+ if (autoFill && !dryRun && apiKey) {
1332
+ const finalValidation = validateTranslations(projectRoot);
1333
+ return finalValidation.valid;
1334
+ }
1335
+ return validationResult.valid;
1252
1336
  }
1253
1337
 
1254
1338
  // src/translations/index.ts
@@ -1256,11 +1340,14 @@ init_schema();
1256
1340
  init_types();
1257
1341
  init_utils();
1258
1342
  export {
1343
+ DEEPL_LANGUAGES,
1259
1344
  DEFAULT_CONFIG,
1260
1345
  DEFAULT_LANGUAGES,
1346
+ GOOGLE_LANGUAGES,
1261
1347
  GoogleTranslateProvider,
1262
1348
  SUPPORTED_LANGUAGES,
1263
1349
  TRANSLATION_CONFIG_SCHEMA,
1350
+ TRANSLATION_PROVIDERS,
1264
1351
  addTranslationKey,
1265
1352
  addTranslationKeys,
1266
1353
  autoFillTranslations,
@@ -1272,11 +1359,15 @@ export {
1272
1359
  getAvailableLanguages,
1273
1360
  getMissingForLanguage,
1274
1361
  getNamespaces,
1362
+ getSupportedLanguages,
1275
1363
  getTranslationProvider,
1276
1364
  hasInterpolation,
1277
1365
  initTranslations,
1278
1366
  initTranslationsInteractive,
1367
+ isValidDeepLLanguage,
1368
+ isValidGoogleLanguage,
1279
1369
  isValidLanguage,
1370
+ isValidLanguageForProvider,
1280
1371
  loadConfig,
1281
1372
  manageTranslations,
1282
1373
  readTranslations,
@@ -1286,6 +1377,7 @@ export {
1286
1377
  translateBatch,
1287
1378
  translateText,
1288
1379
  validateLanguages,
1380
+ validateLanguagesForProvider,
1289
1381
  validateTranslations,
1290
1382
  validateVariables,
1291
1383
  writeTranslation