iOS 国际本地化(对新项目集成和已有项目集成)

第一推荐一篇金先生的博客,受益非浅,在这里真诚的感谢正则表达式

 https://www.jianshu.com/p/7cb0fad6d06f金小白工具

 

首先金小白先生把两种方式都作了介绍,第一种我就不在过多详细的讲解,主要针对已有项目所出现的问题给介绍一下搜索引擎

 总结两点就是:spa

1. 在代码里用NSLocalizedString获取要本地化的字符串
2. 用genstrings扫描代码文件,生成Localizable.strings,而后加到工程中。 .net

那么如何具体操做呢,这里讲解一下。命令行

一,在代码里用NSLocalizedString获取要本地化的字符串翻译

正则搜索项目中全部的中文(首先,咱们须要一个正则,去匹配工程中全部须要替换的文本。若是你不太了解正则,点我点我!!。)
code

 

下面这个正则能够匹配到全部符合OC字符串格式的包含有中文的字符串。若是你用Swift,请去掉@。htm

@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?"

而后,重点来了。Command+Shift+F,进入全局搜索引擎,切换为Replace模式,并把匹配模式改成Regular Expression。blog

 

 

在搜索条件里输入(@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?"),在下面替换内容里输入NSLocalizedString($0, nil)。此处正则表达式两边加括号的目的是为了可以在替换时用$1获取原有字符串的值,在替换时把原有值放入宏定义内key的位置。而后,搜索,能够看到搜索结果,点击Replace All,便可完成替换。

箭头位置都是可选的,最后一个箭头,是选择工程,能够除去pod里的文件。 能够先替换一个试试效果

 

 

 

二. 用genstrings扫描代码文件,生成Localizable.strings,而后加到工程中。 

替换完了原有字符串,下面就是生成多语言文件了。做为一个文艺程序猿,我是不可能一处一处的把项目中的字符串挑出来再写到Localizable.strings文件里的。

好在Xcode自带了一个命令行工具genstrings。咱们能够利用这个工具生成所需的多语言文件。

首先,咱们须要先新建所需语言的文件夹。

cd 工程目录
mkdir en.lproj
mkdir zh-Hans.lproj

 

而后,遍历全部.m文件,根据每一个文件内的须要国际化的字符串生成key和value。

find . -name "*.m" | xargs genstrings -o en.lproj
find . -name "*.m" | xargs genstrings -o zh-Hans.lproj

此时,en.lprojzh-Hans.lproj文件夹中就应该有了相应的Localizable.string文件了。

 

咱们把这两个文件夹拖到工程里,而后在相应的Localizable.strings文件中,修改每一个key所对应的value值就好了(这个应该是翻译干的事儿)。

至此,项目的国际化已经适配完成。

⚠️ 这里重点说一下,有的童鞋老是出现这样那样的错误,不是不能写入就是文件不支持,这里你要把你的 lib/Tool/Supporting Files的文件夹先移出来放在根目录下, 把 en.lprojzh-Hans.lproj文件夹放在你的Controller模块,解析你Controller中的.m文件,而后再把en.lprojzh-Hans.lproj文件夹 拖到项目中。ok~~

 

相关文章
相关标签/搜索