Android Studio 多语言助手插件:让多语言管理变得简单高效
声明:本插件完全由AI基于前辈 inxu-link项目https://github.com/linxu-link/MultilingualPlugin 生成,包括下列文章描述。实测可用,已经尝试在团队中使用。
源码地址见文章结尾。

引言
在 Android 车机开发中,多语言翻译管理一直是一个让人头疼的问题。面对几十种语言,每种语言都有数百甚至上千个字符串资源需要翻译和维护。传统的做法是:
- 手动复制粘贴
strings.xml文件 - 在 Excel 中逐行翻译
- 再手动将翻译结果复制回 XML 文件
- 频繁的客户需求调整导致重复劳动
- 在大量复制粘贴中容易出错
这种工作既费力又没有技术含量,而且容易出错。为了解决这个问题,我基于前辈的开源项目,使用 AI 智能体开发了一个 Android Studio 多语言助手插件,让多语言管理变得简单高效。
插件功能特性
1. 一键导出到 Excel
插件可以将 Android 项目的所有 strings.xml 文件导出为一个结构化的 Excel 文件:
- 自动识别所有语言目录:插件会自动扫描项目中的
values-{langCode}目录 - 结构化输出:Excel 首列显示 Key,首行显示语言代码,数据清晰明了
- 灵活配置:支持自定义导出目录、文件命名模式(支持时间戳变量)、指定导出语言
- 智能路径处理:自动查找项目的
res目录,也支持手动指定
2. 从 Excel 生成翻译文件
支持两种导入模式,满足不同的使用场景:
模式一:指定语言比对导入
- 根据基准语言的文本内容匹配 key
- 仅更新匹配到的翻译,避免误操作
- 适合在已有翻译基础上进行增量更新
模式二:首列 key 对比导入
- 根据 Excel 首列的 key 进行匹配导入
- 更直接、更快速
- 适合批量导入新翻译
两种模式都支持:
- Key 处理策略:可以选择跳过新 key 或插入新 key
- 自动生成 XML:自动生成符合 Android 规范的
strings.xml文件 - 多语言批量处理:一次操作生成所有语言的翻译文件
3. 自动插件管理
插件采用了智能的自动管理机制:
- 首次使用自动配置:首次运行时,插件会自动在项目根目录创建
buildSrc目录 - 自动复制插件代码:将 Gradle 插件代码复制到项目中
- 自动应用插件:无需手动修改
build.gradle,插件会自动配置 - 零配置使用:开箱即用,降低使用门槛
技术实现亮点
1. 双插件架构设计
插件采用了 Gradle 插件 + Android Studio 插件 的双插件架构:
- Gradle 插件(
buildSrc):负责核心的 Excel 读写和 XML 生成逻辑 - Android Studio 插件:提供可视化的 UI 界面和任务执行
这种设计的好处是:
- 核心功能可以在命令行独立使用
- UI 界面提供更好的用户体验
- 职责分离,代码更清晰
2. 智能的插件应用机制
插件实现了根工程和子模块的双态处理:
// 根工程:创建 DSL 扩展并自动为子模块应用插件
if (project == project.getRootProject()) {project.getExtensions().create("multilingual", MultilingualExtension.class, project);// 自动为 Android 模块应用插件project.getRootProject().getSubprojects().forEach(sub -> {if (sub.getPlugins().hasPlugin("com.android.application") || sub.getPlugins().hasPlugin("com.android.library")) {sub.getPlugins().apply(MultilingualModulePlugin.class);}});
}
这种设计让插件可以:
- 自动识别 Android 模块
- 为每个模块自动注册任务
- 支持多模块项目
3. 灵活的配置系统
插件支持多层次的配置方式,优先级清晰:
- 命令行参数(最高优先级)
- Gradle 扩展配置
- 任务属性
- 默认值
这种设计让插件既可以在 UI 中使用,也可以在 CI/CD 流程中通过命令行调用。
4. 基于 Apache POI 的 Excel 处理
使用 Apache POI 5.2.3 进行 Excel 文件的读写,支持:
- 大文件的处理
- 复杂格式的保持
- 高效的读写性能
带来的好处
1. 大幅提升工作效率
传统方式:
- 导出:手动复制 XML 内容到 Excel(30 分钟)
- 翻译:在 Excel 中翻译(数小时,取决于语言数量)
- 导入:手动复制 Excel 内容回 XML(30 分钟)
- 总计:每个版本至少需要 1 小时以上的重复劳动
使用插件后:
- 导出:点击菜单,配置参数,一键导出(1 分钟)
- 翻译:在 Excel 中翻译(时间不变,但更专注)
- 导入:点击菜单,选择文件,一键生成(1 分钟)
- 总计:每个版本节省 1 小时以上
2. 显著降低出错率
- 避免复制粘贴错误:不再需要手动复制粘贴,减少人为错误
- 格式自动保证:生成的 XML 文件符合 Android 规范
- Key 一致性检查:导入时会检查 key 的一致性
- 增量更新支持:可以只更新部分翻译,避免覆盖已有内容
3. 提升团队协作效率
- 统一的工作流程:团队成员使用相同的工具和流程
- 版本控制友好:Excel 文件可以纳入版本控制,方便跟踪翻译变更
- 翻译人员友好:翻译人员只需要在 Excel 中工作,不需要了解 Android 项目结构
4. 支持持续集成
插件支持通过 Gradle 命令行调用,可以集成到 CI/CD 流程中:
# 在 CI 中自动生成翻译文件
./gradlew :app:generateTranslations \-PexcelFilePath=translations/latest.xlsx \-PdefaultLanguage=zh-rCN
使用场景
场景一:新项目多语言初始化
- 在
values/strings.xml中定义所有字符串资源 - 使用插件导出到 Excel
- 翻译人员翻译 Excel 文件
- 使用插件生成各语言的
strings.xml文件
场景二:已有项目的翻译更新
- 客户要求修改某些文本
- 更新
values/strings.xml中的内容 - 导出到 Excel,只导出变更的部分
- 翻译人员更新 Excel
- 使用"指定语言比对导入"模式,只更新匹配的翻译
场景三:新增语言支持
- 导出现有所有语言的翻译到 Excel
- 在 Excel 中新增一列,添加新语言代码
- 翻译人员翻译新语言列
- 使用插件生成新语言的
strings.xml文件
安装和使用
安装插件
- 打开 Android Studio
- 进入
File->Settings->Plugins(Windows/Linux)或Preferences->Plugins(macOS) - 点击右上角的 ⚙️ 图标,选择
Install Plugin from Disk... - 选择插件 ZIP 文件(项目根目录下的
studio-plugin-language-0.1.0.zip) - 重启 Android Studio
使用步骤
导出到 Excel
- 点击菜单栏
Tools->多语言助手->导出到excel - 配置参数:
- 导出目录:Excel 文件保存位置(默认:
buildSrc/language) - 基准语言目录:用于生成 Key/默认列的目录(默认:
values) - 文件命名模式:支持时间戳变量(如:
language-yyyyMMdd-HHmm.xlsx) - 包含语言:可选,留空表示导出所有语言
- 导出目录:Excel 文件保存位置(默认:
- 点击
OK执行导出
从 Excel 生成翻译文件
- 点击菜单栏
Tools->多语言助手->生成xml文件 - 选择导入模式:
- 指定语言比对导入:根据基准语言文本匹配 key
- 首列 key 对比导入:根据 Excel 首列 key 匹配
- 配置参数:
- Excel 文件路径:选择要导入的 Excel 文件
- 基准语言目录:基准语言资源目录
- Key 处理方式:跳过新 key 或插入新 key
- 点击
OK执行导入
技术栈
- Gradle Plugin:Java 开发,支持 Gradle 7.2+
- Android Studio Plugin:基于 IntelliJ Platform SDK
- 依赖库:
- Apache POI 5.2.3:Excel 文件读写
- Gradle Tooling API:Gradle 任务执行
项目信息
- GitHub 地址:https://github.com/MaoMiDeMao/AndroidMultilingualPlugin
- 基于项目:https://github.com/linxu-link/MultilingualPlugin
- 开发方式:使用 AI 智能体开发完成
总结
Android Studio 多语言助手插件通过自动化的方式,将繁琐的多语言管理工作变得简单高效。它不仅解决了车机开发中多语言管理的痛点,还提升了工作效率、降低了出错率,让开发团队可以更专注于核心功能的开发。
如果你也在为多语言管理而烦恼,不妨试试这个插件。它可能会成为你开发工具箱中的得力助手。
致谢:本项目基于前辈 linxu-link 的开源项目开发完成,感谢前辈的分享和贡献!
