一个IOS应用可能需要针对不同的国家进行相应的修改,尤其是里面的文字。目前,IOS提供的国际化API包括文本信息国际化、xib和storyboard、资源文件国际化。
- 文本信息国际化 :它首先被考虑的,包括应用的名称、按钮文字、警告提示信息以及界面上显示的静态文字等。
- xib和storyboard文件国际化 :同一个界面和场景可以提供本地化版本的xib和storyboard文件。
- 资源文件国际化 :它包括图片和音频等资源。
1. 首先对项目进行国际化设置。点击那个 “+” 号,它会弹出很多国家,选择想要的即可
2. 设置好国际化后,你会发现项目中得以下文件可以展开,里面包含了一些子文件。
3. 应用名称国际化:
选中 “Infoplist.strings ” 文件,里面有几个版本,打开其中一个,在里面添加,CFBundleDisplayName="应用名称".
4. xib 和 storyboard 文件国际化:
选中 storyboard 文件,在右边的 文件检查器 中,点击按钮
,会弹出一些选项。
选择相应选项后,刚刚按钮那里则变成
它后面有个选项,可以选择 strings 型,也可以是界面型。
如果想在不同的国家应用显示不同的界面,则使用界面型,然后在对应国家的界面进行重新设计;
如果想只是界面中的一些组件的静态文本根据不同国家显示不同的文本,则选择 strings 型即可,减少工作量。
勾选了相应的 localization 选项后, storyboard 文件会衍生出多个子文件
界面国际化,可以创建要显示的不同国家的界面,这样比文本信息国际化简单点。
文本信息国际化,每个组件都有个对应的唯一ID,我们需要先找到它的ID:
然后在对应的string文件中添加,它里面实际上是相应方法的调用,只是那个变量名称变成了它的唯一ID。
每一句后面的分号必不可少,不然会报错,提示说格式不对。
/*xxx*/里面的注释性的文本可以省略。
这样添加之后,界面中的对应静态文本就会根据系统的语言不同而显示不同的文本信息。
5. 资源国际化,以图片为例:
(1)先往项目中添加图片,然后选中图片,在右边 “文件检查器” 一栏,选择 “localize...” 按钮,然后勾选相应的国家,然后这个文件就会生成对应国家的子文件。如图:
(2)选中这个资源其中一个子文件,例如选中 “icon_play1.png(English)” 文件,然后右键 “Show in Finder”。在打开的文件夹即可看到这个文件,然后用你想要替换的文件替换它。
(3)替换完后,如果在应用使用了该资源,应用则会自己根据不同的系统环境显示不同的资源。
(4)对应类似图片这样的资源,在 storyboard 文件中使用时,选择对应的文件名即可。
(5)如果类似音乐这样的资源,在代码中使用NSBundle来找到该资源路径才可以实现资源国际化,例如:
- NSBundle *bundle = [NSBundle mainBundle];
- NSString *path = [bundle pathForResource:@"aa" ofType:@"mp3"];