@scoutello/i18n-magic 0.42.0 → 0.43.1
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/README.md +19 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +23 -7
- package/dist/lib/utils.js.map +1 -1
- package/dist/mcp-server.js +139 -6
- package/dist/mcp-server.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/utils.ts +26 -19
- package/src/mcp-server.ts +169 -9
package/README.md
CHANGED
|
@@ -346,11 +346,18 @@ You should see: `[i18n-magic MCP] Server started and ready to accept connections
|
|
|
346
346
|
|
|
347
347
|
### How it works
|
|
348
348
|
|
|
349
|
+
**Workflow 1: Adding individual keys**
|
|
349
350
|
1. While coding, the LLM identifies a missing translation key
|
|
350
351
|
2. The LLM calls the `add_translation_key` tool to add it with an English value
|
|
351
352
|
3. The key is automatically added to the `en` locale (regardless of your `defaultLocale`)
|
|
352
353
|
4. Run `i18n-magic sync` to translate the key to all other configured locales
|
|
353
354
|
|
|
355
|
+
**Workflow 2: Batch checking missing keys**
|
|
356
|
+
1. The LLM calls `list_untranslated_keys` to get a complete overview
|
|
357
|
+
2. Review all missing keys grouped by namespace
|
|
358
|
+
3. Add keys using `add_translation_key` or run `i18n-magic scan` for batch processing
|
|
359
|
+
4. Run `i18n-magic sync` to translate all new keys
|
|
360
|
+
|
|
354
361
|
### Available MCP Tools
|
|
355
362
|
|
|
356
363
|
**add_translation_key**: Add a new translation key with an English value
|
|
@@ -369,4 +376,16 @@ Example:
|
|
|
369
376
|
}
|
|
370
377
|
```
|
|
371
378
|
|
|
379
|
+
**list_untranslated_keys**: List all translation keys used in the codebase that are not yet defined
|
|
380
|
+
|
|
381
|
+
Parameters:
|
|
382
|
+
- `namespace` (optional): Check a specific namespace only (defaults to all namespaces)
|
|
383
|
+
|
|
384
|
+
Example:
|
|
385
|
+
```json
|
|
386
|
+
{}
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
Response shows all missing keys grouped by namespace with counts and next steps.
|
|
390
|
+
|
|
372
391
|
For detailed setup instructions and troubleshooting, see [MCP-SERVER.md](./MCP-SERVER.md).
|
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":"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
|
|
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
|
@@ -485,7 +485,9 @@ export const addTranslationKey = async ({ key, value, namespace, config, }) => {
|
|
|
485
485
|
}
|
|
486
486
|
// Always use "en" as the locale for adding keys (English)
|
|
487
487
|
const locale = "en";
|
|
488
|
-
console.
|
|
488
|
+
// Use console.error for logging when called from MCP server (console.log is suppressed)
|
|
489
|
+
const log = console.log;
|
|
490
|
+
log(`➕ Adding translation key "${key}" to namespace "${targetNamespace}" (${locale})`);
|
|
489
491
|
// Load existing keys for the English locale
|
|
490
492
|
let existingKeys;
|
|
491
493
|
try {
|
|
@@ -493,21 +495,29 @@ export const addTranslationKey = async ({ key, value, namespace, config, }) => {
|
|
|
493
495
|
}
|
|
494
496
|
catch (error) {
|
|
495
497
|
// If file doesn't exist, start with empty object
|
|
496
|
-
|
|
498
|
+
log(`📄 Creating new namespace file for ${locale}/${targetNamespace}`);
|
|
497
499
|
existingKeys = {};
|
|
498
500
|
}
|
|
499
501
|
// Check if key already exists
|
|
500
502
|
if (existingKeys[key]) {
|
|
501
|
-
|
|
502
|
-
|
|
503
|
+
log(`⚠️ Key "${key}" already exists in ${locale}/${targetNamespace} with value: "${existingKeys[key]}"`);
|
|
504
|
+
log(` Updating to new value: "${value}"`);
|
|
503
505
|
}
|
|
504
506
|
// Add or update the key
|
|
505
507
|
existingKeys[key] = value;
|
|
508
|
+
// Log the save path for debugging
|
|
509
|
+
if (typeof savePath === "string") {
|
|
510
|
+
const resolvedPath = savePath
|
|
511
|
+
.replace("{{lng}}", locale)
|
|
512
|
+
.replace("{{ns}}", targetNamespace);
|
|
513
|
+
log(`💾 Saving to: ${resolvedPath}`);
|
|
514
|
+
log(`💾 Current working directory: ${process.cwd()}`);
|
|
515
|
+
}
|
|
506
516
|
// Save the updated keys
|
|
507
517
|
try {
|
|
508
518
|
await writeLocalesFile(savePath, locale, targetNamespace, existingKeys);
|
|
509
|
-
|
|
510
|
-
|
|
519
|
+
log(`✅ Successfully added key "${key}" to ${locale}/${targetNamespace}`);
|
|
520
|
+
log(` Run 'i18n-magic sync' to translate this key to other locales`);
|
|
511
521
|
return {
|
|
512
522
|
success: true,
|
|
513
523
|
key,
|
|
@@ -517,7 +527,13 @@ export const addTranslationKey = async ({ key, value, namespace, config, }) => {
|
|
|
517
527
|
};
|
|
518
528
|
}
|
|
519
529
|
catch (error) {
|
|
520
|
-
|
|
530
|
+
const baseError = error instanceof Error ? error : new Error(String(error));
|
|
531
|
+
const translationError = new TranslationError(`Failed to save translation key "${key}" to ${locale}/${targetNamespace}: ${baseError.message}`, locale, targetNamespace, baseError);
|
|
532
|
+
// Preserve the stack trace
|
|
533
|
+
if (baseError.stack) {
|
|
534
|
+
translationError.stack = baseError.stack;
|
|
535
|
+
}
|
|
536
|
+
throw translationError;
|
|
521
537
|
}
|
|
522
538
|
};
|
|
523
539
|
//# sourceMappingURL=utils.js.map
|
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/dist/mcp-server.js
CHANGED
|
@@ -3,8 +3,7 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
5
5
|
import { z } from "zod";
|
|
6
|
-
import { addTranslationKey } from "./lib/utils.js";
|
|
7
|
-
import { loadConfig } from "./lib/utils.js";
|
|
6
|
+
import { addTranslationKey, getMissingKeys, loadConfig } from "./lib/utils.js";
|
|
8
7
|
import path from "path";
|
|
9
8
|
import fs from "fs";
|
|
10
9
|
import { fileURLToPath } from "url";
|
|
@@ -63,6 +62,13 @@ const AddTranslationKeySchema = z.object({
|
|
|
63
62
|
.optional()
|
|
64
63
|
.describe("Optional namespace to add the key to. If not provided, uses the default namespace from config."),
|
|
65
64
|
});
|
|
65
|
+
// Zod schema for the list_untranslated_keys tool parameters
|
|
66
|
+
const ListUntranslatedKeysSchema = z.object({
|
|
67
|
+
namespace: z
|
|
68
|
+
.string()
|
|
69
|
+
.optional()
|
|
70
|
+
.describe("Optional namespace to check. If not provided, checks all namespaces."),
|
|
71
|
+
});
|
|
66
72
|
class I18nMagicServer {
|
|
67
73
|
constructor() {
|
|
68
74
|
this.config = null;
|
|
@@ -122,6 +128,20 @@ class I18nMagicServer {
|
|
|
122
128
|
required: ["key", "value"],
|
|
123
129
|
},
|
|
124
130
|
},
|
|
131
|
+
{
|
|
132
|
+
name: "list_untranslated_keys",
|
|
133
|
+
description: "List all translation keys that are used in the codebase but are not yet defined in the locale files. This helps identify missing translations that need to be added. The tool scans the codebase for translation keys and compares them against existing locale files.",
|
|
134
|
+
inputSchema: {
|
|
135
|
+
type: "object",
|
|
136
|
+
properties: {
|
|
137
|
+
namespace: {
|
|
138
|
+
type: "string",
|
|
139
|
+
description: "Optional namespace to check. If not provided, checks all namespaces.",
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
required: [],
|
|
143
|
+
},
|
|
144
|
+
},
|
|
125
145
|
],
|
|
126
146
|
};
|
|
127
147
|
});
|
|
@@ -151,8 +171,6 @@ class I18nMagicServer {
|
|
|
151
171
|
// Restore console.log
|
|
152
172
|
console.log = originalConsoleLog;
|
|
153
173
|
}
|
|
154
|
-
// Log to stderr for debugging (this is safe in MCP)
|
|
155
|
-
console.error(`[i18n-magic MCP] Added key "${result.key}" to ${result.locale}/${result.namespace}`);
|
|
156
174
|
return {
|
|
157
175
|
content: [
|
|
158
176
|
{
|
|
@@ -172,8 +190,122 @@ class I18nMagicServer {
|
|
|
172
190
|
}
|
|
173
191
|
catch (error) {
|
|
174
192
|
const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
|
|
175
|
-
//
|
|
176
|
-
|
|
193
|
+
// Get more detailed error information
|
|
194
|
+
let errorDetails = errorMessage;
|
|
195
|
+
if (error instanceof Error) {
|
|
196
|
+
// Check if there's a cause
|
|
197
|
+
const cause = error.cause;
|
|
198
|
+
if (cause instanceof Error) {
|
|
199
|
+
errorDetails = `${errorMessage}\nCause: ${cause.message}\nStack: ${cause.stack}`;
|
|
200
|
+
}
|
|
201
|
+
else if (cause) {
|
|
202
|
+
errorDetails = `${errorMessage}\nCause: ${JSON.stringify(cause)}`;
|
|
203
|
+
}
|
|
204
|
+
// Include stack trace
|
|
205
|
+
if (error.stack) {
|
|
206
|
+
errorDetails = `${errorDetails}\nStack: ${error.stack}`;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Log detailed error to stderr for debugging
|
|
210
|
+
console.error(`[i18n-magic MCP] Error adding translation key:`);
|
|
211
|
+
console.error(errorDetails);
|
|
212
|
+
return {
|
|
213
|
+
content: [
|
|
214
|
+
{
|
|
215
|
+
type: "text",
|
|
216
|
+
text: JSON.stringify({
|
|
217
|
+
success: false,
|
|
218
|
+
error: errorMessage,
|
|
219
|
+
details: errorDetails,
|
|
220
|
+
}, null, 2),
|
|
221
|
+
},
|
|
222
|
+
],
|
|
223
|
+
isError: true,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (request.params.name === "list_untranslated_keys") {
|
|
228
|
+
try {
|
|
229
|
+
// Validate parameters
|
|
230
|
+
const params = ListUntranslatedKeysSchema.parse(request.params.arguments);
|
|
231
|
+
// Ensure config is loaded
|
|
232
|
+
const config = await this.ensureConfig();
|
|
233
|
+
// Suppress console.log to prevent interference with MCP JSON protocol
|
|
234
|
+
const originalConsoleLog = console.log;
|
|
235
|
+
console.log = () => { };
|
|
236
|
+
let missingKeys;
|
|
237
|
+
try {
|
|
238
|
+
// Get missing keys from the codebase
|
|
239
|
+
missingKeys = await getMissingKeys(config);
|
|
240
|
+
}
|
|
241
|
+
finally {
|
|
242
|
+
// Restore console.log
|
|
243
|
+
console.log = originalConsoleLog;
|
|
244
|
+
}
|
|
245
|
+
// Filter by namespace if specified
|
|
246
|
+
let filteredKeys = missingKeys;
|
|
247
|
+
if (params.namespace) {
|
|
248
|
+
filteredKeys = missingKeys.filter((item) => item.namespaces.includes(params.namespace));
|
|
249
|
+
}
|
|
250
|
+
// Format the results
|
|
251
|
+
const keysByNamespace = {};
|
|
252
|
+
for (const item of filteredKeys) {
|
|
253
|
+
for (const namespace of item.namespaces) {
|
|
254
|
+
if (!keysByNamespace[namespace]) {
|
|
255
|
+
keysByNamespace[namespace] = [];
|
|
256
|
+
}
|
|
257
|
+
keysByNamespace[namespace].push(item.key);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
// Create a summary
|
|
261
|
+
const summary = {
|
|
262
|
+
totalMissingKeys: filteredKeys.length,
|
|
263
|
+
namespaces: Object.entries(keysByNamespace).map(([namespace, keys]) => ({
|
|
264
|
+
namespace,
|
|
265
|
+
missingKeyCount: keys.length,
|
|
266
|
+
keys: keys.sort(),
|
|
267
|
+
})),
|
|
268
|
+
};
|
|
269
|
+
return {
|
|
270
|
+
content: [
|
|
271
|
+
{
|
|
272
|
+
type: "text",
|
|
273
|
+
text: JSON.stringify({
|
|
274
|
+
success: true,
|
|
275
|
+
message: filteredKeys.length === 0
|
|
276
|
+
? "No missing translation keys found! All keys used in the codebase are defined."
|
|
277
|
+
: `Found ${filteredKeys.length} missing translation key${filteredKeys.length === 1 ? "" : "s"}`,
|
|
278
|
+
...summary,
|
|
279
|
+
nextSteps: filteredKeys.length > 0
|
|
280
|
+
? [
|
|
281
|
+
"Use add_translation_key to add these keys with English values",
|
|
282
|
+
"Or run 'i18n-magic scan' to add them interactively",
|
|
283
|
+
]
|
|
284
|
+
: [],
|
|
285
|
+
}, null, 2),
|
|
286
|
+
},
|
|
287
|
+
],
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
|
|
292
|
+
// Get more detailed error information
|
|
293
|
+
let errorDetails = errorMessage;
|
|
294
|
+
if (error instanceof Error) {
|
|
295
|
+
const cause = error.cause;
|
|
296
|
+
if (cause instanceof Error) {
|
|
297
|
+
errorDetails = `${errorMessage}\nCause: ${cause.message}\nStack: ${cause.stack}`;
|
|
298
|
+
}
|
|
299
|
+
else if (cause) {
|
|
300
|
+
errorDetails = `${errorMessage}\nCause: ${JSON.stringify(cause)}`;
|
|
301
|
+
}
|
|
302
|
+
if (error.stack) {
|
|
303
|
+
errorDetails = `${errorDetails}\nStack: ${error.stack}`;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Log detailed error to stderr for debugging
|
|
307
|
+
console.error(`[i18n-magic MCP] Error listing untranslated keys:`);
|
|
308
|
+
console.error(errorDetails);
|
|
177
309
|
return {
|
|
178
310
|
content: [
|
|
179
311
|
{
|
|
@@ -181,6 +313,7 @@ class I18nMagicServer {
|
|
|
181
313
|
text: JSON.stringify({
|
|
182
314
|
success: false,
|
|
183
315
|
error: errorMessage,
|
|
316
|
+
details: errorDetails,
|
|
184
317
|
}, null, 2),
|
|
185
318
|
},
|
|
186
319
|
],
|
package/dist/mcp-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,iBAAiB,EAAE,
|
|
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,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
|
|
3
3
|
"name": "@scoutello/i18n-magic",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.43.1",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"description": "Intelligent CLI toolkit that automates internationalization workflows with AI-powered translations for JavaScript/TypeScript projects",
|
package/src/lib/utils.ts
CHANGED
|
@@ -718,9 +718,9 @@ export const addTranslationKey = async ({
|
|
|
718
718
|
// Always use "en" as the locale for adding keys (English)
|
|
719
719
|
const locale = "en"
|
|
720
720
|
|
|
721
|
-
console.log
|
|
722
|
-
|
|
723
|
-
)
|
|
721
|
+
// Use console.error for logging when called from MCP server (console.log is suppressed)
|
|
722
|
+
const log = console.log
|
|
723
|
+
log(`➕ Adding translation key "${key}" to namespace "${targetNamespace}" (${locale})`)
|
|
724
724
|
|
|
725
725
|
// Load existing keys for the English locale
|
|
726
726
|
let existingKeys: Record<string, string>
|
|
@@ -728,32 +728,33 @@ export const addTranslationKey = async ({
|
|
|
728
728
|
existingKeys = await loadLocalesFile(loadPath, locale, targetNamespace)
|
|
729
729
|
} catch (error) {
|
|
730
730
|
// If file doesn't exist, start with empty object
|
|
731
|
-
|
|
732
|
-
`📄 Creating new namespace file for ${locale}/${targetNamespace}`,
|
|
733
|
-
)
|
|
731
|
+
log(`📄 Creating new namespace file for ${locale}/${targetNamespace}`)
|
|
734
732
|
existingKeys = {}
|
|
735
733
|
}
|
|
736
734
|
|
|
737
735
|
// Check if key already exists
|
|
738
736
|
if (existingKeys[key]) {
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
)
|
|
742
|
-
console.log(` Updating to new value: "${value}"`)
|
|
737
|
+
log(`⚠️ Key "${key}" already exists in ${locale}/${targetNamespace} with value: "${existingKeys[key]}"`)
|
|
738
|
+
log(` Updating to new value: "${value}"`)
|
|
743
739
|
}
|
|
744
740
|
|
|
745
741
|
// Add or update the key
|
|
746
742
|
existingKeys[key] = value
|
|
747
743
|
|
|
744
|
+
// Log the save path for debugging
|
|
745
|
+
if (typeof savePath === "string") {
|
|
746
|
+
const resolvedPath = savePath
|
|
747
|
+
.replace("{{lng}}", locale)
|
|
748
|
+
.replace("{{ns}}", targetNamespace)
|
|
749
|
+
log(`💾 Saving to: ${resolvedPath}`)
|
|
750
|
+
log(`💾 Current working directory: ${process.cwd()}`)
|
|
751
|
+
}
|
|
752
|
+
|
|
748
753
|
// Save the updated keys
|
|
749
754
|
try {
|
|
750
755
|
await writeLocalesFile(savePath, locale, targetNamespace, existingKeys)
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
)
|
|
754
|
-
console.log(
|
|
755
|
-
` Run 'i18n-magic sync' to translate this key to other locales`,
|
|
756
|
-
)
|
|
756
|
+
log(`✅ Successfully added key "${key}" to ${locale}/${targetNamespace}`)
|
|
757
|
+
log(` Run 'i18n-magic sync' to translate this key to other locales`)
|
|
757
758
|
return {
|
|
758
759
|
success: true,
|
|
759
760
|
key,
|
|
@@ -762,11 +763,17 @@ export const addTranslationKey = async ({
|
|
|
762
763
|
locale,
|
|
763
764
|
}
|
|
764
765
|
} catch (error) {
|
|
765
|
-
|
|
766
|
-
|
|
766
|
+
const baseError = error instanceof Error ? error : new Error(String(error))
|
|
767
|
+
const translationError = new TranslationError(
|
|
768
|
+
`Failed to save translation key "${key}" to ${locale}/${targetNamespace}: ${baseError.message}`,
|
|
767
769
|
locale,
|
|
768
770
|
targetNamespace,
|
|
769
|
-
|
|
771
|
+
baseError,
|
|
770
772
|
)
|
|
773
|
+
// Preserve the stack trace
|
|
774
|
+
if (baseError.stack) {
|
|
775
|
+
translationError.stack = baseError.stack
|
|
776
|
+
}
|
|
777
|
+
throw translationError
|
|
771
778
|
}
|
|
772
779
|
}
|
package/src/mcp-server.ts
CHANGED
|
@@ -5,8 +5,7 @@ import {
|
|
|
5
5
|
ListToolsRequestSchema,
|
|
6
6
|
} from "@modelcontextprotocol/sdk/types.js"
|
|
7
7
|
import { z } from "zod"
|
|
8
|
-
import { addTranslationKey } from "./lib/utils.js"
|
|
9
|
-
import { loadConfig } from "./lib/utils.js"
|
|
8
|
+
import { addTranslationKey, getMissingKeys, loadConfig } from "./lib/utils.js"
|
|
10
9
|
import type { Configuration } from "./lib/types.js"
|
|
11
10
|
import path from "path"
|
|
12
11
|
import fs from "fs"
|
|
@@ -78,6 +77,16 @@ const AddTranslationKeySchema = z.object({
|
|
|
78
77
|
),
|
|
79
78
|
})
|
|
80
79
|
|
|
80
|
+
// Zod schema for the list_untranslated_keys tool parameters
|
|
81
|
+
const ListUntranslatedKeysSchema = z.object({
|
|
82
|
+
namespace: z
|
|
83
|
+
.string()
|
|
84
|
+
.optional()
|
|
85
|
+
.describe(
|
|
86
|
+
"Optional namespace to check. If not provided, checks all namespaces.",
|
|
87
|
+
),
|
|
88
|
+
})
|
|
89
|
+
|
|
81
90
|
class I18nMagicServer {
|
|
82
91
|
private server: Server
|
|
83
92
|
private config: Configuration | null = null
|
|
@@ -153,6 +162,22 @@ class I18nMagicServer {
|
|
|
153
162
|
required: ["key", "value"],
|
|
154
163
|
},
|
|
155
164
|
},
|
|
165
|
+
{
|
|
166
|
+
name: "list_untranslated_keys",
|
|
167
|
+
description:
|
|
168
|
+
"List all translation keys that are used in the codebase but are not yet defined in the locale files. This helps identify missing translations that need to be added. The tool scans the codebase for translation keys and compares them against existing locale files.",
|
|
169
|
+
inputSchema: {
|
|
170
|
+
type: "object",
|
|
171
|
+
properties: {
|
|
172
|
+
namespace: {
|
|
173
|
+
type: "string",
|
|
174
|
+
description:
|
|
175
|
+
"Optional namespace to check. If not provided, checks all namespaces.",
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
required: [],
|
|
179
|
+
},
|
|
180
|
+
},
|
|
156
181
|
],
|
|
157
182
|
}
|
|
158
183
|
})
|
|
@@ -186,11 +211,6 @@ class I18nMagicServer {
|
|
|
186
211
|
console.log = originalConsoleLog
|
|
187
212
|
}
|
|
188
213
|
|
|
189
|
-
// Log to stderr for debugging (this is safe in MCP)
|
|
190
|
-
console.error(
|
|
191
|
-
`[i18n-magic MCP] Added key "${result.key}" to ${result.locale}/${result.namespace}`,
|
|
192
|
-
)
|
|
193
|
-
|
|
194
214
|
return {
|
|
195
215
|
content: [
|
|
196
216
|
{
|
|
@@ -216,9 +236,148 @@ class I18nMagicServer {
|
|
|
216
236
|
const errorMessage =
|
|
217
237
|
error instanceof Error ? error.message : "Unknown error occurred"
|
|
218
238
|
|
|
219
|
-
//
|
|
220
|
-
|
|
239
|
+
// Get more detailed error information
|
|
240
|
+
let errorDetails = errorMessage
|
|
241
|
+
if (error instanceof Error) {
|
|
242
|
+
// Check if there's a cause
|
|
243
|
+
const cause = (error as any).cause
|
|
244
|
+
if (cause instanceof Error) {
|
|
245
|
+
errorDetails = `${errorMessage}\nCause: ${cause.message}\nStack: ${cause.stack}`
|
|
246
|
+
} else if (cause) {
|
|
247
|
+
errorDetails = `${errorMessage}\nCause: ${JSON.stringify(cause)}`
|
|
248
|
+
}
|
|
249
|
+
// Include stack trace
|
|
250
|
+
if (error.stack) {
|
|
251
|
+
errorDetails = `${errorDetails}\nStack: ${error.stack}`
|
|
252
|
+
}
|
|
253
|
+
}
|
|
221
254
|
|
|
255
|
+
// Log detailed error to stderr for debugging
|
|
256
|
+
console.error(`[i18n-magic MCP] Error adding translation key:`)
|
|
257
|
+
console.error(errorDetails)
|
|
258
|
+
|
|
259
|
+
return {
|
|
260
|
+
content: [
|
|
261
|
+
{
|
|
262
|
+
type: "text",
|
|
263
|
+
text: JSON.stringify(
|
|
264
|
+
{
|
|
265
|
+
success: false,
|
|
266
|
+
error: errorMessage,
|
|
267
|
+
details: errorDetails,
|
|
268
|
+
},
|
|
269
|
+
null,
|
|
270
|
+
2,
|
|
271
|
+
),
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
isError: true,
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
if (request.params.name === "list_untranslated_keys") {
|
|
280
|
+
try {
|
|
281
|
+
// Validate parameters
|
|
282
|
+
const params = ListUntranslatedKeysSchema.parse(
|
|
283
|
+
request.params.arguments,
|
|
284
|
+
)
|
|
285
|
+
|
|
286
|
+
// Ensure config is loaded
|
|
287
|
+
const config = await this.ensureConfig()
|
|
288
|
+
|
|
289
|
+
// Suppress console.log to prevent interference with MCP JSON protocol
|
|
290
|
+
const originalConsoleLog = console.log
|
|
291
|
+
console.log = () => {}
|
|
292
|
+
|
|
293
|
+
let missingKeys
|
|
294
|
+
try {
|
|
295
|
+
// Get missing keys from the codebase
|
|
296
|
+
missingKeys = await getMissingKeys(config)
|
|
297
|
+
} finally {
|
|
298
|
+
// Restore console.log
|
|
299
|
+
console.log = originalConsoleLog
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// Filter by namespace if specified
|
|
303
|
+
let filteredKeys = missingKeys
|
|
304
|
+
if (params.namespace) {
|
|
305
|
+
filteredKeys = missingKeys.filter((item) =>
|
|
306
|
+
item.namespaces.includes(params.namespace!),
|
|
307
|
+
)
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// Format the results
|
|
311
|
+
const keysByNamespace: Record<string, string[]> = {}
|
|
312
|
+
for (const item of filteredKeys) {
|
|
313
|
+
for (const namespace of item.namespaces) {
|
|
314
|
+
if (!keysByNamespace[namespace]) {
|
|
315
|
+
keysByNamespace[namespace] = []
|
|
316
|
+
}
|
|
317
|
+
keysByNamespace[namespace].push(item.key)
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// Create a summary
|
|
322
|
+
const summary = {
|
|
323
|
+
totalMissingKeys: filteredKeys.length,
|
|
324
|
+
namespaces: Object.entries(keysByNamespace).map(
|
|
325
|
+
([namespace, keys]) => ({
|
|
326
|
+
namespace,
|
|
327
|
+
missingKeyCount: keys.length,
|
|
328
|
+
keys: keys.sort(),
|
|
329
|
+
}),
|
|
330
|
+
),
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
return {
|
|
334
|
+
content: [
|
|
335
|
+
{
|
|
336
|
+
type: "text",
|
|
337
|
+
text: JSON.stringify(
|
|
338
|
+
{
|
|
339
|
+
success: true,
|
|
340
|
+
message:
|
|
341
|
+
filteredKeys.length === 0
|
|
342
|
+
? "No missing translation keys found! All keys used in the codebase are defined."
|
|
343
|
+
: `Found ${filteredKeys.length} missing translation key${filteredKeys.length === 1 ? "" : "s"}`,
|
|
344
|
+
...summary,
|
|
345
|
+
nextSteps:
|
|
346
|
+
filteredKeys.length > 0
|
|
347
|
+
? [
|
|
348
|
+
"Use add_translation_key to add these keys with English values",
|
|
349
|
+
"Or run 'i18n-magic scan' to add them interactively",
|
|
350
|
+
]
|
|
351
|
+
: [],
|
|
352
|
+
},
|
|
353
|
+
null,
|
|
354
|
+
2,
|
|
355
|
+
),
|
|
356
|
+
},
|
|
357
|
+
],
|
|
358
|
+
}
|
|
359
|
+
} catch (error) {
|
|
360
|
+
const errorMessage =
|
|
361
|
+
error instanceof Error ? error.message : "Unknown error occurred"
|
|
362
|
+
|
|
363
|
+
// Get more detailed error information
|
|
364
|
+
let errorDetails = errorMessage
|
|
365
|
+
if (error instanceof Error) {
|
|
366
|
+
const cause = (error as any).cause
|
|
367
|
+
if (cause instanceof Error) {
|
|
368
|
+
errorDetails = `${errorMessage}\nCause: ${cause.message}\nStack: ${cause.stack}`
|
|
369
|
+
} else if (cause) {
|
|
370
|
+
errorDetails = `${errorMessage}\nCause: ${JSON.stringify(cause)}`
|
|
371
|
+
}
|
|
372
|
+
if (error.stack) {
|
|
373
|
+
errorDetails = `${errorDetails}\nStack: ${error.stack}`
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// Log detailed error to stderr for debugging
|
|
378
|
+
console.error(`[i18n-magic MCP] Error listing untranslated keys:`)
|
|
379
|
+
console.error(errorDetails)
|
|
380
|
+
|
|
222
381
|
return {
|
|
223
382
|
content: [
|
|
224
383
|
{
|
|
@@ -227,6 +386,7 @@ class I18nMagicServer {
|
|
|
227
386
|
{
|
|
228
387
|
success: false,
|
|
229
388
|
error: errorMessage,
|
|
389
|
+
details: errorDetails,
|
|
230
390
|
},
|
|
231
391
|
null,
|
|
232
392
|
2,
|