iOS开发——国际化支持Localizable.strings
这篇写的不多,但是绝对诚意满满。不会像别人一样,要不不详细,要不罗里吧嗦一堆。
1、创建Localizable.strings文件
Command+N—>iOS—>Resource—>Strings File,命名为Localizable,这样就生成了Localizable.strings文件。
2、添加语言
点击最上面的项目名准备进行设置,在最左边的窗格中选择PROJECT(默认的是TARGETS),然后在Info标签下你会看到一个Localizations分区。点击点击“+”,然后选择你想要的语言。
添加的时候,你会发现Localizable.strings,Main.storyboard和你建的XIB都是默认勾选的,这些你勾不勾都行,你可以在这里直接勾选,也可以觉得用不着在故事板或xib上设置,直接去掉勾选也行。这是你会发现Localizable.strings这个文件和你勾选过的文件,不再是单个文件了,你选的每一个语言,都有一个相应的文件。
万一你在添加语言的时候,没有勾选某个xib,现在你想要直接对这个xib进行国际化设置,怎么办?不急,你选中那个xib,在Xcode的右边的框里,选择第一个文件图标的标签,你会看到Locallzation这个分区,剩下的懒得说了,自己玩吧!
3、对每种语言进行设置
在Localizable.strings中,对每种语言分别设置,比如在Localizable.strings(Chinese(Simplified))这个文件中,写一行代码:"Start" = "开始";
在Localizable.strings(English)这个文件中写上:"Start" = "Start";在Localizable.strings(French)这个文件中写上:"Start" = "Commencer";
在需要用到的地方,label.text = NSLocalizedString(@"start", nil);那么你的应用就国际化了,当你手机系统设置的语言是简体中文时,这个label显示开始;当你手机系统设置的语言是英文时,这个label显示Start,当你手机系统设置的语言是法语时,这个label就会变成Commencer。
4、对Storyboard或者XIB中的控件直接进行国际化设置
基本上有上面三步就够用了,但是你想在xib上直接国际化,不想用Localizable.strings这个文件,怎么办?
小意思!
第一步,先保证你的xib可以点开,这个上面介绍了,不多说。
第二步,先在xib上一个label,内容“开始”,然后你点开xib里面的几个文件,空的!!!如果是你先label,然后再添加语言,勾选xib,那么它里面是有东西的,但是如果是你后来添加的话,它不会在里面语言的文件里自动添加,这里需要折腾一下,这点苹果比较坑。网上别的帖子怎么做的?要不不说这一点,要不就是在终端捣鼓一下。
我不喜欢这种方法,直接在Xcode小葱的中折腾,在Xcode右边上面提过的Locallzation分区中,每个语言这都有,每个语言后面都有上下箭头,点开,当前选择的是Localizable Strings,改成另一项Interface Builder Cocoa Touch XIB,然后再改回来Localizable Strings,这时候你再点开xib不同语言的文件都会出现相同的两行代码:
/* Class = "UILabel"; text = "开始"; ObjectID = "8OX-N2-Acl"; */
"8OX-N2-Acl.text" = "开始";
第二行等号后面的那个开始,你就可以用对应的语言来替换了。
注意:当我们在国际化的时候,写key,写着写着就忘了加 ";" ,如果忘了,这时会报错,“read failed: the data couldn't be read because it isn't in the correct format.”,这时候认真查看一下自己的Localization文件就可以了。