前景
最近经历了TuTu和Yaame 的开发之后,发现国际化过程因重复工作量大,导致占用了大量的时间。
思考
能不能通过脚本来实现iOS项目的文案国际化的流程呢?从获取项目内的文案,到翻译,再到本地的Local文件,最后修改项目内的代码。整个过程,通过自动化脚本来实现,应该会节约不少时间。方案

尝试
讲述一下需要用到的工具套件:
- ReadChinese:从项目内查找中文并过滤后,生成一份中文的本地化文件;
- LocalStringChange:将中文的本地化文件,进行格式化,提交给产品进行翻译。
- 生成脚本:从google.docx 生成为项目内的本地化文件,可同时生成多个语言版本的文件;
- ChangeLine:根据翻译的英文自动生成对应的key;
- LocalLanguageToXcode:根据生成的本地化文件,批量替换项目内的中文字符串。
1.从项目读取所有中文,过滤并导出一个中文格式的LocalStrings打开ReadChinses项目并运行,导入项目地址,导入输出地址。如图:
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
2.处理LocalStrings文件格式,导出一个Txt文档,交由翻译同学进行翻译
打开LocalStringChange项目,把刚才生成的文档,覆盖到项目内的文档里。替换输出路径,运行项目。' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
3.创建google.docx 文档,获取文档的id和密钥,并把中文放入文档' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
4.收到翻译文档后,贴到google.docx 文档的对应分栏内
5.使用ChangeLine 工程,根据对应的英文,自动生成关键key。将生成的key贴到google文档的关键key分类中
6.替换生成脚本里面的key和id,id在文档链接里,key在google文档的后台获取。执行文档的生成脚本,生成本地的各个语种的LocalString文件
7.封装本地化获取多语言的方法
8.使用LocalLanauageToXcode,替换项目内的工程地址和封装的获取方法名,并运行项目
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
成果
1. 项目内的中文文案已全部转换为对应的多语言获取方法,并附有中文注释。
2. 很大程度上降低了时间成本。
3. 后期在多语言的新增上面实现了自动化更新。
4. 该组件已为其他业务线的同学在国际化方向提供了帮助。
作者 | 游成虎 高级iOS开发工程师