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

相关推荐
trsoliu17 小时前
快手StreamLake重磅发布AI编程产品矩阵,自研大模型超越GPT-5,AI开发者新时代来临!
人工智能·ai编程
Axizs18 小时前
我用AI摸鱼写了个VSCode摸鱼插件
ai编程·visual studio code
佛喜酱的AI实践18 小时前
Claude+OpenSpec:解决99%的需求混乱,让开发效率提升300%
ai编程·claude
阿部多瑞 ABU19 小时前
# AI高精度提示词生成项目——3D-VR 课件—— 最终仓库级 AI 提示词:生成《EduVR Studio》—— 专业级 3D-VR 课件创作平台
gitee·开源·github·aigc·ai编程·1024程序员节
阿洛学长19 小时前
高质量 AI 提示词之(从 0-1 开发 Vue 项目)
vue·ai编程·1024程序员节
楚莫识19 小时前
Comet AI 浏览器免费开放了,还送 Perplexity Pro 会员!
openai·ai编程·cursor
飞哥数智坊21 小时前
以后,我们也许就不再“读”代码了
人工智能·ai编程
sean1 天前
开发一个自己的 claude code
前端·后端·ai编程
云起SAAS1 天前
ai公司起名取名抖音快手微信小程序看广告流量主开源
微信小程序·小程序·ai编程·看广告变现轻·ai公司起名取名
后端小肥肠1 天前
效率狂飙!n8n 无人值守工作流,每天自动把领域最新热点做成小红书卡片存本地
人工智能·agent·mcp