@scoutello/i18n-magic 0.29.1 ā 0.32.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/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +3 -2
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/sync-locales.d.ts.map +1 -1
- package/dist/commands/sync-locales.js +101 -42
- package/dist/commands/sync-locales.js.map +1 -1
- package/dist/lib/utils.d.ts +1 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +48 -11
- package/dist/lib/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/scan.ts +4 -3
- package/src/commands/sync-locales.ts +137 -61
- package/src/lib/utils.ts +71 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAYpD,eAAO,MAAM,gBAAgB,GAAU,QAAQ,aAAa,
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAYpD,eAAO,MAAM,gBAAgB,GAAU,QAAQ,aAAa,kBA+G3D,CAAA"}
|
package/dist/commands/scan.js
CHANGED
|
@@ -25,11 +25,12 @@ export const translateMissing = async (config) => {
|
|
|
25
25
|
answer = existingValue;
|
|
26
26
|
}
|
|
27
27
|
else {
|
|
28
|
-
answer = await getTextInput(newKey.key);
|
|
28
|
+
answer = await getTextInput(newKey.key, newKey.namespaces);
|
|
29
29
|
}
|
|
30
30
|
newKeysWithDefaultLocale.push({
|
|
31
31
|
key: newKey.key,
|
|
32
32
|
namespace: newKey.namespace,
|
|
33
|
+
namespaces: newKey.namespaces,
|
|
33
34
|
value: answer,
|
|
34
35
|
});
|
|
35
36
|
}
|
|
@@ -55,7 +56,7 @@ export const translateMissing = async (config) => {
|
|
|
55
56
|
}
|
|
56
57
|
for (const namespace of namespaces) {
|
|
57
58
|
const existingKeys = await loadLocalesFile(loadPath, locale, namespace);
|
|
58
|
-
const relevantKeys = newKeysWithDefaultLocale.filter((key) => key.namespace
|
|
59
|
+
const relevantKeys = newKeysWithDefaultLocale.filter((key) => key.namespaces?.includes(namespace));
|
|
59
60
|
if (relevantKeys.length === 0) {
|
|
60
61
|
continue;
|
|
61
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,uBAAuB,EACvB,eAAe,EACf,YAAY,EACZ,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAqB,EAAE,EAAE;IAC9D,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,UAAU,EACV,OAAO,EACP,OAAO,EACP,MAAM,EACN,kBAAkB,EAClB,SAAS,GACV,GAAG,MAAM,CAAA;IAEV,kDAAkD;IAClD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAA;QACtE,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAA;QAC9B,OAAO,CAAC,GAAG,CACT,oEAAoE,CACrE,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAA;IAE5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QAEjC,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAE/B,OAAM;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CACT,GAAG,OAAO,CAAC,MAAM,0EAA0E,aAAa,GAAG,CAC5G,CAAA;IAED,MAAM,wBAAwB,GAAG,EAAE,CAAA;IAEnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,8CAA8C;QAC9C,MAAM,aAAa,GAAG,MAAM,uBAAuB,CACjD,MAAM,CAAC,GAAG,EACV,UAAU,EACV,aAAa,EACb,QAAQ,CACT,CAAA;QAED,IAAI,MAAc,CAAA;QAClB,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CACT,uCAAuC,MAAM,CAAC,GAAG,OAAO,aAAa,GAAG,CACzE,CAAA;YACD,MAAM,GAAG,aAAa,CAAA;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;
|
|
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":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"sync-locales.d.ts","sourceRoot":"","sources":["../../src/commands/sync-locales.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AASpD,eAAO,MAAM,WAAW,GAAU,QAAQ,aAAa,kBAmMtD,CAAA"}
|
|
@@ -1,65 +1,124 @@
|
|
|
1
|
-
import { TranslationError, loadLocalesFile, translateKey, writeLocalesFile, } from "../lib/utils.js";
|
|
1
|
+
import { TranslationError, loadLocalesFile, translateKey, writeLocalesFile, findExistingTranslation, } from "../lib/utils.js";
|
|
2
2
|
export const syncLocales = async (config) => {
|
|
3
|
-
const { loadPath, savePath, defaultLocale, namespaces, locales, context, openai, } = config;
|
|
3
|
+
const { loadPath, savePath, defaultLocale, namespaces, locales, context, openai, disableTranslation, } = config;
|
|
4
|
+
console.log(`š Syncing translations for locales: ${locales.join(", ")}`);
|
|
5
|
+
console.log(`š¦ Namespaces: ${namespaces.join(", ")}`);
|
|
6
|
+
console.log(`š Default locale: ${defaultLocale}`);
|
|
7
|
+
console.log(`š§ Translation disabled: ${disableTranslation}`);
|
|
4
8
|
try {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
// First, collect all missing keys across all namespaces for each locale
|
|
10
|
+
for (const locale of locales) {
|
|
11
|
+
if (locale === defaultLocale)
|
|
12
|
+
continue;
|
|
13
|
+
console.log(`\nš Processing locale: ${locale}`);
|
|
14
|
+
// Collect all missing keys for this locale across all namespaces
|
|
15
|
+
const allMissingKeys = {};
|
|
16
|
+
const namespaceKeys = {};
|
|
17
|
+
// Load existing keys for all namespaces
|
|
18
|
+
for (const namespace of namespaces) {
|
|
19
|
+
let defaultLocaleKeys;
|
|
16
20
|
let localeKeys;
|
|
21
|
+
try {
|
|
22
|
+
defaultLocaleKeys = await loadLocalesFile(loadPath, defaultLocale, namespace);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.warn(`Warning: Could not load default locale file for ${defaultLocale} (namespace: ${namespace}). Skipping.`);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
17
28
|
try {
|
|
18
29
|
localeKeys = await loadLocalesFile(loadPath, locale, namespace);
|
|
19
30
|
}
|
|
20
31
|
catch (error) {
|
|
21
|
-
|
|
32
|
+
const filePath = typeof savePath === "string"
|
|
33
|
+
? savePath.replace("{{lng}}", locale).replace("{{ns}}", namespace)
|
|
34
|
+
: `${locale}/${namespace}.json`;
|
|
35
|
+
console.log(`š Creating new namespace file: ${filePath}`);
|
|
22
36
|
localeKeys = {};
|
|
23
37
|
}
|
|
24
|
-
|
|
38
|
+
namespaceKeys[namespace] = localeKeys;
|
|
25
39
|
// Check which keys from default locale are missing in current locale
|
|
26
40
|
for (const [key, value] of Object.entries(defaultLocaleKeys)) {
|
|
27
41
|
if (!localeKeys[key]) {
|
|
28
|
-
|
|
42
|
+
if (allMissingKeys[key]) {
|
|
43
|
+
// Key already exists, add this namespace to the list
|
|
44
|
+
allMissingKeys[key].namespaces.push(namespace);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// New missing key
|
|
48
|
+
allMissingKeys[key] = {
|
|
49
|
+
value,
|
|
50
|
+
namespaces: [namespace],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
29
53
|
}
|
|
30
54
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
55
|
+
}
|
|
56
|
+
const missingKeysList = Object.keys(allMissingKeys);
|
|
57
|
+
if (missingKeysList.length === 0) {
|
|
58
|
+
console.log(`ā
No missing keys found for ${locale}`);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
console.log(`Found ${missingKeysList.length} unique missing keys in ${locale}`);
|
|
62
|
+
// Check for existing translations of these keys in other namespaces
|
|
63
|
+
const keysToTranslate = {};
|
|
64
|
+
const existingTranslations = {};
|
|
65
|
+
for (const key of missingKeysList) {
|
|
66
|
+
const existingValue = await findExistingTranslation(key, namespaces, locale, loadPath);
|
|
67
|
+
if (existingValue) {
|
|
68
|
+
console.log(`š Reusing existing translation for "${key}": "${existingValue}"`);
|
|
69
|
+
existingTranslations[key] = existingValue;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
keysToTranslate[key] = allMissingKeys[key].value;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
let translatedValues = {};
|
|
76
|
+
// Translate only the keys that don't have existing translations
|
|
77
|
+
if (Object.keys(keysToTranslate).length > 0 && !disableTranslation) {
|
|
78
|
+
console.log(`š¤ Translating ${Object.keys(keysToTranslate).length} new keys for ${locale}`);
|
|
79
|
+
try {
|
|
80
|
+
translatedValues = await translateKey({
|
|
81
|
+
inputLanguage: defaultLocale,
|
|
82
|
+
outputLanguage: locale,
|
|
83
|
+
context,
|
|
84
|
+
object: keysToTranslate,
|
|
85
|
+
openai,
|
|
86
|
+
model: config.model,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
throw new TranslationError(`Failed to translate keys for locale "${locale}"`, locale, undefined, error instanceof Error ? error : undefined);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Combine existing translations with new translations
|
|
94
|
+
const allTranslations = { ...existingTranslations, ...translatedValues };
|
|
95
|
+
// Distribute translations to all relevant namespaces
|
|
96
|
+
for (const namespace of namespaces) {
|
|
97
|
+
let hasChanges = false;
|
|
98
|
+
const updatedKeys = { ...namespaceKeys[namespace] };
|
|
99
|
+
for (const key of missingKeysList) {
|
|
100
|
+
if (allMissingKeys[key].namespaces.includes(namespace)) {
|
|
101
|
+
const translation = disableTranslation
|
|
102
|
+
? ""
|
|
103
|
+
: allTranslations[key] || "";
|
|
104
|
+
updatedKeys[key] = translation;
|
|
105
|
+
hasChanges = true;
|
|
47
106
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
...localeKeys,
|
|
51
|
-
...translatedValues,
|
|
52
|
-
};
|
|
107
|
+
}
|
|
108
|
+
if (hasChanges) {
|
|
53
109
|
try {
|
|
54
|
-
await writeLocalesFile(savePath, locale, namespace,
|
|
110
|
+
await writeLocalesFile(savePath, locale, namespace, updatedKeys);
|
|
111
|
+
const addedKeysCount = Object.keys(allMissingKeys).filter((key) => allMissingKeys[key].namespaces.includes(namespace)).length;
|
|
112
|
+
if (disableTranslation) {
|
|
113
|
+
console.log(`š Created empty namespace file for ${locale} (${namespace}): ${addedKeysCount} keys`);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.log(`ā
Updated ${locale} (${namespace}): ${addedKeysCount} keys`);
|
|
117
|
+
}
|
|
55
118
|
}
|
|
56
119
|
catch (error) {
|
|
57
120
|
throw new TranslationError(`Failed to save translations for locale "${locale}" (namespace: ${namespace})`, locale, namespace, error instanceof Error ? error : undefined);
|
|
58
121
|
}
|
|
59
|
-
console.log(`Successfully translated and saved ${Object.keys(missingKeys).length} keys for ${locale} (namespace: ${namespace})`);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
console.log(`No missing keys found for ${locale} (namespace: ${namespace})`);
|
|
63
122
|
}
|
|
64
123
|
}
|
|
65
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-locales.js","sourceRoot":"","sources":["../../src/commands/sync-locales.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"sync-locales.js","sourceRoot":"","sources":["../../src/commands/sync-locales.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/utils.d.ts
CHANGED
|
@@ -46,7 +46,7 @@ export declare const getMissingKeys: ({ globPatterns, namespaces, defaultNamespa
|
|
|
46
46
|
* Find existing translation for a key across all namespaces
|
|
47
47
|
*/
|
|
48
48
|
export declare const findExistingTranslation: (key: string, namespaces: string[], defaultLocale: string, loadPath: string | ((locale: string, namespace: string) => Promise<Record<string, string>>)) => Promise<string | null>;
|
|
49
|
-
export declare const getTextInput: (
|
|
49
|
+
export declare const getTextInput: (key: string, namespaces?: string[]) => Promise<string>;
|
|
50
50
|
export declare const checkAllKeysExist: ({ namespaces, defaultLocale, loadPath, locales, context, openai, savePath, disableTranslation, model, }: Configuration) => Promise<void>;
|
|
51
51
|
export declare class TranslationError extends Error {
|
|
52
52
|
locale?: string;
|
package/dist/lib/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAGhC,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAElE,eAAO,MAAM,UAAU,GAAU,kBAE9B;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,iBAkB9B,CAAA;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAE1D;AAED,eAAO,MAAM,YAAY,GAAU,oEAOhC;IACD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,oCAyDA,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,UACI,MAAM,GACN,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAC5E,QAAQ,MAAM,EACd,WAAW,MAAM,oCA4BlB,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,UACI,MAAM,GACN,CAAC,CACC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KACzB,OAAO,CAAC,IAAI,CAAC,CAAC,EACvB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,kBAmB7B,CAAA;AAED,eAAO,MAAM,UAAU,GACrB,KAAK,MAAM,EACX,YAAY,MAAM,EAClB,YAAY,OAAO,WAiBpB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,cAAc,CAAC,MAAM,GAAG,iBAAiB,CAAC,EAAE,KAC3C,MAAM,EAIR,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,UAAU,MAAM,EAChB,cAAc,CAAC,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,EAAE,EACpE,kBAAkB,MAAM,KACvB,MAAM,EAyCR,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACtC,WAAW,MAAM,EACjB,cAAc,CAAC,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,EAAE,KACnE,MAAM,EAcR,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAU,qCAGzC,IAAI,CAAC,aAAa,EAAE,cAAc,GAAG,kBAAkB,CAAC;SAoBlD,MAAM;gBACC,MAAM,EAAE;UACd,MAAM;IAqCf,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,0EAMlC,aAAa,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/utils.js
CHANGED
|
@@ -233,18 +233,22 @@ export const getMissingKeys = async ({ globPatterns, namespaces, defaultNamespac
|
|
|
233
233
|
console.log(`š Found ${keysWithNamespaces.length} total key instances`);
|
|
234
234
|
// Group keys by namespace
|
|
235
235
|
const keysByNamespace = {};
|
|
236
|
+
// Track which namespaces each key belongs to
|
|
237
|
+
const keyToNamespaces = {};
|
|
236
238
|
for (const { key, namespaces: keyNamespaces } of keysWithNamespaces) {
|
|
237
239
|
for (const namespace of keyNamespaces) {
|
|
238
240
|
if (!keysByNamespace[namespace]) {
|
|
239
241
|
keysByNamespace[namespace] = new Set();
|
|
240
242
|
}
|
|
241
243
|
const pureKey = getPureKey(key, namespace, namespace === defaultNamespace);
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
244
|
+
const finalKey = pureKey || (!key.includes(":") ? key : null);
|
|
245
|
+
if (finalKey) {
|
|
246
|
+
keysByNamespace[namespace].add(finalKey);
|
|
247
|
+
// Track which namespaces this key belongs to
|
|
248
|
+
if (!keyToNamespaces[finalKey]) {
|
|
249
|
+
keyToNamespaces[finalKey] = new Set();
|
|
250
|
+
}
|
|
251
|
+
keyToNamespaces[finalKey].add(namespace);
|
|
248
252
|
}
|
|
249
253
|
}
|
|
250
254
|
}
|
|
@@ -252,18 +256,48 @@ export const getMissingKeys = async ({ globPatterns, namespaces, defaultNamespac
|
|
|
252
256
|
for (const [namespace, keys] of Object.entries(keysByNamespace)) {
|
|
253
257
|
console.log(`š¦ ${namespace}: ${keys.size} unique keys`);
|
|
254
258
|
}
|
|
259
|
+
// Load all existing keys for all namespaces first
|
|
260
|
+
const existingKeysByNamespace = {};
|
|
261
|
+
for (const namespace of namespaces) {
|
|
262
|
+
existingKeysByNamespace[namespace] = await loadLocalesFile(loadPath, defaultLocale, namespace);
|
|
263
|
+
console.log(Object.keys(existingKeysByNamespace[namespace]).length, "existing keys in", namespace);
|
|
264
|
+
}
|
|
265
|
+
// Track unique missing keys to avoid duplicates
|
|
266
|
+
const uniqueMissingKeys = new Map();
|
|
255
267
|
// Check for missing keys in each namespace
|
|
256
268
|
for (const namespace of namespaces) {
|
|
257
|
-
const existingKeys =
|
|
258
|
-
console.log(Object.keys(existingKeys).length, "existing keys in", namespace);
|
|
269
|
+
const existingKeys = existingKeysByNamespace[namespace];
|
|
259
270
|
const keysForNamespace = keysByNamespace[namespace] || new Set();
|
|
260
271
|
console.log(`š Checking ${keysForNamespace.size} keys for namespace ${namespace}`);
|
|
261
272
|
for (const key of keysForNamespace) {
|
|
262
273
|
if (!existingKeys[key]) {
|
|
263
|
-
|
|
274
|
+
if (uniqueMissingKeys.has(key)) {
|
|
275
|
+
// Add this namespace to the existing entry
|
|
276
|
+
const existing = uniqueMissingKeys.get(key);
|
|
277
|
+
if (existing && !existing.namespaces.includes(namespace)) {
|
|
278
|
+
existing.namespaces.push(namespace);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
// Create new entry with all namespaces this key belongs to (that are missing)
|
|
283
|
+
const allNamespaces = Array.from(keyToNamespaces[key] || [namespace]).filter((ns) => !existingKeysByNamespace[ns]?.[key]);
|
|
284
|
+
uniqueMissingKeys.set(key, {
|
|
285
|
+
key,
|
|
286
|
+
namespaces: allNamespaces,
|
|
287
|
+
primaryNamespace: namespace,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
264
290
|
}
|
|
265
291
|
}
|
|
266
292
|
}
|
|
293
|
+
// Convert to the expected format
|
|
294
|
+
for (const { key, namespaces: keyNamespaces, primaryNamespace, } of uniqueMissingKeys.values()) {
|
|
295
|
+
newKeys.push({
|
|
296
|
+
key,
|
|
297
|
+
namespace: primaryNamespace,
|
|
298
|
+
namespaces: keyNamespaces,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
267
301
|
return newKeys;
|
|
268
302
|
};
|
|
269
303
|
/**
|
|
@@ -283,11 +317,14 @@ export const findExistingTranslation = async (key, namespaces, defaultLocale, lo
|
|
|
283
317
|
}
|
|
284
318
|
return null;
|
|
285
319
|
};
|
|
286
|
-
export const getTextInput = async (
|
|
320
|
+
export const getTextInput = async (key, namespaces) => {
|
|
321
|
+
const namespaceInfo = namespaces && namespaces.length > 0
|
|
322
|
+
? ` (will be added to: ${namespaces.join(", ")})`
|
|
323
|
+
: "";
|
|
287
324
|
const input = await prompts({
|
|
288
325
|
name: "value",
|
|
289
326
|
type: "text",
|
|
290
|
-
message:
|
|
327
|
+
message: `${key}${namespaceInfo}`,
|
|
291
328
|
onState: (state) => {
|
|
292
329
|
if (state.aborted) {
|
|
293
330
|
process.nextTick(() => {
|
package/dist/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scoutello/i18n-magic",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Intelligent CLI toolkit that automates internationalization workflows with AI-powered translations for JavaScript/TypeScript projects",
|
package/src/commands/scan.ts
CHANGED
|
@@ -64,12 +64,13 @@ export const translateMissing = async (config: Configuration) => {
|
|
|
64
64
|
)
|
|
65
65
|
answer = existingValue
|
|
66
66
|
} else {
|
|
67
|
-
answer = await getTextInput(newKey.key)
|
|
67
|
+
answer = await getTextInput(newKey.key, newKey.namespaces)
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
newKeysWithDefaultLocale.push({
|
|
71
71
|
key: newKey.key,
|
|
72
72
|
namespace: newKey.namespace,
|
|
73
|
+
namespaces: newKey.namespaces,
|
|
73
74
|
value: answer,
|
|
74
75
|
})
|
|
75
76
|
}
|
|
@@ -101,8 +102,8 @@ export const translateMissing = async (config: Configuration) => {
|
|
|
101
102
|
for (const namespace of namespaces) {
|
|
102
103
|
const existingKeys = await loadLocalesFile(loadPath, locale, namespace)
|
|
103
104
|
|
|
104
|
-
const relevantKeys = newKeysWithDefaultLocale.filter(
|
|
105
|
-
|
|
105
|
+
const relevantKeys = newKeysWithDefaultLocale.filter((key) =>
|
|
106
|
+
key.namespaces?.includes(namespace),
|
|
106
107
|
)
|
|
107
108
|
|
|
108
109
|
if (relevantKeys.length === 0) {
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
loadLocalesFile,
|
|
5
5
|
translateKey,
|
|
6
6
|
writeLocalesFile,
|
|
7
|
+
findExistingTranslation,
|
|
7
8
|
} from "../lib/utils.js"
|
|
8
9
|
|
|
9
10
|
export const syncLocales = async (config: Configuration) => {
|
|
@@ -15,87 +16,170 @@ export const syncLocales = async (config: Configuration) => {
|
|
|
15
16
|
locales,
|
|
16
17
|
context,
|
|
17
18
|
openai,
|
|
19
|
+
disableTranslation,
|
|
18
20
|
} = config
|
|
19
21
|
|
|
22
|
+
console.log(`š Syncing translations for locales: ${locales.join(", ")}`)
|
|
23
|
+
console.log(`š¦ Namespaces: ${namespaces.join(", ")}`)
|
|
24
|
+
console.log(`š Default locale: ${defaultLocale}`)
|
|
25
|
+
console.log(`š§ Translation disabled: ${disableTranslation}`)
|
|
26
|
+
|
|
20
27
|
try {
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
// First, collect all missing keys across all namespaces for each locale
|
|
29
|
+
for (const locale of locales) {
|
|
30
|
+
if (locale === defaultLocale) continue
|
|
23
31
|
|
|
24
|
-
|
|
25
|
-
defaultLocaleKeys = await loadLocalesFile(
|
|
26
|
-
loadPath,
|
|
27
|
-
defaultLocale,
|
|
28
|
-
namespace,
|
|
29
|
-
)
|
|
30
|
-
} catch (error) {
|
|
31
|
-
throw new TranslationError(
|
|
32
|
-
`Failed to load default locale file for namespace "${namespace}"`,
|
|
33
|
-
defaultLocale,
|
|
34
|
-
namespace,
|
|
35
|
-
error instanceof Error ? error : undefined,
|
|
36
|
-
)
|
|
37
|
-
}
|
|
32
|
+
console.log(`\nš Processing locale: ${locale}`)
|
|
38
33
|
|
|
39
|
-
for
|
|
40
|
-
|
|
34
|
+
// Collect all missing keys for this locale across all namespaces
|
|
35
|
+
const allMissingKeys: Record<
|
|
36
|
+
string,
|
|
37
|
+
{ value: string; namespaces: string[] }
|
|
38
|
+
> = {}
|
|
39
|
+
const namespaceKeys: Record<string, Record<string, string>> = {}
|
|
41
40
|
|
|
41
|
+
// Load existing keys for all namespaces
|
|
42
|
+
for (const namespace of namespaces) {
|
|
43
|
+
let defaultLocaleKeys: Record<string, string>
|
|
42
44
|
let localeKeys: Record<string, string>
|
|
45
|
+
|
|
43
46
|
try {
|
|
44
|
-
|
|
47
|
+
defaultLocaleKeys = await loadLocalesFile(
|
|
48
|
+
loadPath,
|
|
49
|
+
defaultLocale,
|
|
50
|
+
namespace,
|
|
51
|
+
)
|
|
45
52
|
} catch (error) {
|
|
46
53
|
console.warn(
|
|
47
|
-
`Warning: Could not load locale file for ${
|
|
54
|
+
`Warning: Could not load default locale file for ${defaultLocale} (namespace: ${namespace}). Skipping.`,
|
|
48
55
|
)
|
|
56
|
+
continue
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
try {
|
|
60
|
+
localeKeys = await loadLocalesFile(loadPath, locale, namespace)
|
|
61
|
+
} catch (error) {
|
|
62
|
+
const filePath =
|
|
63
|
+
typeof savePath === "string"
|
|
64
|
+
? savePath.replace("{{lng}}", locale).replace("{{ns}}", namespace)
|
|
65
|
+
: `${locale}/${namespace}.json`
|
|
66
|
+
console.log(`š Creating new namespace file: ${filePath}`)
|
|
49
67
|
localeKeys = {}
|
|
50
68
|
}
|
|
51
69
|
|
|
52
|
-
|
|
70
|
+
namespaceKeys[namespace] = localeKeys
|
|
53
71
|
|
|
54
72
|
// Check which keys from default locale are missing in current locale
|
|
55
73
|
for (const [key, value] of Object.entries(defaultLocaleKeys)) {
|
|
56
74
|
if (!localeKeys[key]) {
|
|
57
|
-
|
|
75
|
+
if (allMissingKeys[key]) {
|
|
76
|
+
// Key already exists, add this namespace to the list
|
|
77
|
+
allMissingKeys[key].namespaces.push(namespace)
|
|
78
|
+
} else {
|
|
79
|
+
// New missing key
|
|
80
|
+
allMissingKeys[key] = {
|
|
81
|
+
value,
|
|
82
|
+
namespaces: [namespace],
|
|
83
|
+
}
|
|
84
|
+
}
|
|
58
85
|
}
|
|
59
86
|
}
|
|
87
|
+
}
|
|
60
88
|
|
|
61
|
-
|
|
62
|
-
|
|
89
|
+
const missingKeysList = Object.keys(allMissingKeys)
|
|
90
|
+
if (missingKeysList.length === 0) {
|
|
91
|
+
console.log(`ā
No missing keys found for ${locale}`)
|
|
92
|
+
continue
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
console.log(
|
|
96
|
+
`Found ${missingKeysList.length} unique missing keys in ${locale}`,
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
// Check for existing translations of these keys in other namespaces
|
|
100
|
+
const keysToTranslate: Record<string, string> = {}
|
|
101
|
+
const existingTranslations: Record<string, string> = {}
|
|
102
|
+
|
|
103
|
+
for (const key of missingKeysList) {
|
|
104
|
+
const existingValue = await findExistingTranslation(
|
|
105
|
+
key,
|
|
106
|
+
namespaces,
|
|
107
|
+
locale,
|
|
108
|
+
loadPath,
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
if (existingValue) {
|
|
63
112
|
console.log(
|
|
64
|
-
|
|
113
|
+
`š Reusing existing translation for "${key}": "${existingValue}"`,
|
|
65
114
|
)
|
|
115
|
+
existingTranslations[key] = existingValue
|
|
116
|
+
} else {
|
|
117
|
+
keysToTranslate[key] = allMissingKeys[key].value
|
|
118
|
+
}
|
|
119
|
+
}
|
|
66
120
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
121
|
+
let translatedValues: Record<string, string> = {}
|
|
122
|
+
|
|
123
|
+
// Translate only the keys that don't have existing translations
|
|
124
|
+
if (Object.keys(keysToTranslate).length > 0 && !disableTranslation) {
|
|
125
|
+
console.log(
|
|
126
|
+
`š¤ Translating ${Object.keys(keysToTranslate).length} new keys for ${locale}`,
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
try {
|
|
130
|
+
translatedValues = await translateKey({
|
|
131
|
+
inputLanguage: defaultLocale,
|
|
132
|
+
outputLanguage: locale,
|
|
133
|
+
context,
|
|
134
|
+
object: keysToTranslate,
|
|
135
|
+
openai,
|
|
136
|
+
model: config.model,
|
|
137
|
+
})
|
|
138
|
+
} catch (error) {
|
|
139
|
+
throw new TranslationError(
|
|
140
|
+
`Failed to translate keys for locale "${locale}"`,
|
|
141
|
+
locale,
|
|
142
|
+
undefined,
|
|
143
|
+
error instanceof Error ? error : undefined,
|
|
144
|
+
)
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Combine existing translations with new translations
|
|
149
|
+
const allTranslations = { ...existingTranslations, ...translatedValues }
|
|
85
150
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
151
|
+
// Distribute translations to all relevant namespaces
|
|
152
|
+
for (const namespace of namespaces) {
|
|
153
|
+
let hasChanges = false
|
|
154
|
+
const updatedKeys = { ...namespaceKeys[namespace] }
|
|
155
|
+
|
|
156
|
+
for (const key of missingKeysList) {
|
|
157
|
+
if (allMissingKeys[key].namespaces.includes(namespace)) {
|
|
158
|
+
const translation = disableTranslation
|
|
159
|
+
? ""
|
|
160
|
+
: allTranslations[key] || ""
|
|
161
|
+
updatedKeys[key] = translation
|
|
162
|
+
hasChanges = true
|
|
90
163
|
}
|
|
164
|
+
}
|
|
91
165
|
|
|
166
|
+
if (hasChanges) {
|
|
92
167
|
try {
|
|
93
|
-
await writeLocalesFile(
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
namespace,
|
|
97
|
-
|
|
98
|
-
|
|
168
|
+
await writeLocalesFile(savePath, locale, namespace, updatedKeys)
|
|
169
|
+
|
|
170
|
+
const addedKeysCount = Object.keys(allMissingKeys).filter((key) =>
|
|
171
|
+
allMissingKeys[key].namespaces.includes(namespace),
|
|
172
|
+
).length
|
|
173
|
+
|
|
174
|
+
if (disableTranslation) {
|
|
175
|
+
console.log(
|
|
176
|
+
`š Created empty namespace file for ${locale} (${namespace}): ${addedKeysCount} keys`,
|
|
177
|
+
)
|
|
178
|
+
} else {
|
|
179
|
+
console.log(
|
|
180
|
+
`ā
Updated ${locale} (${namespace}): ${addedKeysCount} keys`,
|
|
181
|
+
)
|
|
182
|
+
}
|
|
99
183
|
} catch (error) {
|
|
100
184
|
throw new TranslationError(
|
|
101
185
|
`Failed to save translations for locale "${locale}" (namespace: ${namespace})`,
|
|
@@ -104,14 +188,6 @@ export const syncLocales = async (config: Configuration) => {
|
|
|
104
188
|
error instanceof Error ? error : undefined,
|
|
105
189
|
)
|
|
106
190
|
}
|
|
107
|
-
|
|
108
|
-
console.log(
|
|
109
|
-
`Successfully translated and saved ${Object.keys(missingKeys).length} keys for ${locale} (namespace: ${namespace})`,
|
|
110
|
-
)
|
|
111
|
-
} else {
|
|
112
|
-
console.log(
|
|
113
|
-
`No missing keys found for ${locale} (namespace: ${namespace})`,
|
|
114
|
-
)
|
|
115
191
|
}
|
|
116
192
|
}
|
|
117
193
|
}
|
package/src/lib/utils.ts
CHANGED
|
@@ -362,6 +362,8 @@ export const getMissingKeys = async ({
|
|
|
362
362
|
|
|
363
363
|
// Group keys by namespace
|
|
364
364
|
const keysByNamespace: Record<string, Set<string>> = {}
|
|
365
|
+
// Track which namespaces each key belongs to
|
|
366
|
+
const keyToNamespaces: Record<string, Set<string>> = {}
|
|
365
367
|
|
|
366
368
|
for (const { key, namespaces: keyNamespaces } of keysWithNamespaces) {
|
|
367
369
|
for (const namespace of keyNamespaces) {
|
|
@@ -370,11 +372,16 @@ export const getMissingKeys = async ({
|
|
|
370
372
|
}
|
|
371
373
|
|
|
372
374
|
const pureKey = getPureKey(key, namespace, namespace === defaultNamespace)
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
375
|
+
const finalKey = pureKey || (!key.includes(":") ? key : null)
|
|
376
|
+
|
|
377
|
+
if (finalKey) {
|
|
378
|
+
keysByNamespace[namespace].add(finalKey)
|
|
379
|
+
|
|
380
|
+
// Track which namespaces this key belongs to
|
|
381
|
+
if (!keyToNamespaces[finalKey]) {
|
|
382
|
+
keyToNamespaces[finalKey] = new Set()
|
|
383
|
+
}
|
|
384
|
+
keyToNamespaces[finalKey].add(namespace)
|
|
378
385
|
}
|
|
379
386
|
}
|
|
380
387
|
}
|
|
@@ -384,16 +391,34 @@ export const getMissingKeys = async ({
|
|
|
384
391
|
console.log(`š¦ ${namespace}: ${keys.size} unique keys`)
|
|
385
392
|
}
|
|
386
393
|
|
|
387
|
-
//
|
|
394
|
+
// Load all existing keys for all namespaces first
|
|
395
|
+
const existingKeysByNamespace: Record<string, Record<string, string>> = {}
|
|
388
396
|
for (const namespace of namespaces) {
|
|
389
|
-
|
|
397
|
+
existingKeysByNamespace[namespace] = await loadLocalesFile(
|
|
390
398
|
loadPath,
|
|
391
399
|
defaultLocale,
|
|
392
400
|
namespace,
|
|
393
401
|
)
|
|
402
|
+
console.log(
|
|
403
|
+
Object.keys(existingKeysByNamespace[namespace]).length,
|
|
404
|
+
"existing keys in",
|
|
405
|
+
namespace,
|
|
406
|
+
)
|
|
407
|
+
}
|
|
394
408
|
|
|
395
|
-
|
|
409
|
+
// Track unique missing keys to avoid duplicates
|
|
410
|
+
const uniqueMissingKeys = new Map<
|
|
411
|
+
string,
|
|
412
|
+
{
|
|
413
|
+
key: string
|
|
414
|
+
namespaces: string[]
|
|
415
|
+
primaryNamespace: string
|
|
416
|
+
}
|
|
417
|
+
>()
|
|
396
418
|
|
|
419
|
+
// Check for missing keys in each namespace
|
|
420
|
+
for (const namespace of namespaces) {
|
|
421
|
+
const existingKeys = existingKeysByNamespace[namespace]
|
|
397
422
|
const keysForNamespace = keysByNamespace[namespace] || new Set()
|
|
398
423
|
console.log(
|
|
399
424
|
`š Checking ${keysForNamespace.size} keys for namespace ${namespace}`,
|
|
@@ -401,11 +426,41 @@ export const getMissingKeys = async ({
|
|
|
401
426
|
|
|
402
427
|
for (const key of keysForNamespace) {
|
|
403
428
|
if (!existingKeys[key]) {
|
|
404
|
-
|
|
429
|
+
if (uniqueMissingKeys.has(key)) {
|
|
430
|
+
// Add this namespace to the existing entry
|
|
431
|
+
const existing = uniqueMissingKeys.get(key)
|
|
432
|
+
if (existing && !existing.namespaces.includes(namespace)) {
|
|
433
|
+
existing.namespaces.push(namespace)
|
|
434
|
+
}
|
|
435
|
+
} else {
|
|
436
|
+
// Create new entry with all namespaces this key belongs to (that are missing)
|
|
437
|
+
const allNamespaces = Array.from(
|
|
438
|
+
keyToNamespaces[key] || [namespace],
|
|
439
|
+
).filter((ns) => !existingKeysByNamespace[ns]?.[key])
|
|
440
|
+
|
|
441
|
+
uniqueMissingKeys.set(key, {
|
|
442
|
+
key,
|
|
443
|
+
namespaces: allNamespaces,
|
|
444
|
+
primaryNamespace: namespace,
|
|
445
|
+
})
|
|
446
|
+
}
|
|
405
447
|
}
|
|
406
448
|
}
|
|
407
449
|
}
|
|
408
450
|
|
|
451
|
+
// Convert to the expected format
|
|
452
|
+
for (const {
|
|
453
|
+
key,
|
|
454
|
+
namespaces: keyNamespaces,
|
|
455
|
+
primaryNamespace,
|
|
456
|
+
} of uniqueMissingKeys.values()) {
|
|
457
|
+
newKeys.push({
|
|
458
|
+
key,
|
|
459
|
+
namespace: primaryNamespace,
|
|
460
|
+
namespaces: keyNamespaces,
|
|
461
|
+
})
|
|
462
|
+
}
|
|
463
|
+
|
|
409
464
|
return newKeys
|
|
410
465
|
}
|
|
411
466
|
|
|
@@ -437,11 +492,16 @@ export const findExistingTranslation = async (
|
|
|
437
492
|
return null
|
|
438
493
|
}
|
|
439
494
|
|
|
440
|
-
export const getTextInput = async (
|
|
495
|
+
export const getTextInput = async (key: string, namespaces?: string[]) => {
|
|
496
|
+
const namespaceInfo =
|
|
497
|
+
namespaces && namespaces.length > 0
|
|
498
|
+
? ` (will be added to: ${namespaces.join(", ")})`
|
|
499
|
+
: ""
|
|
500
|
+
|
|
441
501
|
const input = await prompts({
|
|
442
502
|
name: "value",
|
|
443
503
|
type: "text",
|
|
444
|
-
message:
|
|
504
|
+
message: `${key}${namespaceInfo}`,
|
|
445
505
|
onState: (state) => {
|
|
446
506
|
if (state.aborted) {
|
|
447
507
|
process.nextTick(() => {
|