@scoutello/i18n-magic 0.50.0 → 0.52.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/cli.js +4 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/clean.d.ts.map +1 -1
- package/dist/commands/clean.js +10 -10
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/replace.d.ts.map +1 -1
- package/dist/commands/replace.js +38 -30
- package/dist/commands/replace.js.map +1 -1
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +22 -18
- package/dist/commands/scan.js.map +1 -1
- package/dist/mcp-server.js +13 -7
- package/dist/mcp-server.js.map +1 -1
- package/package.json +6 -4
- package/src/cli.ts +4 -4
- package/src/commands/clean.ts +33 -30
- package/src/commands/replace.ts +46 -25
- package/src/commands/scan.ts +38 -28
- package/src/mcp-server.ts +15 -7
package/dist/cli.js
CHANGED
|
@@ -59,14 +59,14 @@ for (const command of commands) {
|
|
|
59
59
|
configPath: program.opts().config,
|
|
60
60
|
});
|
|
61
61
|
const isGemini = config.model?.includes("gemini");
|
|
62
|
-
// Get API key from
|
|
63
|
-
const openaiKey =
|
|
64
|
-
const geminiKey =
|
|
62
|
+
// Get API key from config only
|
|
63
|
+
const openaiKey = config.OPENAI_API_KEY;
|
|
64
|
+
const geminiKey = config.GEMINI_API_KEY;
|
|
65
65
|
// Select appropriate key based on model type
|
|
66
66
|
const key = isGemini ? geminiKey : openaiKey;
|
|
67
67
|
if (!key) {
|
|
68
68
|
const keyType = isGemini ? "GEMINI_API_KEY" : "OPENAI_API_KEY";
|
|
69
|
-
console.error(`Please provide a${isGemini ? " Gemini" : "n OpenAI"} API key in your
|
|
69
|
+
console.error(`Please provide a${isGemini ? " Gemini" : "n OpenAI"} API key in your i18n-magic config file as ${keyType}.`);
|
|
70
70
|
process.exit(1);
|
|
71
71
|
}
|
|
72
72
|
const openai = new OpenAI({
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,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,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CACV,6FAA6F,CAC9F;KACA,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;AAElD,MAAM,QAAQ,GAAkB;IAC9B;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,uHAAuH;QACzH,MAAM,EAAE,gBAAgB;KACzB;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EACT,6GAA6G;QAC/G,MAAM,EAAE,kBAAkB;KAC3B;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,yFAAyF;QAC3F,MAAM,EAAE,YAAY;KACrB;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,gHAAgH;QAClH,MAAM,EAAE,WAAW;KACpB;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EACT,yFAAyF;QAC3F,MAAM,EAAE,gBAAgB;KACzB;CACF,CAAA;AAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAE1E,oCAAoC;IACpC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,GAAG;aACA,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;aACvD,oBAAoB,CAAC,IAAI,CAAC;aAC1B,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAA;IACpD,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QAChC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,MAAM;SACnC,CAAC,CAAA;QAEF,MAAM,MAAM,GAAkB,MAAM,UAAU,CAAC;YAC7C,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM;SAClC,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAI,MAAM,CAAC,KAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAE7D
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAQpD,eAAO,MAAM,gBAAgB,GAAU,QAAQ,aAAa,
|
|
1
|
+
{"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAQpD,eAAO,MAAM,gBAAgB,GAAU,QAAQ,aAAa,kBAyF3D,CAAA"}
|
package/dist/commands/clean.js
CHANGED
|
@@ -24,16 +24,12 @@ export const removeUnusedKeys = async (config) => {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
// Process each namespace and locale
|
|
28
|
-
|
|
27
|
+
// Process each namespace and locale in parallel
|
|
28
|
+
const results = await Promise.all(namespaces.flatMap((namespace) => {
|
|
29
29
|
const usedKeysSet = keysByNamespace[namespace] || new Set();
|
|
30
|
-
|
|
31
|
-
for (const locale of locales) {
|
|
32
|
-
// Load existing keys for this locale and namespace
|
|
30
|
+
return locales.map(async (locale) => {
|
|
33
31
|
const existingKeys = await loadLocalesFile(loadPath, locale, namespace);
|
|
34
32
|
const existingKeysCount = Object.keys(existingKeys).length;
|
|
35
|
-
stats.total += existingKeysCount;
|
|
36
|
-
// Create a new object with only the keys that are used
|
|
37
33
|
const cleanedKeys = {};
|
|
38
34
|
let removedCount = 0;
|
|
39
35
|
for (const [key, value] of Object.entries(existingKeys)) {
|
|
@@ -44,8 +40,6 @@ export const removeUnusedKeys = async (config) => {
|
|
|
44
40
|
removedCount++;
|
|
45
41
|
}
|
|
46
42
|
}
|
|
47
|
-
stats.removed += removedCount;
|
|
48
|
-
// Only write the file if keys were removed
|
|
49
43
|
if (removedCount > 0) {
|
|
50
44
|
await writeLocalesFile(savePath, locale, namespace, cleanedKeys);
|
|
51
45
|
console.log(`✓ Removed ${removedCount} unused keys from ${locale}:${namespace} (${Object.keys(cleanedKeys).length} keys remaining)`);
|
|
@@ -53,7 +47,13 @@ export const removeUnusedKeys = async (config) => {
|
|
|
53
47
|
else {
|
|
54
48
|
console.log(`No unused keys found in ${locale}:${namespace}`);
|
|
55
49
|
}
|
|
56
|
-
|
|
50
|
+
return { total: existingKeysCount, removed: removedCount };
|
|
51
|
+
});
|
|
52
|
+
}));
|
|
53
|
+
// Aggregate stats from all parallel operations
|
|
54
|
+
for (const result of results) {
|
|
55
|
+
stats.total += result.total;
|
|
56
|
+
stats.removed += result.removed;
|
|
57
57
|
}
|
|
58
58
|
if (stats.removed > 0) {
|
|
59
59
|
console.log(`✅ Removed ${stats.removed} unused keys (out of ${stats.total} total keys)`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAqB,EAAE,EAAE;IAC9D,MAAM,EACJ,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,QAAQ,GACT,GAAG,MAAM,CAAA;IAEV,kEAAkE;IAClE,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CAAC;QACrD,YAAY;QACZ,gBAAgB;KACjB,CAAC,CAAA;IAEF,4BAA4B;IAC5B,MAAM,KAAK,GAAG;QACZ,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;KACX,CAAA;IAED,0BAA0B;IAC1B,MAAM,eAAe,GAAgC,EAAE,CAAA;IAEvD,KAAK,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,kBAAkB,EAAE,CAAC;QACpE,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,eAAe,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,EAAE,CAAA;YACxC,CAAC;YAED,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,KAAK,gBAAgB,CAAC,CAAA;YAC1E,IAAI,OAAO,EAAE,CAAC;gBACZ,eAAe,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replace.d.ts","sourceRoot":"","sources":["../../src/commands/replace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AA6BpD,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,aAAa,EACrB,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"replace.d.ts","sourceRoot":"","sources":["../../src/commands/replace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AA6BpD,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,aAAa,EACrB,MAAM,MAAM,kBA0Ib,CAAA"}
|
package/dist/commands/replace.js
CHANGED
|
@@ -18,8 +18,11 @@ export const replaceTranslation = async (config, key) => {
|
|
|
18
18
|
});
|
|
19
19
|
// Build a map of all available keys across all namespaces
|
|
20
20
|
const allAvailableKeys = {};
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
const namespaceKeysResults = await Promise.all(namespaces.map(async (namespace) => ({
|
|
22
|
+
namespace,
|
|
23
|
+
keys: await loadLocalesFile(loadPath, defaultLocale, namespace),
|
|
24
|
+
})));
|
|
25
|
+
for (const { namespace, keys } of namespaceKeysResults) {
|
|
23
26
|
for (const [keyName, value] of Object.entries(keys)) {
|
|
24
27
|
if (!allAvailableKeys[keyName]) {
|
|
25
28
|
allAvailableKeys[keyName] = [];
|
|
@@ -64,38 +67,43 @@ export const replaceTranslation = async (config, key) => {
|
|
|
64
67
|
targetNamespaces = result.namespaces;
|
|
65
68
|
}
|
|
66
69
|
// Show current translations across namespaces
|
|
67
|
-
|
|
70
|
+
const currentTranslations = await Promise.all(targetNamespaces.map(async (namespace) => {
|
|
68
71
|
const keys = await loadLocalesFile(loadPath, defaultLocale, namespace);
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
return { namespace, value: keys[keyToReplace] };
|
|
73
|
+
}));
|
|
74
|
+
for (const { namespace, value } of currentTranslations) {
|
|
75
|
+
if (value) {
|
|
76
|
+
console.log(`Current translation in ${defaultLocale} (${namespace}): "${value}"`);
|
|
71
77
|
}
|
|
72
78
|
}
|
|
73
79
|
const newTranslation = await getTextInput("Enter the new translation: ");
|
|
74
|
-
//
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
const existingKeys = await loadLocalesFile(loadPath, locale, namespace);
|
|
95
|
-
existingKeys[keyToReplace] = newValue;
|
|
96
|
-
await writeLocalesFile(savePath, locale, namespace, existingKeys);
|
|
97
|
-
console.log(`Updated "${keyToReplace}" in ${locale} (${namespace}): "${newValue}"`);
|
|
98
|
-
}
|
|
80
|
+
// Batch translate for all non-default locales first
|
|
81
|
+
const translationCache = {
|
|
82
|
+
[defaultLocale]: newTranslation,
|
|
83
|
+
};
|
|
84
|
+
const nonDefaultLocales = locales.filter((l) => l !== defaultLocale);
|
|
85
|
+
if (nonDefaultLocales.length > 0) {
|
|
86
|
+
await Promise.all(nonDefaultLocales.map(async (locale) => {
|
|
87
|
+
const translation = await translateKey({
|
|
88
|
+
context,
|
|
89
|
+
inputLanguage: defaultLocale,
|
|
90
|
+
outputLanguage: locale,
|
|
91
|
+
object: {
|
|
92
|
+
[keyToReplace]: newTranslation,
|
|
93
|
+
},
|
|
94
|
+
openai,
|
|
95
|
+
model: config.model,
|
|
96
|
+
});
|
|
97
|
+
translationCache[locale] = translation[keyToReplace];
|
|
98
|
+
}));
|
|
99
99
|
}
|
|
100
|
+
// Update the key in all relevant namespaces and locales in parallel
|
|
101
|
+
await Promise.all(targetNamespaces.flatMap((namespace) => locales.map(async (locale) => {
|
|
102
|
+
const newValue = translationCache[locale];
|
|
103
|
+
const existingKeys = await loadLocalesFile(loadPath, locale, namespace);
|
|
104
|
+
existingKeys[keyToReplace] = newValue;
|
|
105
|
+
await writeLocalesFile(savePath, locale, namespace, existingKeys);
|
|
106
|
+
console.log(`Updated "${keyToReplace}" in ${locale} (${namespace}): "${newValue}"`);
|
|
107
|
+
})));
|
|
100
108
|
};
|
|
101
109
|
//# sourceMappingURL=replace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replace.js","sourceRoot":"","sources":["../../src/commands/replace.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AAExB,MAAM,eAAe,GAAG,KAAK,EAC3B,gBAAwE,EACxB,EAAE;IAClD,MAAM,YAAY,GAAG,MAAM,YAAY,CACrC,gDAAgD,CACjD,CAAA;IAED,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,YAAY,YAAY,mBAAmB,CAAC,CAAA;QACxD,OAAO,MAAM,eAAe,CAAC,gBAAgB,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACzE,OAAO,CAAC,GAAG,CACT,YAAY,YAAY,2BAA2B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5E,CAAA;IACD,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,MAAqB,EACrB,GAAY,EACZ,EAAE;IACF,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,OAAO,EACP,YAAY,EACZ,OAAO,EACP,MAAM,GACP,GAAG,MAAM,CAAA;IAEV,wDAAwD;IACxD,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CAAC;QACrD,YAAY;QACZ,gBAAgB;KACjB,CAAC,CAAA;IAEF,0DAA0D;IAC1D,MAAM,gBAAgB,GAGlB,EAAE,CAAA;IAEN,
|
|
1
|
+
{"version":3,"file":"replace.js","sourceRoot":"","sources":["../../src/commands/replace.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AAExB,MAAM,eAAe,GAAG,KAAK,EAC3B,gBAAwE,EACxB,EAAE;IAClD,MAAM,YAAY,GAAG,MAAM,YAAY,CACrC,gDAAgD,CACjD,CAAA;IAED,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,YAAY,YAAY,mBAAmB,CAAC,CAAA;QACxD,OAAO,MAAM,eAAe,CAAC,gBAAgB,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACzE,OAAO,CAAC,GAAG,CACT,YAAY,YAAY,2BAA2B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5E,CAAA;IACD,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,MAAqB,EACrB,GAAY,EACZ,EAAE;IACF,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,OAAO,EACP,YAAY,EACZ,OAAO,EACP,MAAM,GACP,GAAG,MAAM,CAAA;IAEV,wDAAwD;IACxD,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CAAC;QACrD,YAAY;QACZ,gBAAgB;KACjB,CAAC,CAAA;IAEF,0DAA0D;IAC1D,MAAM,gBAAgB,GAGlB,EAAE,CAAA;IAEN,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5C,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QACnC,SAAS;QACT,IAAI,EAAE,MAAM,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC;KAChE,CAAC,CAAC,CACJ,CAAA;IAED,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,oBAAoB,EAAE,CAAC;QACvD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;YAChC,CAAC;YACD,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IAED,IAAI,YAAoB,CAAA;IACxB,IAAI,gBAAgB,GAAa,EAAE,CAAA;IAEnC,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,YAAY,GAAG,GAAG,CAAA;YAClB,0EAA0E;YAC1E,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAA;gBACzD,OAAO,OAAO,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAA;YACzC,CAAC,CAAC,CAAA;YAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,mCAAmC;gBACnC,MAAM,aAAa,GAAa,EAAE,CAAA;gBAClC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACzB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAA;gBACrC,CAAC;gBACD,gBAAgB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;YAChD,CAAC;iBAAM,CAAC;gBACN,kDAAkD;gBAClD,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;YAClE,CAAC;YAED,OAAO,CAAC,GAAG,CACT,YAAY,YAAY,2BAA2B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAClF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,mBAAmB,CAAC,CAAA;YAC/C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAAC,CAAA;YACtD,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;YACzB,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAA;QACtC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAAC,CAAA;QACtD,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;QACzB,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAA;IACtC,CAAC;IAED,8CAA8C;IAC9C,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3C,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;QACtE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAA;IACjD,CAAC,CAAC,CACH,CAAA;IAED,KAAK,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,mBAAmB,EAAE,CAAC;QACvD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACT,0BAA0B,aAAa,KAAK,SAAS,OAAO,KAAK,GAAG,CACrE,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,6BAA6B,CAAC,CAAA;IAExE,oDAAoD;IACpD,MAAM,gBAAgB,GAA2B;QAC/C,CAAC,aAAa,CAAC,EAAE,cAAc;KAChC,CAAA;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAA;IACpE,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,OAAO,CAAC,GAAG,CACf,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC;gBACrC,OAAO;gBACP,aAAa,EAAE,aAAa;gBAC5B,cAAc,EAAE,MAAM;gBACtB,MAAM,EAAE;oBACN,CAAC,YAAY,CAAC,EAAE,cAAc;iBAC/B;gBACD,MAAM;gBACN,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAA;YACF,gBAAgB,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;QACtD,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAED,oEAAoE;IACpE,MAAM,OAAO,CAAC,GAAG,CACf,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CACrC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;QACzC,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;QACvE,YAAY,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAA;QACrC,MAAM,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,CAAA;QAEjE,OAAO,CAAC,GAAG,CACT,YAAY,YAAY,QAAQ,MAAM,KAAK,SAAS,OAAO,QAAQ,GAAG,CACvE,CAAA;IACH,CAAC,CAAC,CACH,CACF,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -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;
|
|
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,kBAmI3D,CAAA"}
|
package/dist/commands/scan.js
CHANGED
|
@@ -46,13 +46,14 @@ export const translateMissing = async (config) => {
|
|
|
46
46
|
return prev;
|
|
47
47
|
}, {});
|
|
48
48
|
const allLocales = disableTranslationDuringScan ? [defaultLocale] : locales;
|
|
49
|
-
for
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
// Batch translate for all non-default locales in parallel
|
|
50
|
+
const translationCache = {
|
|
51
|
+
[defaultLocale]: newKeysObject,
|
|
52
|
+
};
|
|
53
|
+
const nonDefaultLocales = allLocales.filter((l) => l !== defaultLocale);
|
|
54
|
+
if (nonDefaultLocales.length > 0) {
|
|
55
|
+
await Promise.all(nonDefaultLocales.map(async (locale) => {
|
|
56
|
+
const translatedValues = await translateKey({
|
|
56
57
|
inputLanguage: defaultLocale,
|
|
57
58
|
outputLanguage: locale,
|
|
58
59
|
context,
|
|
@@ -60,19 +61,22 @@ export const translateMissing = async (config) => {
|
|
|
60
61
|
openai,
|
|
61
62
|
model: config.model,
|
|
62
63
|
});
|
|
64
|
+
translationCache[locale] = translatedValues;
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
// Process all locale/namespace combinations in parallel
|
|
68
|
+
await Promise.all(allLocales.flatMap((locale) => namespaces.map(async (namespace) => {
|
|
69
|
+
const existingKeys = await loadLocalesFile(loadPath, locale, namespace);
|
|
70
|
+
const relevantKeys = newKeysWithDefaultLocale.filter((key) => key.namespaces?.includes(namespace));
|
|
71
|
+
if (relevantKeys.length === 0) {
|
|
72
|
+
return;
|
|
63
73
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (relevantKeys.length === 0) {
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
for (const key of relevantKeys) {
|
|
71
|
-
existingKeys[key.key] = translatedValues[key.key];
|
|
72
|
-
}
|
|
73
|
-
writeLocalesFile(savePath, locale, namespace, existingKeys);
|
|
74
|
+
const translatedValues = translationCache[locale];
|
|
75
|
+
for (const key of relevantKeys) {
|
|
76
|
+
existingKeys[key.key] = translatedValues[key.key];
|
|
74
77
|
}
|
|
75
|
-
|
|
78
|
+
await writeLocalesFile(savePath, locale, namespace, existingKeys);
|
|
79
|
+
})));
|
|
76
80
|
await checkAllKeysExist(config);
|
|
77
81
|
console.log(`Successfully translated ${newKeys.length} keys.`);
|
|
78
82
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,YAAY,
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-server.js
CHANGED
|
@@ -87,10 +87,10 @@ class I18nMagicServer {
|
|
|
87
87
|
if (!this.config) {
|
|
88
88
|
try {
|
|
89
89
|
this.config = await loadConfig();
|
|
90
|
-
// Initialize OpenAI client if API key is available
|
|
90
|
+
// Initialize OpenAI client if API key is available in config
|
|
91
91
|
const isGemini = this.config.model?.includes("gemini");
|
|
92
|
-
const openaiKey =
|
|
93
|
-
const geminiKey =
|
|
92
|
+
const openaiKey = this.config.OPENAI_API_KEY;
|
|
93
|
+
const geminiKey = this.config.GEMINI_API_KEY;
|
|
94
94
|
const key = isGemini ? geminiKey : openaiKey;
|
|
95
95
|
if (key) {
|
|
96
96
|
this.config.openai = new OpenAI({
|
|
@@ -102,7 +102,7 @@ class I18nMagicServer {
|
|
|
102
102
|
console.error(`[i18n-magic MCP] Initialized ${isGemini ? "Gemini" : "OpenAI"} client`);
|
|
103
103
|
}
|
|
104
104
|
else {
|
|
105
|
-
console.error("[i18n-magic MCP] No API key found. Automatic translation will be disabled.");
|
|
105
|
+
console.error("[i18n-magic MCP] No API key found in config. Automatic translation will be disabled.");
|
|
106
106
|
}
|
|
107
107
|
console.error(`[i18n-magic MCP] Loaded configuration with ${this.config.namespaces.length} namespaces and ${this.config.locales.length} locales`);
|
|
108
108
|
}
|
|
@@ -161,10 +161,15 @@ class I18nMagicServer {
|
|
|
161
161
|
const params = AddTranslationKeySchema.parse(request.params.arguments);
|
|
162
162
|
// Ensure config is loaded
|
|
163
163
|
const config = await this.ensureConfig();
|
|
164
|
-
//
|
|
165
|
-
// Only console.error is allowed in MCP servers
|
|
164
|
+
// Capture console.log output for diagnostics
|
|
166
165
|
const originalConsoleLog = console.log;
|
|
167
|
-
|
|
166
|
+
const logMessages = [];
|
|
167
|
+
console.log = (...args) => {
|
|
168
|
+
const message = args.map(arg => typeof arg === 'object' ? JSON.stringify(arg) : String(arg)).join(' ');
|
|
169
|
+
logMessages.push(message);
|
|
170
|
+
// Also log to stderr for debugging
|
|
171
|
+
console.error(`[i18n-magic] ${message}`);
|
|
172
|
+
};
|
|
168
173
|
let result;
|
|
169
174
|
try {
|
|
170
175
|
// Add the translation key
|
|
@@ -192,6 +197,7 @@ class I18nMagicServer {
|
|
|
192
197
|
nextStep: result.locale.includes(',')
|
|
193
198
|
? "Run 'i18n-magic sync' to translate this key to other locales"
|
|
194
199
|
: "Key was translated to default locale. Run 'i18n-magic sync' to translate to other locales",
|
|
200
|
+
diagnostics: logMessages.join('\n'),
|
|
195
201
|
}, null, 2),
|
|
196
202
|
},
|
|
197
203
|
],
|
package/dist/mcp-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
2
|
"name": "@scoutello/i18n-magic",
|
|
4
|
-
"version": "0.
|
|
3
|
+
"version": "0.52.0",
|
|
5
4
|
"private": false,
|
|
6
5
|
"license": "MIT",
|
|
7
6
|
"description": "Intelligent CLI toolkit that automates internationalization workflows with AI-powered translations for JavaScript/TypeScript projects",
|
|
@@ -47,7 +46,10 @@
|
|
|
47
46
|
"types": "./dist/index.d.ts"
|
|
48
47
|
}
|
|
49
48
|
},
|
|
50
|
-
"files": [
|
|
49
|
+
"files": [
|
|
50
|
+
"dist",
|
|
51
|
+
"src"
|
|
52
|
+
],
|
|
51
53
|
"scripts": {
|
|
52
54
|
"analyze": "size-limit --why",
|
|
53
55
|
"build": "tsc && echo '#!/usr/bin/env node' | cat - dist/cli.js > temp && mv temp dist/cli.js && chmod +x dist/cli.js && echo '#!/usr/bin/env node' | cat - dist/mcp-server.js > temp && mv temp dist/mcp-server.js && chmod +x dist/mcp-server.js",
|
|
@@ -89,4 +91,4 @@
|
|
|
89
91
|
"typescript": "^5.9.2"
|
|
90
92
|
},
|
|
91
93
|
"packageManager": "pnpm@10.2.1+sha512.398035c7bd696d0ba0b10a688ed558285329d27ea994804a52bad9167d8e3a72bcb993f9699585d3ca25779ac64949ef422757a6c31102c12ab932e5cbe5cc92"
|
|
92
|
-
}
|
|
94
|
+
}
|
package/src/cli.ts
CHANGED
|
@@ -76,9 +76,9 @@ for (const command of commands) {
|
|
|
76
76
|
|
|
77
77
|
const isGemini = (config.model as string)?.includes("gemini")
|
|
78
78
|
|
|
79
|
-
// Get API key from
|
|
80
|
-
const openaiKey =
|
|
81
|
-
const geminiKey =
|
|
79
|
+
// Get API key from config only
|
|
80
|
+
const openaiKey = config.OPENAI_API_KEY
|
|
81
|
+
const geminiKey = config.GEMINI_API_KEY
|
|
82
82
|
|
|
83
83
|
// Select appropriate key based on model type
|
|
84
84
|
const key = isGemini ? geminiKey : openaiKey
|
|
@@ -86,7 +86,7 @@ for (const command of commands) {
|
|
|
86
86
|
if (!key) {
|
|
87
87
|
const keyType = isGemini ? "GEMINI_API_KEY" : "OPENAI_API_KEY"
|
|
88
88
|
console.error(
|
|
89
|
-
`Please provide a${isGemini ? " Gemini" : "n OpenAI"} API key in your
|
|
89
|
+
`Please provide a${isGemini ? " Gemini" : "n OpenAI"} API key in your i18n-magic config file as ${keyType}.`,
|
|
90
90
|
)
|
|
91
91
|
process.exit(1)
|
|
92
92
|
}
|
package/src/commands/clean.ts
CHANGED
|
@@ -44,43 +44,46 @@ export const removeUnusedKeys = async (config: Configuration) => {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
// Process each namespace and locale
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
// Process each namespace and locale in parallel
|
|
48
|
+
const results = await Promise.all(
|
|
49
|
+
namespaces.flatMap((namespace) => {
|
|
50
|
+
const usedKeysSet = keysByNamespace[namespace] || new Set()
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const existingKeys = await loadLocalesFile(loadPath, locale, namespace)
|
|
55
|
-
const existingKeysCount = Object.keys(existingKeys).length
|
|
56
|
-
stats.total += existingKeysCount
|
|
52
|
+
return locales.map(async (locale) => {
|
|
53
|
+
const existingKeys = await loadLocalesFile(loadPath, locale, namespace)
|
|
54
|
+
const existingKeysCount = Object.keys(existingKeys).length
|
|
57
55
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
let removedCount = 0
|
|
56
|
+
const cleanedKeys: Record<string, string> = {}
|
|
57
|
+
let removedCount = 0
|
|
61
58
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
for (const [key, value] of Object.entries(existingKeys)) {
|
|
60
|
+
if (usedKeysSet.has(key)) {
|
|
61
|
+
cleanedKeys[key] = value
|
|
62
|
+
} else {
|
|
63
|
+
removedCount++
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (removedCount > 0) {
|
|
68
|
+
await writeLocalesFile(savePath, locale, namespace, cleanedKeys)
|
|
69
|
+
console.log(
|
|
70
|
+
`✓ Removed ${removedCount} unused keys from ${locale}:${namespace} (${
|
|
71
|
+
Object.keys(cleanedKeys).length
|
|
72
|
+
} keys remaining)`,
|
|
73
|
+
)
|
|
65
74
|
} else {
|
|
66
|
-
|
|
75
|
+
console.log(`No unused keys found in ${locale}:${namespace}`)
|
|
67
76
|
}
|
|
68
|
-
}
|
|
69
77
|
|
|
70
|
-
|
|
78
|
+
return { total: existingKeysCount, removed: removedCount }
|
|
79
|
+
})
|
|
80
|
+
})
|
|
81
|
+
)
|
|
71
82
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
`✓ Removed ${removedCount} unused keys from ${locale}:${namespace} (${
|
|
77
|
-
Object.keys(cleanedKeys).length
|
|
78
|
-
} keys remaining)`,
|
|
79
|
-
)
|
|
80
|
-
} else {
|
|
81
|
-
console.log(`No unused keys found in ${locale}:${namespace}`)
|
|
82
|
-
}
|
|
83
|
-
}
|
|
83
|
+
// Aggregate stats from all parallel operations
|
|
84
|
+
for (const result of results) {
|
|
85
|
+
stats.total += result.total
|
|
86
|
+
stats.removed += result.removed
|
|
84
87
|
}
|
|
85
88
|
|
|
86
89
|
if (stats.removed > 0) {
|
package/src/commands/replace.ts
CHANGED
|
@@ -55,8 +55,14 @@ export const replaceTranslation = async (
|
|
|
55
55
|
{ namespace: string; value: string }[]
|
|
56
56
|
> = {}
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
const namespaceKeysResults = await Promise.all(
|
|
59
|
+
namespaces.map(async (namespace) => ({
|
|
60
|
+
namespace,
|
|
61
|
+
keys: await loadLocalesFile(loadPath, defaultLocale, namespace),
|
|
62
|
+
}))
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
for (const { namespace, keys } of namespaceKeysResults) {
|
|
60
66
|
for (const [keyName, value] of Object.entries(keys)) {
|
|
61
67
|
if (!allAvailableKeys[keyName]) {
|
|
62
68
|
allAvailableKeys[keyName] = []
|
|
@@ -105,24 +111,32 @@ export const replaceTranslation = async (
|
|
|
105
111
|
}
|
|
106
112
|
|
|
107
113
|
// Show current translations across namespaces
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
114
|
+
const currentTranslations = await Promise.all(
|
|
115
|
+
targetNamespaces.map(async (namespace) => {
|
|
116
|
+
const keys = await loadLocalesFile(loadPath, defaultLocale, namespace)
|
|
117
|
+
return { namespace, value: keys[keyToReplace] }
|
|
118
|
+
})
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
for (const { namespace, value } of currentTranslations) {
|
|
122
|
+
if (value) {
|
|
111
123
|
console.log(
|
|
112
|
-
`Current translation in ${defaultLocale} (${namespace}): "${
|
|
124
|
+
`Current translation in ${defaultLocale} (${namespace}): "${value}"`,
|
|
113
125
|
)
|
|
114
126
|
}
|
|
115
127
|
}
|
|
116
128
|
|
|
117
129
|
const newTranslation = await getTextInput("Enter the new translation: ")
|
|
118
130
|
|
|
119
|
-
//
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
131
|
+
// Batch translate for all non-default locales first
|
|
132
|
+
const translationCache: Record<string, string> = {
|
|
133
|
+
[defaultLocale]: newTranslation,
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const nonDefaultLocales = locales.filter((l) => l !== defaultLocale)
|
|
137
|
+
if (nonDefaultLocales.length > 0) {
|
|
138
|
+
await Promise.all(
|
|
139
|
+
nonDefaultLocales.map(async (locale) => {
|
|
126
140
|
const translation = await translateKey({
|
|
127
141
|
context,
|
|
128
142
|
inputLanguage: defaultLocale,
|
|
@@ -133,17 +147,24 @@ export const replaceTranslation = async (
|
|
|
133
147
|
openai,
|
|
134
148
|
model: config.model,
|
|
135
149
|
})
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const existingKeys = await loadLocalesFile(loadPath, locale, namespace)
|
|
141
|
-
existingKeys[keyToReplace] = newValue
|
|
142
|
-
await writeLocalesFile(savePath, locale, namespace, existingKeys)
|
|
143
|
-
|
|
144
|
-
console.log(
|
|
145
|
-
`Updated "${keyToReplace}" in ${locale} (${namespace}): "${newValue}"`,
|
|
146
|
-
)
|
|
147
|
-
}
|
|
150
|
+
translationCache[locale] = translation[keyToReplace]
|
|
151
|
+
})
|
|
152
|
+
)
|
|
148
153
|
}
|
|
154
|
+
|
|
155
|
+
// Update the key in all relevant namespaces and locales in parallel
|
|
156
|
+
await Promise.all(
|
|
157
|
+
targetNamespaces.flatMap((namespace) =>
|
|
158
|
+
locales.map(async (locale) => {
|
|
159
|
+
const newValue = translationCache[locale]
|
|
160
|
+
const existingKeys = await loadLocalesFile(loadPath, locale, namespace)
|
|
161
|
+
existingKeys[keyToReplace] = newValue
|
|
162
|
+
await writeLocalesFile(savePath, locale, namespace, existingKeys)
|
|
163
|
+
|
|
164
|
+
console.log(
|
|
165
|
+
`Updated "${keyToReplace}" in ${locale} (${namespace}): "${newValue}"`,
|
|
166
|
+
)
|
|
167
|
+
})
|
|
168
|
+
)
|
|
169
|
+
)
|
|
149
170
|
}
|
package/src/commands/scan.ts
CHANGED
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
checkAllKeysExist,
|
|
4
4
|
getMissingKeys,
|
|
5
5
|
getTextInput,
|
|
6
|
-
findExistingTranslation,
|
|
7
6
|
findExistingTranslations,
|
|
8
7
|
loadLocalesFile,
|
|
9
8
|
translateKey,
|
|
@@ -93,40 +92,51 @@ export const translateMissing = async (config: Configuration) => {
|
|
|
93
92
|
|
|
94
93
|
const allLocales = disableTranslationDuringScan ? [defaultLocale] : locales
|
|
95
94
|
|
|
96
|
-
for
|
|
97
|
-
|
|
95
|
+
// Batch translate for all non-default locales in parallel
|
|
96
|
+
const translationCache: Record<string, Record<string, string>> = {
|
|
97
|
+
[defaultLocale]: newKeysObject,
|
|
98
|
+
}
|
|
98
99
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
100
|
+
const nonDefaultLocales = allLocales.filter((l) => l !== defaultLocale)
|
|
101
|
+
if (nonDefaultLocales.length > 0) {
|
|
102
|
+
await Promise.all(
|
|
103
|
+
nonDefaultLocales.map(async (locale) => {
|
|
104
|
+
const translatedValues = await translateKey({
|
|
105
|
+
inputLanguage: defaultLocale,
|
|
106
|
+
outputLanguage: locale,
|
|
107
|
+
context,
|
|
108
|
+
object: newKeysObject,
|
|
109
|
+
openai,
|
|
110
|
+
model: config.model,
|
|
111
|
+
})
|
|
112
|
+
translationCache[locale] = translatedValues
|
|
109
113
|
})
|
|
110
|
-
|
|
114
|
+
)
|
|
115
|
+
}
|
|
111
116
|
|
|
112
|
-
|
|
113
|
-
|
|
117
|
+
// Process all locale/namespace combinations in parallel
|
|
118
|
+
await Promise.all(
|
|
119
|
+
allLocales.flatMap((locale) =>
|
|
120
|
+
namespaces.map(async (namespace) => {
|
|
121
|
+
const existingKeys = await loadLocalesFile(loadPath, locale, namespace)
|
|
114
122
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
123
|
+
const relevantKeys = newKeysWithDefaultLocale.filter((key) =>
|
|
124
|
+
key.namespaces?.includes(namespace),
|
|
125
|
+
)
|
|
118
126
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
127
|
+
if (relevantKeys.length === 0) {
|
|
128
|
+
return
|
|
129
|
+
}
|
|
122
130
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
131
|
+
const translatedValues = translationCache[locale]
|
|
132
|
+
for (const key of relevantKeys) {
|
|
133
|
+
existingKeys[key.key] = translatedValues[key.key]
|
|
134
|
+
}
|
|
126
135
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
136
|
+
await writeLocalesFile(savePath, locale, namespace, existingKeys)
|
|
137
|
+
})
|
|
138
|
+
)
|
|
139
|
+
)
|
|
130
140
|
|
|
131
141
|
await checkAllKeysExist(config)
|
|
132
142
|
|
package/src/mcp-server.ts
CHANGED
|
@@ -112,10 +112,10 @@ class I18nMagicServer {
|
|
|
112
112
|
try {
|
|
113
113
|
this.config = await loadConfig()
|
|
114
114
|
|
|
115
|
-
// Initialize OpenAI client if API key is available
|
|
115
|
+
// Initialize OpenAI client if API key is available in config
|
|
116
116
|
const isGemini = (this.config.model as string)?.includes("gemini")
|
|
117
|
-
const openaiKey =
|
|
118
|
-
const geminiKey =
|
|
117
|
+
const openaiKey = this.config.OPENAI_API_KEY
|
|
118
|
+
const geminiKey = this.config.GEMINI_API_KEY
|
|
119
119
|
const key = isGemini ? geminiKey : openaiKey
|
|
120
120
|
|
|
121
121
|
if (key) {
|
|
@@ -130,7 +130,7 @@ class I18nMagicServer {
|
|
|
130
130
|
)
|
|
131
131
|
} else {
|
|
132
132
|
console.error(
|
|
133
|
-
"[i18n-magic MCP] No API key found. Automatic translation will be disabled.",
|
|
133
|
+
"[i18n-magic MCP] No API key found in config. Automatic translation will be disabled.",
|
|
134
134
|
)
|
|
135
135
|
}
|
|
136
136
|
|
|
@@ -202,10 +202,17 @@ class I18nMagicServer {
|
|
|
202
202
|
// Ensure config is loaded
|
|
203
203
|
const config = await this.ensureConfig()
|
|
204
204
|
|
|
205
|
-
//
|
|
206
|
-
// Only console.error is allowed in MCP servers
|
|
205
|
+
// Capture console.log output for diagnostics
|
|
207
206
|
const originalConsoleLog = console.log
|
|
208
|
-
|
|
207
|
+
const logMessages: string[] = []
|
|
208
|
+
console.log = (...args: any[]) => {
|
|
209
|
+
const message = args.map(arg =>
|
|
210
|
+
typeof arg === 'object' ? JSON.stringify(arg) : String(arg)
|
|
211
|
+
).join(' ')
|
|
212
|
+
logMessages.push(message)
|
|
213
|
+
// Also log to stderr for debugging
|
|
214
|
+
console.error(`[i18n-magic] ${message}`)
|
|
215
|
+
}
|
|
209
216
|
|
|
210
217
|
let result
|
|
211
218
|
try {
|
|
@@ -235,6 +242,7 @@ class I18nMagicServer {
|
|
|
235
242
|
nextStep: result.locale.includes(',')
|
|
236
243
|
? "Run 'i18n-magic sync' to translate this key to other locales"
|
|
237
244
|
: "Key was translated to default locale. Run 'i18n-magic sync' to translate to other locales",
|
|
245
|
+
diagnostics: logMessages.join('\n'),
|
|
238
246
|
},
|
|
239
247
|
null,
|
|
240
248
|
2,
|