寒哥管理的技术专题架构师之路iOS技术交流收藏

iOS国际化

2017-03-18  本文已影响117人  Jimmy木

iOS国际化相对来说🍎已经做得比较成熟了,也提供了一系列的机制。国际化主要需要几种情况:Storyboard、代码文本替换、app名称替换、图片替换。

Storyboard

Storyboard本身就支持多语言,只需要在工程中配置一下就可以了。

配置工程

配置完,Storyboard下就会多出几个语言配置的文件。这些多语言文件可以设置两种模式,一种是视图模式,一种是字符串模式。
我推荐采用默认的字符串模式,这样可以通过脚本自动替换字符串。

字符串存储格式如下:

/* Class = "UIButton"; normalTitle = "Button"; ObjectID =   "VLj-Y4-L2c"; */
"VLj-Y4-L2c.normalTitle" = "Bn";

第一行是注释,分别是控件类型、字符串属性、控件ID。第二行等号左边是控件ID对应的字符串属性,等号右边是字符串内容。

⚠️新添加的控件,需要手动去更新语言配置文件。
查看控件ID如下图所示:

查看控件ID

有时候语言配置文件不会生效,需要重新生成一下。但是重新生成的文件的多语言配置就没有了。

重新生成多语言文件命令:

cd /Users/Jimmy/Projects/HelloWorld/HelloWorld/Base.lproj    
ibtool Main.storyboard --generate-strings-file Main.strings    

基本多语言文件生效后,将要翻译的内容填写到对应的文件里就可以了。也可以通过Python脚本做字符串替换。

代码文本替换

新建一个String File,文件名为Localisable.strings,不为这个文件名就无法生效,貌似也没找到地方设置这个文件名。

新建String File

Localisable.strings文件设置好后,文件内容就是一个key值对应一个value值。

"Key" = "Value";

Key是需要国际化的字符串的key,Value是国际化之后显示的值。

开发代码中实现国际化,使用方法NSLocalizedString(str,nil)。可以通过String的扩展或者宏来简化实现该方法。

App名称替换

app名称替换类似代码文本替换,但有点区别。
app名称替换首先需要建立InfoPlist.strings文件。
替换app名称key值为CFBundleDisplayName。

CFBundleDisplayName = "AppName"
上一篇 下一篇

猜你喜欢

热点阅读