整理混乱不堪的各国语言翻译

现状

linksmart项目截止目前已经支持了17个国家的语言,从诞生到现在也已经经历了很多程序员的修改和维护,代码已经变得十分混乱。因为公司一直在接新的定制项目,所以也没有时间进行一次彻底的重构,只能在维护某方面的BUG的时候,对相关代码进行局部重构。现在的情况是:

  • 同一个文本有些语言有翻译,有些语言没有翻译。
  • 有些需要使用缩进的地方,由于某种原因,并没有使用UIEdgeInsets进行缩进,而是在文本前后加空格。(⊙﹏⊙)b

整理思路

首先必须得找出一种合适的方法维护这些Localizable.strings,在Excel里做一个总表,增加语言的时候,可以直接把英文的一列发给客户进行翻译。最大的优势是:随时可以用脚本把Excel里的所有语言导出成项目支持的Localizable.strings文件,极大提高效率。

1. 补全

使用genstrings命令将所有.m文件中的LocalizedString文本生成Localizable.strings。
打开终端,进入项目根目录,执行以下命令:

1
find ./ -name "*.m" -print0 | xargs -0 genstrings -o en.lproj

生成的这一份文件只包含所有.m文件中的国际化字符串,并不包含plist和xib中的字符串。接下来只要把这一份和原来的所有翻译合并起来去重,就得到一份最全的key。

2. 合并去重

我尝试过直接读取Localizable.strings文件,但提示编码错误,就暂时copy到txt文件中进行处理。

合并的Demo:https://github.com/xaoxuu/LocalizedTool-iOS

3. 导入Excel

接下来的步骤工作量有点大,就是重新把那些翻译导入Excel中,补全缺少的那些翻译。

导入Excel和从Excel导出为Localizable.strings的方法在这里:https://xaoxuu.com/blog/2017-03-08-ios-localizable-string