android - 从大型 Android 项目中提取和翻译多个 strings.xml 文件的最佳方法

标签 android android-studio android-gradle-plugin android-resources android-module

我有一个巨大的 Android 项目,由几个模块组成。

理想情况下,我想要一种完全自动化的方法来从所有子模块和所有资源限定符中提取所有当前的 strings.xml 文件 - 放在单独的文件夹中,但保留在它们的文件夹结构下。

我想将此结果(提取的字符串文件)提供给翻译 - 然后当我收到结果时,自动将所有更新文件重新定位到项目中。

例如,如果我的项目中有:

ModuleA:
   src/main/res/value/strings.xml
   src/main/res/value-fr/strings.xml
   src/main/res/value-es/strings.xml

ModuleB:
   src/main/res/value/strings.xml
   src/main/res/value-fr/strings.xml
   src/main/res/value-es/strings.xml

然后结果应该是相同文件夹结构中的相同 string.xml 文件 - 但重新定位到一个新文件夹中,没有项目的其余部分。

是否有任何已知/现有的方法来操作复杂的项目及其 strings.xml 文件,还是我必须从头开始编写自己的脚本?

最佳答案

我最终使用了一个稍微修改过的版本
https://github.com/TomasKypta/android-lang-tool
使用单个 Android 模块,
然后编写一个方便的 Python 脚本来在我的大项目中的多个已知模块上运行它并相应地设置输入/输出路径(根据我的模块的硬编码路径),这样我就可以导出整个项目的字符串 XLS 文件以进行翻译并且很容易导入回来。
这非常有用,我可以以翻译人员可以使用的方式跟踪哪些字符串没有某种语言的翻译(无需让他们安装 Android Studio ......),
当某些内容被修改/翻译仍然很旧时,仍然缺乏对字符串的一些版本控制。

关于android - 从大型 Android 项目中提取和翻译多个 strings.xml 文件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58235705/

相关文章:

android - 检测定位的 "Bluetooth scanning"是否开启

android - Volley : BasicNetwork. performRequest:意外的响应代码 500

android - 我如何知道android gradle插件的applicationVariants中的属性?

android - 使用编译不同风格的库迁移到 gradle 3.+

android - 如何更改 Android Studio 中的构建工具版本

android - NDK c++ std::thread 在加入时中止崩溃

android - - 类型 'GoogleServicesTask' 字段 'intermediateDir' 没有相应的 getter 已用 @OutputDirectory 注释

android - Oreo DocumentsContract.getDocumentId(uri) 返回路径而不是 Long

java - Android 高度不显示按钮上的阴影

android - 如何在 Android Studio 中缩放 Android 模拟器