背景
这里的故事源自于公司的一个临时需求.以色列公司同事需要接手目前APP的一部分开发工作.但是由于语言差异,app内部并没有做国际化的一些工作.限时一个星期,领导叫我们完成整个app的国际化工作.说实话,压力很大.这里略过如何具体实现国际化,如有需要请自行百度.
难点
这里有几个耗时点:
1.我们工程内部都是直接采用的中文进行赋值.项目里有大量中文,需要我们去提取,很耗时.
2.常规的国际化操作是需要Localizable.strings
和InfoPlist.strings
这两个文件来实现的,那么就面临将中文字符和key逐个拷贝进入文件之中,也很耗时.
3.中文需要翻译,翻译过程暂且不提,但也需要逐个拷贝进入英文的对应的文件里,也很耗时.
4.如果翻译不准确,中文写错了,或者key也改了,那么可能同时改几个文件,这就很蛋疼了,麻烦且依然耗时.
解决方案
这里针对上述四个耗时,我们经过团队讨论,得出如下的一种解决方案.
1.中文提取,我们找了一个正则,来寻找出项目内出现的所有中文.操作步骤如下:
(1)打开”Find Navigator”
(2)切换搜索模式到 “Find > Regular Expression”
(3)输入@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?" (swift请去掉”@” 输入@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?")
这样就能搜索出项目里所有的中文了,这里其实没有解决耗时的根本问题,但是至少不用去文件里一个个翻了,由于是分模块提取的,还是省了不少力.
2.中文全部提取之后,这里就不用逐个copy进Localizable.strings
文件内了.这里我们采取了一种思路,我们先定好所有需要的key,将key,中文,英文翻译全部放入到一个EXCEL文件内,并且一一对应,然后通过脚本语言将这个EXCEL文件直接转换成我们需要的Localizable.strings文件.
这里给一张EXCEL文件的图:
这里的脚本语言采用的是
python
,同时也支持shell
,其内部目录如下:这里红色框起来的部分,作用是可以将iOS的
Localizable.strings
转换成上述EXCEL文件内的key-value形式,以及反转.至于脚本具体细节,这里暂不讨论,涉及一些实现细节,有兴趣的朋友可以按照这个思路自己去实践一下.就这么一个脚本就解决了
耗时2,3
的问题,那么对于耗时4
,其实就很容易解决了.
3.当我们维护国际化字符串的时候,就不再是去XCode工程里维护Localizable.strings
文件了,而是去维护我们新建的哪个EXCEL文件,当我们需要修改对应内容,只需要在EXCEL文件内Command+F找到对应内容,修改过后,再次执行上述的脚本即可
,这样的话,省时省力,直接运行工程即可看到修改效果.另外我们是多人合作开发,所以我们专门为此建立了一个git仓库来管理这个国际化文件,但转换工作是由本人来控制的.
经过上述一顿操作,我们的国际化版本顺利调整完毕,本来预计的翻译时间会较长,结果不到两天就全部搞定.后续就是蛋疼的国际化界面适配了,就不谈了.
网友评论