当用户在设置-通用-语言和地区中选了不同的语言时,Base Internationalization技术让你的app能适应这些变化.
一. 针对不同的语言,.storyboard和.xib文件可以有不同的界面
- 点击.storyboard文件,选择右边Localization的Localize...
- 出来几个Localize的选项,右边选InterfaceBuilder.
- 打开.storyboard文件的三角符号,你发现你有了三个.storyboard文件.针对不同的语言,可以设置不同的显示界面.(有几个语言就画几个,这个工作量有点大哟)
二.针对不同的语言,.storyboard和.xib文件一份基础界面,文字改变
这应该是我们大多数时候需要的:
在上面那一步的第二步中,选择第二个:Localizable Strings.
你会发现你的.storyboard文件长这个样子:
除了base,后面2个是strings文件.那么直接在里面指定每个控件的文本就好了.
然后点开.strings文件一看,你傻眼了,都是白板,这可不会写啊...
一定几率Xcode会在某个语言下,给你生成这种东西:那么你有福了,另一个语言的.string可以复制粘贴,翻译下就OK了:
但是如果你改了.storybord文件,新增了控件,这些.strings文件可不会自动跟着变,然后你又傻眼了.
所以需要Xcode提供的工具:
三.为.storyboard和.xib文件生成对应的.strings文件
打开命令行.到你的工程对应目录下
进入Base.lproj文件夹
- Base.lproj文件夹里面有所有的基础.storyboard和.xib文件.
如果本地化勾选了base,也会有对应的.strings文件.
如果去掉勾选base,则Xcode会问你是否要把base的.strings文件转移到en.lproj里去,选是就好了.
看自己project的设定,如果默认语言是英语,则base就是英语,不用再多添加一个en了.(新生成的工程默认都是英语做base)
- 而en.lproj和zh-Hans.lproj中只有对应的.strings文件,当然如果你做了第一步,还会有对应的.storyboard和.xib文件.
- 加多少语言,就有多少对应的xx.lproj目录
执行语句
ibtool --generate-stringsfile MyNib.strings MyNib.nib
这个生成的.strings就是模板,于是其他语言的你把它们覆盖到对应的xx.lproj目录,照着改下翻译就好了.
四.加语言
在哪里加Localization的语言?一张图秒懂.
注意:选的是工程的project 不是target
网友评论