Skip to main content
Glama
README.md
# MCP i18n Page Translator

基于 MCP (Model Context Protocol) 的页面级 i18n 翻译服务,使用阿里云百炼 Qwen 模型进行翻译。

## 功能特性

- 按页面名称翻译,自动处理目录结构
- 支持 TypeScript 文件格式 (`export default {}`)
- 内置术语表,保持专业术语翻译一致性
- 增量翻译,只翻译新增或修改的内容
- 默认翻译到 4 种语言:中文、日语、法语、德语

## 安装

```bash
npm install
npm run build
```

## 配置

### 1. 获取阿里云百炼 API Key

访问 [阿里云百炼控制台](https://bailian.console.aliyun.com/) 创建 API Key。

### 2. 配置环境变量

```bash
cp .env.example .env
# 编辑 .env 文件,填入 DASHSCOPE_API_KEY
```

### 3. 配置 Claude Desktop

编辑配置文件:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "i18n-translator": {
      "command": "node",
      "args": ["/path/to/mcp-i18n/dist/index.js"],
      "env": {
        "DASHSCOPE_API_KEY": "sk-your-api-key"
      }
    }
  }
}
```

## 使用方法

在 Claude 对话中说:

```
i18n翻译mockupA页面,basePath是/packages/web/src/locale
```

### 目录结构

**源文件位置:**
```
{basePath}/{pageName}/en-US/
├── index.ts
└── other.ts
```

**生成的翻译文件:**
```
{basePath}/{pageName}/
├── en-US/
│   └── index.ts          # 源文件
├── zh-CN/
│   └── index.ts          # 中文翻译
├── ja-JP/
│   └── index.ts          # 日语翻译
├── fr-FR/
│   └── index.ts          # 法语翻译
└── de-DE/
    └── index.ts          # 德语翻译
```

### 文件格式

源文件必须使用 `export default` 导出对象:

```typescript
// en-US/index.ts
export default {
  title: "Welcome to Pacdora",
  description: "Create your custom packaging",
  buttons: {
    save: "Save",
    cancel: "Cancel"
  }
};
```

生成的翻译文件:

```typescript
// zh-CN/index.ts
export default {
  title: "欢迎使用 Pacdora",
  description: "创建您的定制包装",
  buttons: {
    save: "保存",
    cancel: "取消"
  }
};
```

## 工具参数

| 参数 | 必填 | 默认值 | 说明 |
|------|------|--------|------|
| `pageName` | 是 | - | 页面名称,如 `mockupA` |
| `basePath` | 是 | - | locale 目录的基础路径 |
| `sourceLocale` | 否 | `en-US` | 源语言代码 |
| `targetLocales` | 否 | `["zh-CN", "ja-JP", "fr-FR", "de-DE"]` | 目标语言列表 |
| `model` | 否 | `qwen-turbo` | Qwen 模型 |
| `incremental` | 否 | `true` | 是否增量翻译 |

## 术语表

内置术语表确保专业术语翻译一致:

| 术语 | zh-CN | ja-JP | fr-FR | de-DE |
|------|-------|-------|-------|-------|
| Pacdora | Pacdora | Pacdora | Pacdora | Pacdora |
| Dieline | 刀板 | テンプレート | Gabarit | Stanzlinie |

修改 `src/glossary.ts` 可自定义术语表。

## 支持的模型

| 模型 | 特点 |
|------|------|
| `qwen-turbo` | 平衡性能和成本(默认) |
| `qwen-plus` | 更高质量 |
| `qwen-max` | 最高质量 |
| `qwen-flash` | 极速响应 |

## 项目结构

```
mcp-i18n/
├── src/
│   ├── index.ts        # MCP 服务器入口
│   ├── scanner.ts      # 目录扫描和 TS 文件解析
│   ├── translator.ts   # Qwen API 翻译引擎
│   ├── generator.ts    # 翻译文件生成器
│   └── glossary.ts     # 术语表
├── dist/               # 编译输出
└── package.json
```

## 开发

```bash
npm run dev    # 监听模式编译
npm run build  # 编译
npm start      # 运行服务
```

## 许可证

MIT

TDQS

A4.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: translating a page, checking translation status, and viewing the glossary. There is no meaningful overlap that would cause an agent to select the wrong tool.

Naming Consistency3/5

Two tools follow a verb_noun snake_case pattern, but 'check-i18n' breaks the pattern with a hyphen and abbreviated domain term. The mixed conventions are still readable, but the naming is not fully consistent.

Tool Count5/5

Three tools is well-scoped for an i18n-focused server. Each tool covers a distinct part of the workflow and none feel redundant or unnecessary.

Completeness4/5

The core workflow of translating pages, verifying completeness, and consulting the glossary is covered. Minor gaps like glossary editing or batch translation exist, but they are not obvious blockers for typical i18n tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues