@scoutello/i18n-magic 0.64.0 → 0.66.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 (58) hide show
  1. package/README.md +13 -7
  2. package/dist/cli.js +20 -15
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/check-missing.d.ts +11 -1
  5. package/dist/commands/check-missing.d.ts.map +1 -1
  6. package/dist/commands/check-missing.js +56 -96
  7. package/dist/commands/check-missing.js.map +1 -1
  8. package/dist/commands/replace.d.ts +6 -0
  9. package/dist/commands/replace.d.ts.map +1 -1
  10. package/dist/commands/replace.js +48 -29
  11. package/dist/commands/replace.js.map +1 -1
  12. package/dist/commands/scan.d.ts.map +1 -1
  13. package/dist/commands/scan.js +114 -80
  14. package/dist/commands/scan.js.map +1 -1
  15. package/dist/commands/sync-locales.d.ts.map +1 -1
  16. package/dist/commands/sync-locales.js +90 -50
  17. package/dist/commands/sync-locales.js.map +1 -1
  18. package/dist/index.d.ts +2 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/languges.d.ts.map +1 -1
  23. package/dist/lib/languges.js +20 -0
  24. package/dist/lib/languges.js.map +1 -1
  25. package/dist/lib/locale-storage.d.ts +7 -0
  26. package/dist/lib/locale-storage.d.ts.map +1 -0
  27. package/dist/lib/locale-storage.js +49 -0
  28. package/dist/lib/locale-storage.js.map +1 -0
  29. package/dist/lib/translation-response.d.ts +8 -0
  30. package/dist/lib/translation-response.d.ts.map +1 -0
  31. package/dist/lib/translation-response.js +43 -0
  32. package/dist/lib/translation-response.js.map +1 -0
  33. package/dist/lib/types.d.ts +1 -1
  34. package/dist/lib/types.d.ts.map +1 -1
  35. package/dist/lib/update-translation-key.d.ts +16 -0
  36. package/dist/lib/update-translation-key.d.ts.map +1 -0
  37. package/dist/lib/update-translation-key.js +67 -0
  38. package/dist/lib/update-translation-key.js.map +1 -0
  39. package/dist/lib/utils.d.ts +2 -0
  40. package/dist/lib/utils.d.ts.map +1 -1
  41. package/dist/lib/utils.js +69 -51
  42. package/dist/lib/utils.js.map +1 -1
  43. package/dist/mcp-server.js +28 -79
  44. package/dist/mcp-server.js.map +1 -1
  45. package/package.json +5 -9
  46. package/src/cli.ts +26 -18
  47. package/src/commands/check-missing.ts +83 -137
  48. package/src/commands/replace.ts +81 -43
  49. package/src/commands/scan.ts +130 -108
  50. package/src/commands/sync-locales.ts +125 -86
  51. package/src/index.ts +6 -1
  52. package/src/lib/languges.ts +20 -0
  53. package/src/lib/locale-storage.ts +76 -0
  54. package/src/lib/translation-response.ts +59 -0
  55. package/src/lib/types.ts +1 -1
  56. package/src/lib/update-translation-key.ts +119 -0
  57. package/src/lib/utils.ts +92 -76
  58. package/src/mcp-server.ts +31 -112
@@ -1,95 +1,129 @@
1
- import { checkAllKeysExist, findExistingTranslations, getMissingKeys, getTextInput, loadLocalesFile, translateKey, writeLocalesFile, } from "../lib/utils.js";
1
+ import { getKeysWithNamespaces, getPureKey, getTextInput, loadLocalesFile, translateKey, writeLocalesFile, } from "../lib/utils.js";
2
2
  import { findUnusedKeys, removeUnusedKeys } from "./clean.js";
