美文网首页本地化面试
iOS国际化(二):Base Internationalizat

iOS国际化(二):Base Internationalizat

作者: 金风细细 | 来源:发表于2016-10-26 15:07 被阅读212次

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

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

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

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

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

    2-1

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

    2-2 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)
    3-1
    • 而en.lproj和zh-Hans.lproj中只有对应的.strings文件,当然如果你做了第一步,还会有对应的.storyboard和.xib文件.
    • 加多少语言,就有多少对应的xx.lproj目录
    3-2

    执行语句

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

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

    四.加语言

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

    4-1

    参考:
    参考一
    参考二
    官网

    相关文章

      网友评论

        本文标题:iOS国际化(二):Base Internationalizat

        本文链接:https://www.haomeiwen.com/subject/ajwduttx.html