Android i18n MCP: 基于 Git Diff 的智能增量翻译方案,让多语言适配效率提升 10 倍!

痛点:Android 项目多语言维护的现实困境

在 Android 开发中,国际化(i18n)一直是个令人头疼的问题:

  • 重复劳动 :每次修改 strings.xml,都需要手动更新 20+ 种语言文件
  • 容易遗漏:新增的字符串常常忘记翻译,导致线上出现英文串
  • 格式错误 :手动处理时经常丢失 %s%1$d 等占位符,引发崩溃
  • 成本高昂:全量翻译所有字符串,API 调用成本巨大
  • 效率低下:大项目动辄上千条字符串,手动维护几乎不可能

解决方案:Git Diff 驱动的增量翻译架构

android-i18n-mcp 通过巧妙结合 Git diff 分析和 AI 批量翻译,实现了一个高效、精准的自动化翻译方案。它不是简单的"全量翻译",而是基于代码变更的"增量翻译"系统。

通过 MCP 协议轻松接入 Agent 工具,实现一键翻译

核心技术架构

1. Git Diff 分析器:精准识别变更

typescript 复制代码
// GitDiffAnalyzer 核心逻辑
async getDefaultStringsChanges(defaultStringsPath: string): Promise<DiffResult> {
  // 获取 HEAD 版本的 strings.xml
  const headContent = await this.git.show(['HEAD:' + defaultStringsPath]);
  
  // 解析当前和历史版本,对比差异
  const currentStrings = await this.xmlParser.parseStringsXML(defaultStringsPath);
  const previousStrings = await this.parseHeadContent(headContent);
  
  // 识别新增、修改、删除的字符串
  for (const [name, currentResource] of currentStrings) {
    if (!previousResource) {
      diffResult.added.set(name, currentResource.value);
    } else if (previousResource.value !== currentResource.value) {
      diffResult.modified.set(name, currentResource.value);
    }
  }
}

通过对比当前工作区和 Git HEAD 版本,系统能精确识别出哪些字符串发生了变化,避免了全量翻译的浪费。

2. 批量翻译优化:性能与成本的平衡

typescript 复制代码
// 批量翻译实现,大幅减少 API 调用次数
async translateBatch(texts: Map<string, string>, targetLanguage: string) {
  const MAX_BATCH_SIZE = 60; // 单批次最大项数
  
  // 构建批量翻译 prompt
  const prompt = `Translate Android strings from English to ${targetLanguage}.
  Preserve placeholders like %s, %d, %1$s.
  Return JSON: ${JSON.stringify(Object.fromEntries(texts))}`;
  
  // 一次 API 调用翻译多个字符串
  const response = await this.client.chat.completions.create({
    model: this.model,
    messages: [{ role: 'user', content: prompt }],
    response_format: { type: "json_object" }
  });
  
  return new Map(Object.entries(JSON.parse(response.content)));
}

将多个字符串打包成一个请求,相比逐个翻译,API 调用次数减少 95%,成本降低 90%+。

3. XML 智能合并:保持文件完整性

系统不是简单地覆盖文件,而是智能合并变更:

  • 保留现有翻译:未修改的字符串保持不变
  • 更新变更内容:只更新 diff 中识别的字符串
  • 同步删除操作:自动移除已删除的字符串
  • 维持键序一致:与默认 strings.xml 保持相同顺序

技术亮点与创新

1. 增量翻译 vs 全量翻译

对比维度 传统全量翻译 Git Diff 增量翻译
API 成本 每次翻译所有字符串 仅翻译变更部分
翻译时间 O(n) n=总字符串数 O(m) m=变更数
准确性 可能覆盖人工优化 保留现有翻译
适用场景 初始化项目 日常开发迭代

2. 并发翻译架构

typescript 复制代码
// 多语言并发翻译,最大化效率
const translationPromises = this.languagesToTranslate.map(lang => 
  this.translateLanguage(moduleDir, lang, stringsToTranslate)
);
const results = await Promise.all(translationPromises);

系统采用并发架构,28 种语言同时翻译,相比串行处理快 20+ 倍。

3. 智能语言映射

typescript 复制代码
const LANGUAGE_FOLDER_MAP: Record<string, string> = {
  'zh-CN': 'values-zh-rCN',  // 简体中文
  'zh-TW': 'values-zh-rTW',  // 繁体中文(台湾)
  'zh-HK': 'values-zh-rHK',  // 繁体中文(香港)
  // ... 28 种语言完整映射
};

自动处理 Android 特殊的语言文件夹命名规则(如 zh-CNvalues-zh-rCN)。

4. 原子性保证

所有翻译操作都是原子的:要么全部成功,要么全部回滚。这通过以下机制实现:

  1. 预检查:翻译前验证所有目标路径可写
  2. 批量翻译:收集所有翻译结果后再写入
  3. 错误回滚:任何语言翻译失败,放弃所有修改

5. MCP 协议集成

通过 Model Context Protocol,实现与 IDE 的深度集成:

typescript 复制代码
const TOOLS: Tool[] = [
  {
    name: 'translate_all_modules',
    description: 'Detect changes and translate to all languages',
    // ... 自动注册为 IDE 可调用的工具
  },
  {
    name: 'check_missing_languages',
    description: 'Check and create missing language directories',
    // ... 智能检测缺失的语言目录
  }
];

完整工作流程解析

步骤 1:Git Diff 分析

