iOS国际化(二):Base Internationalization-iOS的.storyboard 和 .xib文件的国际化

当用户在设置-通用-语言和地区中选了不同的语言时,Base Internationalization技术让你的app能适应这些变化.

一. 针对不同的语言,.storyboard和.xib文件可以有不同的界面

  • 点击.storyboard文件,选择右边Localization的Localize...
iOS国际化(二):Base Internationalization-iOS的.storyboard 和 .xib文件的国际化_第1张图片
1-1
  • 出来几个Localize的选项,右边选InterfaceBuilder.
iOS国际化(二):Base Internationalization-iOS的.storyboard 和 .xib文件的国际化_第2张图片
1-2
  • 打开.storyboard文件的三角符号,你发现你有了三个.storyboard文件.针对不同的语言,可以设置不同的显示界面.(有几个语言就画几个,这个工作量有点大哟)
iOS国际化(二):Base Internationalization-iOS的.storyboard 和 .xib文件的国际化_第3张图片
1-3

二.针对不同的语言,.storyboard和.xib文件一份基础界面,文字改变

这应该是我们大多数时候需要的:
在上面那一步的第二步中,选择第二个:Localizable Strings.
你会发现你的.storyboard文件长这个样子:

iOS国际化(二):Base Internationalization-iOS的.storyboard 和 .xib文件的国际化_第4张图片
2-1

除了base,后面2个是strings文件.那么直接在里面指定每个控件的文本就好了.
然后点开.strings文件一看,你傻眼了,都是白板,这可不会写啊...
一定几率Xcode会在某个语言下,给你生成这种东西:那么你有福了,另一个语言的.string可以复制粘贴,翻译下就OK了:

iOS国际化(二):Base Internationalization-iOS的.storyboard 和 .xib文件的国际化_第5张图片
2-2
iOS国际化(二):Base Internationalization-iOS的.storyboard 和 .xib文件的国际化_第6张图片
2-3

但是如果你改了.storybord文件,新增了控件,这些.strings文件可不会自动跟着变,然后你又傻眼了.

所以需要Xcode提供的工具:

三.为.storyboard和.xib文件生成对应的.strings文件

打开命令行.到你的工程对应目录下
进入Base.lproj文件夹

  • Base.lproj文件夹里面有所有的基础.storyboard和.xib文件.
    如果本地化勾选了base,也会有对应的.strings文件.
    如果去掉勾选base,则Xcode会问你是否要把base的.strings文件转移到en.lproj里去,选是就好了.
    看自己project的设定,如果默认语言是英语,则base就是英语,不用再多添加一个en了.(新生成的工程默认都是英语做base)
iOS国际化(二):Base Internationalization-iOS的.storyboard 和 .xib文件的国际化_第7张图片
3-1
  • 而en.lproj和zh-Hans.lproj中只有对应的.strings文件,当然如果你做了第一步,还会有对应的.storyboard和.xib文件.
  • 加多少语言,就有多少对应的xx.lproj目录
iOS国际化(二):Base Internationalization-iOS的.storyboard 和 .xib文件的国际化_第8张图片
3-2

执行语句

ibtool --generate-stringsfile MyNib.strings MyNib.nib

这个生成的.strings就是模板,于是其他语言的你把它们覆盖到对应的xx.lproj目录,照着改下翻译就好了.

四.加语言

在哪里加Localization的语言?一张图秒懂.
注意:选的是工程的project 不是target

4-1

参考:
参考一
参考二
官网

你可能感兴趣的:(iOS国际化(二):Base Internationalization-iOS的.storyboard 和 .xib文件的国际化)