i18n-mcp-server 0.0.1 → 0.0.2
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 +210 -32
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,63 +1,241 @@
|
|
|
1
1
|
# i18n-MCP-Server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`i18n-mcp-server` 是一个面向前端国际化工作流的 MCP Server,帮助你在 Vue / React / TS 项目里完成文案提取、翻译健康检查、Key 重构和同步扩展。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- `doctor_lint`:检查缺失 key、死 key 和硬编码风险点。
|
|
7
|
-
- `refactor_key`:批量重命名 i18n key。
|
|
8
|
-
- `sync_catalog`:预留翻译平台同步适配器接口。
|
|
5
|
+
## Features
|
|
9
6
|
|
|
10
|
-
|
|
7
|
+
- 提取代码中的硬编码中日韩文本,替换为 `t('key')`
|
|
8
|
+
- 自动生成 i18n key,并更新本地语言 JSON
|
|
9
|
+
- 检查缺失翻译、死 key、残留硬编码文本
|
|
10
|
+
- 批量重命名 i18n key,并同步更新代码与 JSON
|
|
11
|
+
- 预留 Lokalise / 通用 JSON 同步能力
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
- JS / TS 使用 Babel AST,Vue 使用 SFC 解析器。
|
|
14
|
-
- 保留 JSON 原始缩进风格,减少 Git 噪音。
|
|
15
|
-
- 默认以 `zh-CN.json` 作为基准语言。
|
|
13
|
+
## Installation
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
### 方式 1:通过 `npx` 直接运行
|
|
16
|
+
|
|
17
|
+
这是最推荐的方式,不需要全局安装:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
|
|
21
|
-
npm run build
|
|
22
|
-
npm start
|
|
20
|
+
npx -y i18n-mcp-server
|
|
23
21
|
```
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
### 方式 2:全局安装
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install -g i18n-mcp-server
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
安装后可以直接运行:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
i18n-mcp-server
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## MCP Client 配置
|
|
36
|
+
|
|
37
|
+
这个包是一个标准的 `stdio` MCP Server,适用于 Claude Desktop、Cherry Studio、Cline、Cursor MCP 插件等支持 MCP 的客户端。
|
|
38
|
+
|
|
39
|
+
### 通用配置示例
|
|
40
|
+
|
|
41
|
+
使用 `npx`:
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"mcpServers": {
|
|
46
|
+
"i18n": {
|
|
47
|
+
"command": "npx",
|
|
48
|
+
"args": ["-y", "i18n-mcp-server"]
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
使用全局安装命令:
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"mcpServers": {
|
|
59
|
+
"i18n": {
|
|
60
|
+
"command": "i18n-mcp-server"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Windows 兼容写法
|
|
67
|
+
|
|
68
|
+
如果你的 MCP 客户端在 Windows 下对命令解析比较严格,可以这样配置:
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"mcpServers": {
|
|
73
|
+
"i18n": {
|
|
74
|
+
"command": "cmd",
|
|
75
|
+
"args": ["/c", "npx", "-y", "i18n-mcp-server"]
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Quick Start
|
|
82
|
+
|
|
83
|
+
把 MCP Server 接入客户端后,你可以直接让 AI 调用这些工具。
|
|
84
|
+
|
|
85
|
+
示例指令:
|
|
86
|
+
|
|
87
|
+
- “调用 `project_info`,检查当前项目的 i18n 框架”
|
|
88
|
+
- “调用 `doctor_lint`,扫描 `src` 和 `src/locales`”
|
|
89
|
+
- “调用 `extract_replace`,处理 `src/pages/UserProfile.tsx`”
|
|
90
|
+
- “调用 `refactor_key`,把 `common.btn.save` 改成 `common.actions.save`”
|
|
91
|
+
|
|
92
|
+
## Tools
|
|
26
93
|
|
|
27
94
|
### `project_info`
|
|
28
95
|
|
|
29
|
-
读取项目 `package.json
|
|
96
|
+
读取项目 `package.json`,自动识别当前项目使用的国际化方案:
|
|
97
|
+
|
|
98
|
+
- `vue-i18n`
|
|
99
|
+
- `react-i18next`
|
|
100
|
+
- `@angular/localize`
|
|
101
|
+
|
|
102
|
+
示例参数:
|
|
103
|
+
|
|
104
|
+
```json
|
|
105
|
+
{
|
|
106
|
+
"cwd": "C:\\your-project"
|
|
107
|
+
}
|
|
108
|
+
```
|
|
30
109
|
|
|
31
110
|
### `extract_replace`
|
|
32
111
|
|
|
33
|
-
|
|
112
|
+
从源码文件中提取静态文本,生成 key,并返回源码与语言文件的 unified diff。
|
|
34
113
|
|
|
35
|
-
|
|
36
|
-
- 源码 diff
|
|
37
|
-
- 语言 JSON diff
|
|
114
|
+
支持文件类型:
|
|
38
115
|
|
|
39
|
-
|
|
116
|
+
- `.vue`
|
|
117
|
+
- `.tsx`
|
|
118
|
+
- `.jsx`
|
|
119
|
+
- `.ts`
|
|
120
|
+
- `.js`
|
|
121
|
+
|
|
122
|
+
示例参数:
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"cwd": "C:\\your-project",
|
|
127
|
+
"filePath": "src/pages/UserProfile.tsx",
|
|
128
|
+
"localesDir": "src/locales",
|
|
129
|
+
"baseLocale": "zh-CN",
|
|
130
|
+
"targetLocales": ["zh-CN", "en-US", "ja-JP"],
|
|
131
|
+
"keyStrategy": "semantic",
|
|
132
|
+
"namespace": "userProfile"
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
说明:
|
|
137
|
+
|
|
138
|
+
- 默认只返回 diff,不静默写盘
|
|
139
|
+
- `keyStrategy` 支持 `semantic` 和 `hash`
|
|
140
|
+
- 当前版本默认假设源码上下文中已经可以使用 `t()`
|
|
40
141
|
|
|
41
142
|
### `doctor_lint`
|
|
42
143
|
|
|
43
|
-
|
|
144
|
+
检查翻译文件健康状况,包括:
|
|
145
|
+
|
|
146
|
+
- 缺失翻译 key
|
|
147
|
+
- 死 key
|
|
148
|
+
- 未国际化的中日韩硬编码文本
|
|
44
149
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
150
|
+
示例参数:
|
|
151
|
+
|
|
152
|
+
```json
|
|
153
|
+
{
|
|
154
|
+
"cwd": "C:\\your-project",
|
|
155
|
+
"srcDir": "src",
|
|
156
|
+
"localesDir": "src/locales",
|
|
157
|
+
"baseLocale": "zh-CN",
|
|
158
|
+
"compareLocales": ["en-US", "ja-JP"]
|
|
159
|
+
}
|
|
160
|
+
```
|
|
48
161
|
|
|
49
162
|
### `refactor_key`
|
|
50
163
|
|
|
51
|
-
|
|
164
|
+
批量重命名 i18n key,并联动更新代码引用和语言文件。
|
|
165
|
+
|
|
166
|
+
示例参数:
|
|
167
|
+
|
|
168
|
+
```json
|
|
169
|
+
{
|
|
170
|
+
"cwd": "C:\\your-project",
|
|
171
|
+
"srcDir": "src",
|
|
172
|
+
"localesDir": "src/locales",
|
|
173
|
+
"locales": ["zh-CN", "en-US", "ja-JP"],
|
|
174
|
+
"oldKey": "common.btn.save",
|
|
175
|
+
"newKey": "common.actions.save"
|
|
176
|
+
}
|
|
177
|
+
```
|
|
52
178
|
|
|
53
179
|
### `sync_catalog`
|
|
54
180
|
|
|
55
|
-
MVP
|
|
181
|
+
当前是 MVP 预留接口,用于未来对接:
|
|
182
|
+
|
|
183
|
+
- Lokalise
|
|
184
|
+
- Crowdin
|
|
185
|
+
- 本地 JSON 导入导出
|
|
186
|
+
|
|
187
|
+
示例参数:
|
|
188
|
+
|
|
189
|
+
```json
|
|
190
|
+
{
|
|
191
|
+
"provider": "json",
|
|
192
|
+
"mode": "pull",
|
|
193
|
+
"lang": "de"
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Output Behavior
|
|
198
|
+
|
|
199
|
+
为了降低误改代码和误写翻译文件的风险,当前版本默认采用“建议变更”模式:
|
|
200
|
+
|
|
201
|
+
- 返回结构化 JSON 结果
|
|
202
|
+
- 返回受影响文件列表
|
|
203
|
+
- 返回 unified diff
|
|
204
|
+
- 不默认直接改写文件
|
|
205
|
+
|
|
206
|
+
这让 MCP Client 可以在应用补丁前先做确认。
|
|
207
|
+
|
|
208
|
+
## Recommended Project Structure
|
|
209
|
+
|
|
210
|
+
推荐项目目录类似这样:
|
|
211
|
+
|
|
212
|
+
```text
|
|
213
|
+
src/
|
|
214
|
+
pages/
|
|
215
|
+
components/
|
|
216
|
+
locales/
|
|
217
|
+
zh-CN.json
|
|
218
|
+
en-US.json
|
|
219
|
+
ja-JP.json
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Local Development
|
|
223
|
+
|
|
224
|
+
如果你要在本地开发这个 MCP Server:
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
npm install
|
|
228
|
+
npm run check
|
|
229
|
+
npm run build
|
|
230
|
+
npm start
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Current Limitations
|
|
56
234
|
|
|
57
|
-
|
|
235
|
+
- Vue 模板替换目前是偏保守的 MVP 实现
|
|
236
|
+
- `extract_replace` 还不会自动补 `t()` 的 import 或 hook 注入
|
|
237
|
+
- `sync_catalog` 目前还没有接入真实 provider API
|
|
58
238
|
|
|
59
|
-
|
|
239
|
+
## License
|
|
60
240
|
|
|
61
|
-
|
|
62
|
-
- `extract_replace` 目前默认依赖调用侧已有 `t()` 上下文,尚未自动补充 import / hook 注入。
|
|
63
|
-
- `sync_catalog` 目前只保留接口和返回结构,尚未接入真实 provider API。
|
|
241
|
+
MIT
|