bash 复制代码
# 系统自动执行
git diff HEAD -- **/values/strings.xml

识别出:

  • ✅ 新增的字符串(需要翻译)
  • 📝 修改的字符串(需要重新翻译)
  • ❌ 删除的字符串(需要同步删除)
  • 🔄 顺序变化(需要重新排序)

步骤 2:智能批量翻译

json 复制代码
// 输入:批量字符串
{
  "welcome_message": "Welcome to our app!",
  "login_button": "Sign In",
  "error_network": "Network error: %s"
}

// AI 输出:保留占位符的翻译
{
  "welcome_message": "欢迎使用我们的应用!",
  "login_button": "登录",
  "error_network": "网络错误:%s"  // 占位符完美保留
}

步骤 3:XML 智能合并

xml 复制代码
<!-- 原始 values-zh-rCN/strings.xml -->
<string name="app_name">我的应用</string>
<string name="old_string">旧内容</string>

<!-- 合并后 -->
<string name="app_name">我的应用</string>  <!-- 保留未变更 -->
<string name="welcome_message">欢迎使用我们的应用!</string>  <!-- 新增 -->
<string name="login_button">登录</string>  <!-- 新增 -->
<!-- old_string 已删除 -->

批量生成 28 种语言文件,单次操作完成数千条字符串的翻译

快速集成指南

1. 安装配置(3分钟)

bash 复制代码
# 克隆项目
git clone https://github.com/realskyrin/android-i18n-mcp.git
cd android-i18n-mcp

# 安装依赖并构建
npm install && npm run build

2. IDE 集成(支持 Cursor / Claude Desktop)

Cursor 配置示例

json 复制代码
{
  "mcpServers": {
    "android-i18n": {
      "command": "node",
      "args": ["/path/to/android-i18n-mcp/build/index.js"],
      "env": {
        "ANDROID_PROJECT_ROOT": "/path/to/your/android/project",
        "TRANSLATION_PROVIDER": "deepseek",  // 或 "openai"
        "TRANSLATION_API_KEY": "sk-xxxxxx",
        "TRANSLATION_MODEL": "deepseek-chat",  // 可选
        "TRANSLATION_LANGUAGES": "zh-CN,ja,ko,es,fr"  // 可选,默认28种
      }
    }
  }
}

3. 使用方式

在 IDE 或 Agent CLI 中输入:

sql 复制代码
use android-i18n mcp check and update copy

系统会自动:

  1. 扫描所有模块的 strings.xml
  2. 检测 Git 变更
  3. 批量翻译到配置的所有语言
  4. 智能合并到对应文件

4. 可用工具

bash 复制代码
# 检查缺失的语言目录
@android-i18n check_missing_languages

# 创建并翻译缺失的语言
@android-i18n create_and_translate_missing_languages

# 翻译特定模块
@android-i18n translate_module --modulePath app

适用场景

最适合

  • 快速迭代的产品,频繁修改文案
  • 多模块大型项目,字符串分散在各处
  • 需要支持 10+ 种语言的国际化应用
  • 初创团队或个人开发者,没有专门的翻译资源

⚠️ 需要注意

  • 对翻译质量要求极高的场景,建议人工复核
  • 包含大量专业术语的应用,需要自定义词库
  • 首次使用会翻译所有字符串,成本较高

技术栈与兼容性

  • 语言:TypeScript + Node.js
  • 协议:Model Context Protocol (MCP)
  • AI 支持:OpenAI、DeepSeek、Claude(计划中)
  • IDE 集成:Cursor、Claude Desktop、VS Code(通过 MCP 协议)
  • Android 项目兼容:所有标准 values-xx / values-xx-rXX resource 目录

结语

android-i18n-mcp 代表了 AI 时代开发工具的新范式:不是替代开发者,而是增强开发者。通过智能化的 Git diff 分析和批量 AI 翻译,它将原本需要数小时的重复劳动压缩到秒级完成。

这不仅是效率的提升,更是开发体验的革命。当翻译不再是负担,我们就能将更多精力投入到真正重要的事情上------创造卓越的用户体验。

立即开始你的智能化 i18n 之旅:

🔗 GitHub : github.com/realskyrin/...

📧 反馈交流 : 提交 Issue

如果这个项目帮助了你,请给个 Star 支持!

相关推荐
Warson_L7 小时前
独立开发推荐安装的skills
ai编程
threerocks8 小时前
一用一个不吱声的视频解析 Skill,你值得拥有
aigc·ai编程
吴佳浩9 小时前
AI 工程师知识地图:模型格式、框架、部署工具一次讲明白
人工智能·aigc·ai编程
青木_JS11 小时前
Headroom 是怎么给 Codex 省 Token 的:策略、效果与一次历史恢复记录
ai编程
MomentYY11 小时前
Temperature:AI 的“脑洞旋钮”
前端·llm·ai编程
Java陈序员11 小时前
企业级!一个基于 Java 开发的开源 AI 应用开发平台!
spring boot·agent·mcp
小九九的爸爸12 小时前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
AlbertZein12 小时前
别只盯着最强模型了,Agent 场景更该看这类 Flash 档模型
aigc·openai·ai编程
ZzT12 小时前
公司用 AI 筛简历,他写了个 AI 帮你挑公司
面试·aigc·ai编程
妙码生花12 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十四):眨眼小人登录页制作
前端·javascript·ai编程