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 支持!

相关推荐
Sam_Deep_Thinking4 小时前
在Windows 11上配置Cursor IDE进行Java开发
ai编程·cursor
python_13616 小时前
MCP模型上下文协议以及交互流程
交互·mcp
飞哥数智坊18 小时前
AI 编程太混乱?我的3个实践,防止代码失控
人工智能·ai编程
ITZHIHONH18 小时前
FastGPT源码解析 Agent 智能体插件实现代码分析
ai·开源·ai编程
coder_pig20 小时前
👦抠腚男孩的AI学习之旅 | 7、LangChain (三) - 实战:知识库问答机器人 (RAG )
langchain·aigc·ai编程
动能小子ohhh21 小时前
AI智能体(Agent)大模型入门【2】--基于llamaindx部署本地的聊天模型。
人工智能·python·aigc·ai编程
CoderJia程序员甲1 天前
GitHub 热榜项目 - 日榜(2025-09-11)
ai·开源·github·ai编程·github热榜
该用户已不存在1 天前
腾讯放大招,Claude Code 国产平替发布
人工智能·ai编程
程序员老刘1 天前
CTO紧急叫停AI编程!不是技术倒退,而是...
flutter·ai编程