copyI18n
Extract and manage multilingual texts from specified directories using automated translation APIs, ensuring consistent localization across projects with MCP-Serve’s translation service.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| rootPath | Yes |
Implementation Reference
- src/index.ts:56-98 (handler)Handler for copyI18n tool: downloads language files for ZhCn (and EnUs if port 5500) using downFile, pipes to temporary file in rootPath, copies to src/lang/source/, cleans up temp, returns text result.async ({ rootPath }) => { let langArr = [{ name: "ZhCn", value: 1, filePath: "ZhCn.js" }]; // 目前只有企业版需要英文文件 if (port === "5500") { langArr.push({ name: "EnUs", value: 2, filePath: "EnUs.js" }); } // 获取工作区根路径 // const rootPath = process.cwd(); let result = ""; try { for (let lang of langArr) { const langTargetPath = path.join( rootPath, "src/lang/source", lang.filePath ); const tempFilePath = path.join(rootPath, lang.filePath); // 创建一个写入流 const writer = fs.createWriteStream(tempFilePath); const res = await downFile(lang.value); res.data.pipe(writer); await new Promise<void>((resolve, reject) => { writer.on("finish", () => resolve()); writer.on("error", (err) => reject(err)); }); fs.copyFileSync(tempFilePath, langTargetPath); fs.unlinkSync(tempFilePath); console.log(`${lang.name}文件复制成功`); result = `${tempFilePath}文件复制成功`; } } catch (error) { console.log("文件复制失败", error); result = `文件复制失败${error},${rootPath},`; } return { content: [ { type: "text", text: result, }, ], }; }
- src/index.ts:53-55 (schema)Input schema: object with required 'rootPath' string property.{ rootPath: z.string(), },
- src/index.ts:52-99 (registration)Registers the 'copyI18n' tool on the MCP server with its schema and handler."copyI18n", { rootPath: z.string(), }, async ({ rootPath }) => { let langArr = [{ name: "ZhCn", value: 1, filePath: "ZhCn.js" }]; // 目前只有企业版需要英文文件 if (port === "5500") { langArr.push({ name: "EnUs", value: 2, filePath: "EnUs.js" }); } // 获取工作区根路径 // const rootPath = process.cwd(); let result = ""; try { for (let lang of langArr) { const langTargetPath = path.join( rootPath, "src/lang/source", lang.filePath ); const tempFilePath = path.join(rootPath, lang.filePath); // 创建一个写入流 const writer = fs.createWriteStream(tempFilePath); const res = await downFile(lang.value); res.data.pipe(writer); await new Promise<void>((resolve, reject) => { writer.on("finish", () => resolve()); writer.on("error", (err) => reject(err)); }); fs.copyFileSync(tempFilePath, langTargetPath); fs.unlinkSync(tempFilePath); console.log(`${lang.name}文件复制成功`); result = `${tempFilePath}文件复制成功`; } } catch (error) { console.log("文件复制失败", error); result = `文件复制失败${error},${rootPath},`; } return { content: [ { type: "text", text: result, }, ], }; } );