iOS 应用国际化

应用国际化目的:在不改变应用程序的逻辑功能的前提下,程序可以提供自适应、更友好的界面。用户不希望系统语言为中文,但应用却是英文吧。

国际化是指应用程序运行时,可根据系统设置的国家/地区、语言的不同而显示不同的界面。如:手机设置的语言为中文,则应用程序中的各种提示信息都显示中文;而如果手机系统语言为中文,则应用程序中的各种信息都显示英文。

1 应用国际化思路

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做了国际化准备,只不过默认只为英文环境提供了本地化文件,如果需要其他语言、国家本地化文件,则自行添加。)。


2 界面设计文件  国际化

添加国际化文件步骤

1 选中项目面板中的项目图标,再选中项目导航面板右边Dock列表中的PROJCET标题下的项目图标。

2 选中编辑去中的info选项卡,找到Localizations选项区域。

iOS 应用国际化_第1张图片

3 点击Localizations区域下面的 “+”,系统弹出语言列表,点击下面的other可以看到显示国家、语言的详细列表。根据需要进行选择。我这里选择的是Chinese(Simplifiled)(zh-Hans)。

4 由于本应用默认提供了Main.storyboard、LaunchScreen.storyboard文件,所以如图显示该两个文件。

对于storyboard文件国际化时,File Types处you两个选择。

  • Interface Builder Storyboard ,选择此项,表示系统要对整个界面进行国际化。使用不同的storyboard文件,这样不同语言、国家的用户界面都不同,最彻底的国际化。
  • Localizable String ,选择此项,表明只对界面上的字符串进行国际化。
此处我们只选Main.storyboard,type为“Interface Builder Storyboard”。点击finish。

iOS 应用国际化_第2张图片

在项目面板中我们可以看到此图:


分别对不同语言的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按钮。

iOS 应用国际化_第3张图片

3 屏幕上会弹出对话框,如下图。这里选择Base(当然也可以选择其他,如汉语,英语等),点击Localize。

iOS 应用国际化_第4张图片

4 这时,你会发现右侧的变化,如下图,需要配置哪项语言即可选中对应框,这里我们选中Chinese对应的框。


5 此时,项目文件中的InfoPlist.strings文件由一个变成了如下图所示。


6 在每个InfoPlist.strings文件中填写key-value对,

如:base文件中写 :CFBundleDisplayName="base name";

Chinese文件中写: CFBundleDisplayName="哈哈";

这样就完成了名称的国际化,运行后你会发现程序的名称已经变成你改的那样了。其他语言也可通过类似方法添加。


4 图片  国际化

图片国际化的过程和名称国际化过程类似。

1 首先将一张图片拖入到项目中。(copy items if needed)

2 选中该图片,同样是查找Localization,点击Localize按钮。选择chinese。这样就会把该图片移到了汉语对应的本地化文件夹中。

3 采用上面类似的步骤重新导入同名的图片,配置为其他语言的本地化文件。


代码中或者布局界面直接用本图片名就可以了。切换不同语言可以看到对应的图片。


5 字符串   国际化

新建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原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

你可能感兴趣的:(iOS开发)