你的位置:首页 > 操作系统

[操作系统]IOS开发之国际化篇第三章:故事版文本国际化


在IOS的开发过程中,很多时候组件都是拖拉出来,直接在故事版(storyboard)上直接使用,而并没有做输出关联,或者有些UILabel只做显示,不会进行修改。所以在这种不会在代码中修改的情况下,就需要用到故事版的国际化,如图

 

在xcode4.5之前,如果做故事版的国际化,是要维护多个storyboard,但在xcode4.5之后,国际化storyboard做国际化,就变成了一个storyboard,多个语言配置文件如图

其中Main.storyboard为真实的故事版文件,Main.strings(Chinese(Simplified)) 和 Main.strings(English)文件为配置文件,根据支持不同的语言版本,会有不同的翻译

看看下面的例子:

Main.storyboard(Base):

 

这里我们需要把kiss的文字做国际化,这里是个UIButton,点击需要国际化的控件,然后选择右边的属性如图,可以看到空间的object ID,这个ID就等于组件的国际化Key,然后在相应的国际化文件当中,修改它的value即可

Main.strings(English)文件

 

Main.strings(Chinese(Simplified))文件

 

其中国际化文本文件中的object ID后跟的normalTitle为组件的属性名称

这里我在这里分享一下使用故事版国际化的弊端,如有补充可以在留言给我,互相学习,看看下面我说的弊端有没有改进的方法

  • 故事版的国际化暂时没有同步机制,就是当你添加了一个新的组件如图,you按钮,相应的国际化文件,没有同步更新,需要手动再次查看object ID,然后进行添加
  • 复用性不强,假如有多个相同值得时候,重复编写多遍,例如,我现在有两个按钮,按钮的文字都为浏览,但是我需要在国际化文件当中添加两个object ID
  • 没有一份文档说明所有国际化话组件的属性名称,如果normalTitle,这种属性,没有可以提示到底这个属性的名称是什么

 

这给个建议,可以解决以上3个弊端问题

  • 方法一:可以在整个程序基本完成后再做故事版的国际化
  • 方法二:可以重新创建国际化文件