3
+ const fileKey = (locale, namespace) => JSON.stringify([locale, namespace]);
3
4
  export const translateMissing = async (config) => {
4
- const { loadPath, savePath, defaultLocale, namespaces, locales, context, openai, disableTranslationDuringScan, autoClear, } = config;
5
- if (autoClear) {
6
- console.log("🧹 Checking for unused translations before scanning...");
7
- const report = await findUnusedKeys(config);
8
- if (report.unusedCount > 0) {
9
- await removeUnusedKeys(config);
10
- console.log("");
5
+ const { loadPath, savePath, defaultLocale, defaultNamespace, namespaces, locales, context, openai, disableTranslationDuringScan, autoClear, } = config;
6
+ const activeLocales = disableTranslationDuringScan
7
+ ? [defaultLocale]
8
+ : locales;
9
+ const keysWithNamespaces = await getKeysWithNamespaces({
10
+ globPatterns: config.globPatterns,
11
+ defaultNamespace,
12
+ });
13
+ const expectedByNamespace = Object.fromEntries(namespaces.map((namespace) => [namespace, new Set()]));
14
+ for (const { key, namespaces: keyNamespaces } of keysWithNamespaces) {
15
+ for (const namespace of keyNamespaces) {
16
+ if (!expectedByNamespace[namespace])
17
+ continue;
18
+ const pureKey = getPureKey(key, namespace, namespace === defaultNamespace);
19
+ const expectedKey = pureKey || (!key.includes(":") ? key : null);
20
+ if (expectedKey !== null)
21
+ expectedByNamespace[namespace].add(expectedKey);
11
22
  }
12
- else {
13
- console.log("✅ No unused keys found.\n");
23
+ }
24
+ const stagedFiles = new Map();
25
+ await Promise.all(activeLocales.flatMap((locale) => namespaces.map(async (namespace) => {
26
+ const translations = await loadLocalesFile(loadPath, locale, namespace, { silent: true });
27
+ stagedFiles.set(fileKey(locale, namespace), { ...translations });
28
+ })));
29
+ const changedFiles = new Set();
30
+ const missingDefaultKeys = new Map();
31
+ for (const namespace of namespaces) {
32
+ const translations = stagedFiles.get(fileKey(defaultLocale, namespace));
33
+ for (const key of expectedByNamespace[namespace]) {
34
+ if (!Object.hasOwn(translations, key)) {
35
+ missingDefaultKeys.get(key)?.add(namespace) ??
36
+ missingDefaultKeys.set(key, new Set([namespace]));
37
+ }
14
38
  }
15
39
  }
16
- const newKeys = await getMissingKeys(config);
17
- if (newKeys.length === 0) {
18
- console.log("No new keys found.");
19
- await checkAllKeysExist(config);
20
- return;
40
+ if (missingDefaultKeys.size > 0) {
41
+ console.log(`${missingDefaultKeys.size} keys are missing. Please provide the values for the following keys in ${defaultLocale}:`);
42
+ }
43
+ for (const [key, keyNamespaces] of missingDefaultKeys) {
44
+ let value;
45
+ for (const namespace of namespaces) {
46
+ const translations = stagedFiles.get(fileKey(defaultLocale, namespace));
47
+ if (Object.hasOwn(translations, key)) {
48
+ value = translations[key];
49
+ break;
50
+ }
51
+ }
52
+ value ?? (value = await getTextInput(key, Array.from(keyNamespaces)));
53
+ for (const namespace of keyNamespaces) {
54
+ stagedFiles.get(fileKey(defaultLocale, namespace))[key] = value;
55
+ changedFiles.add(fileKey(defaultLocale, namespace));
56
+ }
21
57
  }
22
- console.log(`${newKeys.length} keys are missing. Please provide the values for the following keys in ${defaultLocale}:`);
23
- const newKeysWithDefaultLocale = [];
24
- // Check for existing translations in parallel
25
- const keysList = newKeys.map((k) => k.key);
26
- const existingTranslationResults = await findExistingTranslations(keysList, namespaces, defaultLocale, loadPath);
27
- const reusedKeys = [];
28
- for (const newKey of newKeys) {
29
- const existingValue = existingTranslationResults[newKey.key];
30
- let answer;
31
- // Use explicit null check instead of truthy check to handle empty string values
32
- if (existingValue !== null) {
33
- reusedKeys.push(newKey.key);
34
- answer = existingValue;
58
+ await Promise.all(activeLocales
59
+ .filter((locale) => locale !== defaultLocale)
60
+ .map(async (locale) => {
61
+ const missingByKey = new Map();
62
+ for (const namespace of namespaces) {
63
+ const translations = stagedFiles.get(fileKey(locale, namespace));
64
+ for (const key of expectedByNamespace[namespace]) {
65
+ if (!Object.hasOwn(translations, key)) {
66
+ missingByKey.get(key)?.add(namespace) ??
67
+ missingByKey.set(key, new Set([namespace]));
68
+ }
69
+ }
35
70
  }
36
- else {
37
- answer = await getTextInput(newKey.key, newKey.namespaces);
71
+ const reused = {};
72
+ const keysToTranslate = {};
73
+ for (const key of missingByKey.keys()) {
74
+ let existingValue;
75
+ for (const namespace of namespaces) {
76
+ const translations = stagedFiles.get(fileKey(locale, namespace));
77
+ if (Object.hasOwn(translations, key)) {
78
+ existingValue = translations[key];
79
+ break;
80
+ }
81
+ }
82
+ if (existingValue !== undefined) {
83
+ reused[key] = existingValue;
84
+ continue;
85
+ }
86
+ const sourceNamespace = Array.from(missingByKey.get(key))[0];
87
+ const sourceTranslations = stagedFiles.get(fileKey(defaultLocale, sourceNamespace));
88
+ keysToTranslate[key] = sourceTranslations[key];
38
89
  }
39
- newKeysWithDefaultLocale.push({
40
- key: newKey.key,
41
- namespace: newKey.namespace,
42
- namespaces: newKey.namespaces,
43
- value: answer,
90
+ const translated = await translateKey({
91
+ inputLanguage: defaultLocale,
92
+ outputLanguage: locale,
93
+ context,
94
+ object: keysToTranslate,
95
+ openai,
96
+ model: config.model,
44
97
  });
98
+ const resolvedValues = { ...reused, ...translated };
99
+ for (const [key, keyNamespaces] of missingByKey) {
100
+ for (const namespace of keyNamespaces) {
101
+ stagedFiles.get(fileKey(locale, namespace))[key] =
102
+ resolvedValues[key];
103
+ changedFiles.add(fileKey(locale, namespace));
104
+ }
105
+ }
106
+ }));
107
+ for (const locale of activeLocales) {
108
+ for (const namespace of namespaces) {
109
+ const key = fileKey(locale, namespace);
110
+ if (!changedFiles.has(key))
111
+ continue;
112
+ await writeLocalesFile(savePath, locale, namespace, stagedFiles.get(key));
113
+ console.log(` 📝 Updated ${locale}/${namespace}.json`);
114
+ }
45
115
  }
46
- // Batch log reused keys
47
- if (reusedKeys.length > 0) {
48
- console.log(`🔄 Auto-reused ${reusedKeys.length} existing values from other namespaces`);
116
+ if (autoClear) {
117
+ console.log("🧹 Checking for unused translations after scanning...");
118
+ const report = await findUnusedKeys(config);
119
+ if (report.unusedCount > 0)
120
+ await removeUnusedKeys(config);
49
121
  }
50
- const newKeysObject = newKeysWithDefaultLocale.reduce((prev, next) => {
51
- prev[next.key] = next.value;
52
- return prev;
53
- }, {});
54
- const allLocales = disableTranslationDuringScan ? [defaultLocale] : locales;
55
- // Batch translate for all non-default locales in parallel
56
- const translationCache = {
57
- [defaultLocale]: newKeysObject,
58
- };
59
- const nonDefaultLocales = allLocales.filter((l) => l !== defaultLocale);
60
- if (nonDefaultLocales.length > 0) {
61
- await Promise.all(nonDefaultLocales.map(async (locale) => {
62
- const translatedValues = await translateKey({
63
- inputLanguage: defaultLocale,
64
- outputLanguage: locale,
65
- context,
66
- object: newKeysObject,
67
- openai,
68
- model: config.model,
69
- });
70
- translationCache[locale] = translatedValues;
71
- }));
122
+ if (changedFiles.size === 0) {
123
+ console.log("No missing translations found.");
72
124
  }
73
- // Process all locale/namespace combinations in parallel
74
- const writeResults = [];
75
- await Promise.all(allLocales.flatMap((locale) => namespaces.map(async (namespace) => {
76
- const existingKeys = await loadLocalesFile(loadPath, locale, namespace);
77
- const relevantKeys = newKeysWithDefaultLocale.filter((key) => key.namespaces?.includes(namespace));
78
- if (relevantKeys.length === 0) {
79
- return;
80
- }
81
- const translatedValues = translationCache[locale];
82
- for (const key of relevantKeys) {
83
- existingKeys[key.key] = translatedValues[key.key];
84
- }
85
- await writeLocalesFile(savePath, locale, namespace, existingKeys);
86
- writeResults.push({ locale, namespace, keyCount: relevantKeys.length });
87
- })));
88
- // Log where keys were written
89
- for (const { locale, namespace, keyCount } of writeResults) {
90
- console.log(` 📝 Wrote ${keyCount} key(s) to ${locale}/${namespace}.json`);
125
+ else {
126
+ console.log(`Successfully updated ${changedFiles.size} locale file(s).`);
91
127
  }
92
- await checkAllKeysExist(config);
93
- console.log(`Successfully translated ${newKeys.length} keys.`);
94
128
  };
95
129
  //# sourceMappingURL=scan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync-locales.d.ts","sourceRoot":"","sources":["../../src/commands/sync-locales.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAcpD,eAAO,MAAM,WAAW,GAAU,QAAQ,aAAa,kBAwXtD,CAAA"}
1
+ {"version":3,"file":"sync-locales.d.ts","sourceRoot":"","sources":["../../src/commands/sync-locales.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAapD,eAAO,MAAM,WAAW,GAAU,QAAQ,aAAa,kBAiatD,CAAA"}
@@ -1,8 +1,7 @@
1
- import fs from "node:fs";
2
1
  import chalk from "chalk";
3
2
  import cliProgress from "cli-progress";
4
3
  import { languages } from "../lib/languges.js";
5
- import { findExistingTranslations, loadLocalesFile, TranslationError, translateKey, writeLocalesFile, } from "../lib/utils.js";
4
+ import { loadLocalesFile, TranslationError, translateKey, writeLocalesFile, } from "../lib/utils.js";
6
5
  const getLanguageLabel = (locale) => {
7
6
  const lang = languages.find((l) => l.value === locale);
8
7
  return lang?.label || locale;
@@ -19,66 +18,90 @@ export const syncLocales = async (config) => {
19
18
  // Track results for each locale
20
19
  const localeResults = {};
21
20
  for (const locale of localesToProcess) {
22
- localeResults[locale] = { status: "pending", translated: 0, reused: 0 };
21
+ localeResults[locale] = {
22
+ status: "pending",
23
+ translated: 0,
24
+ translationCompleted: 0,
25
+ translationTotal: 0,
26
+ reused: 0,
27
+ };
23
28
  }
24
- // Create a single progress bar for overall progress
25
- const progressBar = new cliProgress.SingleBar({
26
- format: ` {bar} {percentage}% | {current}/{total} | {lang} {status}`,
29
+ const stagedFiles = new Map();
30
+ const progressBars = new cliProgress.MultiBar({
31
+ format: ` {label} {bar} {percentage}% | {value}/{total} | {duration_formatted} | {status}`,
27
32
  barCompleteChar: chalk.green("█"),
28
33
  barIncompleteChar: chalk.gray("░"),
29
34
  hideCursor: true,
30
35
  clearOnComplete: false,
36
+ emptyOnZero: true,
37
+ etaAsynchronousUpdate: true,
31
38
  barsize: 30,
32
39
  }, cliProgress.Presets.shades_classic);
33
- progressBar.start(localesToProcess.length, 0, {
40
+ const localeProgressBar = progressBars.create(localesToProcess.length, 0, {
41
+ label: "Languages ",
34
42
  status: "",
35
- current: 0,
36
- lang: "",
43
+ });
44
+ const translationProgressBar = progressBars.create(0, 0, {
45
+ label: "Translations",
46
+ status: "finding keys to translate...",
37
47
  });
38
48
  // Suppress console.log during progress bar display
39
49
  const originalConsoleLog = console.log;
40
50
  const suppressedLog = () => { };
41
51
  try {
42
- // Helper to ensure a locale/namespace file exists before we add keys
43
- const ensureLocaleNamespaceFile = async (locale, namespace) => {
44
- if (typeof savePath === "string") {
45
- const filePath = savePath
46
- .replace("{{lng}}", locale)
47
- .replace("{{ns}}", namespace);
48
- if (!fs.existsSync(filePath)) {
49
- await writeLocalesFile(savePath, locale, namespace, {});
50
- }
51
- }
52
- };
53
- // Ensure all default-locale namespace files exist first
54
- await Promise.all(namespaces.map((namespace) => ensureLocaleNamespaceFile(defaultLocale, namespace)));
55
52
  // Process locales in parallel batches
56
53
  let completedCount = 0;
57
54
  const currentlyProcessing = new Set();
58
- // Helper to update progress bar with currently processing languages
55
+ // Helper to update progress bars with currently processing languages
59
56
  const updateProgressDisplay = () => {
60
57
  const processingArray = Array.from(currentlyProcessing);
61
- const langs = processingArray
62
- .slice(0, 3)
63
- .map((l) => getLanguageLabel(l).substring(0, 8))
64
- .join(", ");
65
- const status = processingArray.length > 0 ? `processing ${langs}...` : "";
66
- progressBar.update(completedCount, {
67
- status,
68
- current: completedCount,
69
- lang: "",
58
+ const localeStatus = processingArray.length > 0
59
+ ? `processing ${processingArray.join(", ")}`
60
+ : "";
61
+ localeProgressBar.update(completedCount, {
62
+ label: "Languages ",
63
+ status: localeStatus,
64
+ });
65
+ const translationTotals = localesToProcess.reduce((totals, locale) => {
66
+ const result = localeResults[locale];
67
+ totals.completed += result.translationCompleted;
68
+ totals.total += result.translationTotal;
69
+ return totals;
70
+ }, { completed: 0, total: 0 });
71
+ const translationTotal = translationTotals.total;
72
+ const translationCurrent = translationTotal > 0
73
+ ? Math.min(translationTotals.completed, translationTotal)
74
+ : 0;
75
+ const activeTranslations = localesToProcess.filter((locale) => {
76
+ const result = localeResults[locale];
77
+ return (currentlyProcessing.has(locale) &&
78
+ result.translationTotal > 0 &&
79
+ result.translationCompleted < result.translationTotal);
80
+ });
81
+ const translationStatus = activeTranslations.length > 0
82
+ ? `translating ${activeTranslations
83
+ .map((locale) => {
84
+ const result = localeResults[locale];
85
+ return `${locale} ${result.translationCompleted}/${result.translationTotal}`;
86
+ })
87
+ .join(", ")}`
88
+ : processingArray.length > 0
89
+ ? "waiting for translation work..."
90
+ : translationTotal > 0
91
+ ? "translations complete"
92
+ : "finding keys to translate...";
93
+ translationProgressBar.setTotal(translationTotal);
94
+ translationProgressBar.update(translationCurrent, {
95
+ label: "Translations",
96
+ status: translationStatus,
70
97
  });
71
98
  };
72
99
  // Process a single locale
73
100
  const processLocale = async (locale) => {
74
- const langLabel = getLanguageLabel(locale);
75
- const shortLang = langLabel.substring(0, 10).padEnd(10);
76
101
  localeResults[locale].status = "processing";
77
102
  currentlyProcessing.add(locale);
78
103
  updateProgressDisplay();
79
104
  try {
80
- // Ensure all namespace files for this locale exist
81
- await Promise.all(namespaces.map((namespace) => ensureLocaleNamespaceFile(locale, namespace)));
82
105
  // Collect all missing keys for this locale across all namespaces
83
106
  const allMissingKeys = {};
84
107
  const namespaceKeys = {};
@@ -97,7 +120,7 @@ export const syncLocales = async (config) => {
97
120
  const { namespace, defaultLocaleKeys, localeKeys } = result;
98
121
  namespaceKeys[namespace] = localeKeys;
99
122
  for (const [key, value] of Object.entries(defaultLocaleKeys)) {
100
- if (!localeKeys[key]) {
123
+ if (!Object.hasOwn(localeKeys, key)) {
101
124
  if (allMissingKeys[key]) {
102
125
  allMissingKeys[key].namespaces.push(namespace);
103
126
  }
@@ -121,11 +144,10 @@ export const syncLocales = async (config) => {
121
144
  // Check for existing translations
122
145
  const keysToTranslate = {};
123
146
  const existingTranslations = {};
124
- const existingTranslationResults = await findExistingTranslations(missingKeysList, namespaces, locale, loadPath, { silent: true });
125
147
  for (const key of missingKeysList) {
126
- const existingValue = existingTranslationResults[key];
127
- if (existingValue !== null) {
128
- existingTranslations[key] = existingValue;
148
+ const existingNamespace = namespaces.find((namespace) => Object.hasOwn(namespaceKeys[namespace], key));
149
+ if (existingNamespace !== undefined) {
150
+ existingTranslations[key] = namespaceKeys[existingNamespace][key];
129
151
  localeResults[locale].reused++;
130
152
  }
131
153
  else {
@@ -136,6 +158,11 @@ export const syncLocales = async (config) => {
136
158
  // Translate if needed
137
159
  if (Object.keys(keysToTranslate).length > 0) {
138
160
  try {
161
+ localeResults[locale].status = "translating";
162
+ localeResults[locale].translationCompleted = 0;
163
+ localeResults[locale].translationTotal =
164
+ Object.keys(keysToTranslate).length;
165
+ updateProgressDisplay();
139
166
  translatedValues = await translateKey({
140
167
  inputLanguage: defaultLocale,
141
168
  outputLanguage: locale,
@@ -144,9 +171,13 @@ export const syncLocales = async (config) => {
144
171
  openai,
145
172
  model: config.model,
146
173
  onProgress: (completed, total) => {
147
- // Progress callback still works but doesn't update UI during parallel processing
174
+ localeResults[locale].translationCompleted = completed;
175
+ localeResults[locale].translationTotal = total;
176
+ updateProgressDisplay();
148
177
  },
149
178
  });
179
+ localeResults[locale].translationCompleted =
180
+ Object.keys(keysToTranslate).length;
150
181
  localeResults[locale].translated =
151
182
  Object.keys(translatedValues).length;
152
183
  }
@@ -162,20 +193,23 @@ export const syncLocales = async (config) => {
162
193
  }
163
194
  // Combine and save
164
195
  const allTranslations = { ...existingTranslations, ...translatedValues };
165
- await Promise.all(namespaces.map(async (namespace) => {
196
+ for (const namespace of namespaces) {
166
197
  let hasChanges = false;
167
198
  const updatedKeys = { ...namespaceKeys[namespace] };
168
199
  for (const key of missingKeysList) {
169
200
  if (allMissingKeys[key].namespaces.includes(namespace)) {
170
- const translation = allTranslations[key] || "";
171
- updatedKeys[key] = translation;
201
+ updatedKeys[key] = allTranslations[key];
172
202
  hasChanges = true;
173
203
  }
174
204
  }
175
205
  if (hasChanges) {
176
- await writeLocalesFile(savePath, locale, namespace, updatedKeys);
206
+ stagedFiles.set(JSON.stringify([locale, namespace]), {
207
+ locale,
208
+ namespace,
209
+ translations: updatedKeys,
210
+ });
177
211
  }
178
- }));
212
+ }
179
213
  localeResults[locale].status = "done";
180
214
  currentlyProcessing.delete(locale);
181
215
  completedCount++;
@@ -199,7 +233,14 @@ export const syncLocales = async (config) => {
199
233
  }
200
234
  // Restore console.log
201
235
  console.log = originalConsoleLog;
202
- progressBar.stop();
236
+ progressBars.stop();
237
+ const errorLocales = localesToProcess.filter((locale) => localeResults[locale].status === "error");
238
+ if (errorLocales.length > 0) {
239
+ throw new TranslationError(`Sync failed for ${errorLocales.length} locale(s); no translations were written.`);
240
+ }
241
+ for (const { locale, namespace, translations } of stagedFiles.values()) {
242
+ await writeLocalesFile(savePath, locale, namespace, translations);
243
+ }
203
244
  // Print summary
204
245
  console.log("");
205
246
  console.log(chalk.green("✨ Sync complete!\n"));
@@ -218,7 +259,6 @@ export const syncLocales = async (config) => {
218
259
  console.log(chalk.dim(" Results by language:\n"));
219
260
  // Group results into columns for compact display
220
261
  const doneLocales = localesToProcess.filter((l) => localeResults[l].status === "done");
221
- const errorLocales = localesToProcess.filter((l) => localeResults[l].status === "error");
222
262
  // Show successful languages in a compact grid
223
263
  if (doneLocales.length > 0) {
224
264
  const columns = 3;
@@ -261,7 +301,7 @@ export const syncLocales = async (config) => {
261
301
  catch (error) {
262
302
  // Restore console.log
263
303
  console.log = originalConsoleLog;
264
- progressBar.stop();
304
+ progressBars.stop();
265
305
  if (error instanceof TranslationError) {
266
306
  throw error;
267
307
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync-locales.js","sourceRoot":"","sources":["../../src/commands/sync-locales.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-locales.js","sourceRoot":"","sources":["../../src/commands/sync-locales.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export { checkMissing } from "./commands/check-missing.js";
1
+ export { checkMissing, collectMissingTranslations, MissingTranslationsError, } from "./commands/check-missing.js";
2
+ export type { MissingTranslationsReport } from "./commands/check-missing.js";
2
3
  export { removeUnusedKeys } from "./commands/clean.js";
3
4
  export { replaceTranslation } from "./commands/replace.js";
4
5
  export { translateMissing } from "./commands/scan.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAGxD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAI9D,YAAY,EACV,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,6BAA6B,CAAA;AACpC,YAAY,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAGxD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAI9D,YAAY,EACV,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,gBAAgB,CAAA"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // Export command functions for programmatic usage
2
- export { checkMissing } from "./commands/check-missing.js";
2
+ export { checkMissing, collectMissingTranslations, MissingTranslationsError, } from "./commands/check-missing.js";
3
3
  export { removeUnusedKeys } from "./commands/clean.js";
4
4
  export { replaceTranslation } from "./commands/replace.js";
5
5
  export { translateMissing } from "./commands/scan.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAExD,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAExD,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"languges.d.ts","sourceRoot":"","sources":["../../src/lib/languges.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;GAkJrB,CAAA"}
1
+ {"version":3,"file":"languges.d.ts","sourceRoot":"","sources":["../../src/lib/languges.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;GAsKrB,CAAA"}
@@ -19,11 +19,21 @@ export const languages = [
19
19
  name: "French",
20
20
  value: "fr",
21
21
  },
22
+ {
23
+ label: "Dansk",
24
+ name: "Danish",
25
+ value: "da",
26
+ },
22
27
  {
23
28
  label: "Dansk",
24
29
  name: "Danish",
25
30
  value: "dk",
26
31
  },
32
+ {
33
+ label: "中文",
34
+ name: "Chinese",
35
+ value: "zh",
36
+ },
27
37
  {
28
38
  label: "中文",
29
39
  name: "Chinese",
@@ -144,5 +154,15 @@ export const languages = [
144
154
  name: "Thai",
145
155
  value: "th",
146
156
  },
157
+ {
158
+ label: "العربية",
159
+ name: "Arabic",
160
+ value: "ar",
161
+ },
162
+ {
163
+ label: "فارسی",
164
+ name: "Persian",
165
+ value: "fa",
166
+ },
147
167
  ];
148
168
  //# sourceMappingURL=languges.js.map