应用国际化目的:在不改变应用程序的逻辑功能的前提下,程序可以提供自适应、更友好的界面。用户不希望系统语言为中文,但应用却是英文吧。
国际化是指应用程序运行时,可根据系统设置的国家/地区、语言的不同而显示不同的界面。如:手机设置的语言为中文,则应用程序中的各种提示信息都显示中文;而如果手机系统语言为中文,则应用程序中的各种信息都显示英文。
iOS应用的国际化思路是将程序中的信息放在资源文件中,程序需要支持哪些国家、语言环境,则对应提供相应的资源文件。资源文件是key-value对,如:"ap_name" = "名称:";
每个资源文件中key是不变的,value则随不同的国家、语言改变。如:中文对应的资源文件中 "ap_name" = "名称:";
英文对应的资源文件中"ap_name" ="Name:";
key是程序使用的部分,value则是程序界面中显示的字符串。
资源文件名通常为Localizable.string,iOS程序需要区分不同语言、国家的资源文件,其方法是:不同国家、语言环境的资源文件放在不同的文件夹下。如:汉语简体环境的资源文件放在zh-Hans.lproj文件夹中,美式英语的资源文件放在en.lproj文件夹中。这种特殊的文件夹被称为本地化文件夹。
新建项目,通过Finder打开,会发现Base.lproj文件夹,Base.lproj文件夹下默认保存了Main.storyboard、LaunchScreen.storyboard文件,该文件可以作为各种语言环境的共有文件。(xcode 版本不一样,结果会不一样,xcode7.2创建没有en.lproj文件夹;而有的有,en.lproj文件夹是一个典型的本地化文件夹。该文件夹默认包含一个InfoPlist.strings文件。说明ios应用默认为InfoPlist.strings做了国际化准备,只不过默认只为英文环境提供了本地化文件,如果需要其他语言、国家本地化文件,则自行添加。)。
添加国际化文件步骤
1 选中项目面板中的项目图标,再选中项目导航面板右边Dock列表中的PROJCET标题下的项目图标。
2 选中编辑去中的info选项卡,找到Localizations选项区域。
3 点击Localizations区域下面的 “+”,系统弹出语言列表,点击下面的other可以看到显示国家、语言的详细列表。根据需要进行选择。我这里选择的是Chinese(Simplifiled)(zh-Hans)。
4 由于本应用默认提供了Main.storyboard、LaunchScreen.storyboard文件,所以如图显示该两个文件。
对于storyboard文件国际化时,File Types处you两个选择。
在项目面板中我们可以看到此图:
分别对不同语言的Main.storyboard进行设置界面。
3 应用程序显示名称 国际化
应用程序显示名称(手机上应用下面显示的名)默认为应用程序名(项目名),在程序中的info.plist文件中有一项key为“Bundle name”,对应的值为${PRODUCT_NAME},也就是程序名。可以通过改变此value值来改变应用的名称。但是如果要国际化,修改这个就不行了。需要通过InfoPlist.string文件进行国际化。
1 点击“New”-->"File"--> iOS下的“Resource”--> Strings File。并命名为InfoPlist.strings或者InfoPlist。
2 选中该新建文件,在右侧面板中查找Localization区域,点击Localize按钮。
3 屏幕上会弹出对话框,如下图。这里选择Base(当然也可以选择其他,如汉语,英语等),点击Localize。
4 这时,你会发现右侧的变化,如下图,需要配置哪项语言即可选中对应框,这里我们选中Chinese对应的框。
5 此时,项目文件中的InfoPlist.strings文件由一个变成了如下图所示。
6 在每个InfoPlist.strings文件中填写key-value对,
如:base文件中写 :CFBundleDisplayName="base name";
Chinese文件中写: CFBundleDisplayName="哈哈";
这样就完成了名称的国际化,运行后你会发现程序的名称已经变成你改的那样了。其他语言也可通过类似方法添加。
图片国际化的过程和名称国际化过程类似。
1 首先将一张图片拖入到项目中。(copy items if needed)
2 选中该图片,同样是查找Localization,点击Localize按钮。选择chinese。这样就会把该图片移到了汉语对应的本地化文件夹中。
3 采用上面类似的步骤重新导入同名的图片,配置为其他语言的本地化文件。
代码中或者布局界面直接用本图片名就可以了。切换不同语言可以看到对应的图片。
新建Strings File文件,命名为Localizable.strings,并将改文件保存至本地化文件中,如:保存到zh-Hans.lproj文件夹中,这样就配置了汉语简体本地文件。其他语言也是这样的操作步骤。。
该文件中以之前说的kye-value对存储,这里就不细说了。
代码中使用方式:
NSLocalizedString(key, comment);key为资源文件中的key值,comment参数是该消息的注释。
NSLocalizedString(@"app_name", nil);这样就可以获取到Localizable.strings文件中存储的内容了。
demo下载
著作权声明:本文由http://blog.csdn.net/vnanyesheshou原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!