iOS开发:App国际化配置过程

在iOS开发过程中难免会遇到App要设置别的国家的语言,这就设计到国际化配置,那么本篇博文就来讲讲App怎么快速进行国际化配置。App语言国际化,也叫语言本地化,根据用户使用的操作系统的语言设置,自动将App的语言设置成和用户使用的操作系统的语言一致的语言。

一、配置需要国际化的语言

首先,根据具体需求来配置需要使用到的国际化的语言,国际语言种类很多,没有必要全部都加上,根据实际需求选择性添加几种需要用到的语言即可。不管我们是国际化App的名称、界面中的字符串文字信息,还是图片、图标,都需要先进行配置准备工作,具体步骤如下所示:

1、打开项目工程,找到选中PROJECT-->Info-->Localizations,然后点击“+”,然后添加需要国际化/本地化的语言,(默认需要勾选下面的“Use Base Internationalization”);

2、这里以添加德语为例,点击加好之后,找到德语选项,然后弹出一个对话框,直接点击“Finish”即可,同理,其他需要添加的语言也是按照这种操作步骤进行;

3、之前的旧版本xcode在设置本地化App名称的时候,还需要在Info.plist文件中添加一个名为“Application has localized display name”的BOOL类型的Key,还需要把它的值设置为YES,之所以这样做就是为了让App支持本地化App名称,但是现在可以忽略这一步,具体设置如下所示(只给有需要的人看):

二、App名称的国际化/本地化设置

1、选中Info.plist,然后使用快捷键command + n,新建文件,然后选择Strings File类型的文件(iOS-->Resource-->Strings File);

2、文件名字必须要命名为首字母大写的“InfoPlist”,就算是首字母小写也不行,如果不按照这个名字来,你绝对设置不成功的!然后文件名后面在创建成功之后会自动生成后缀,这里不用担心,只要把文件名字写对就行了;

3、点击create之后,xcode左侧导航列表里就会新出现一个名为InfoPlist.strings的文件,然后选中这个文件名,在xcode的File inspection点击Localize,这样做是为了选择需要的本地化语言;

4、点击Localize之后,会弹出一个提示对话框,展开对话框列表,发现下拉列表所展示的所有语言就是我们需要国际化的语言,选择需要本地化的语言,然后点击对话框的Localize按钮,然后依次把需要的语言都按照这种方法选中添加即可;

5、然后在添加完的国际化语言列表里面全部勾选刚才添加的国际化语言列表,然后再回去Xcode左侧的InfoPlist.strings的文件下面多了子文件,然后点击箭头展开,会发现添加的几个国际化语言文件;

6、然后在InfoPlist.strings下面所有的国际化语言文件里面分别添加对应的App名字,比如英语类型里面,就写:CFBundleDisplayName = "English"; //English就是App英文的名字;

7、依次在剩下的几种语言里面分别添加对应的App本地化名字即可。具体图解步骤如下所示:

三、项目详情中字符串的本地化处理

字符串本地化处理,就是App里面的字符串在不同的语言下显示对应语言的内容,eg:"我的"这个词语在简体中文语言环境下就显示“我的”,在英语环境下就显示“Me"。其实字符串本地化和App名称本地化的过程一模一样,只不过创建的文件名字不一样罢了,这里的字符串本地化创建的文件名字必须是:Localizable,错一个字母都不行,首字母小写也不行,不然就不会成功本地化处理。

1、与App名称本地化创建文件的步骤一样,使用快捷键command + n,新建文件,然后选择Strings File类型的文件(iOS-->Resource-->Strings File);

2、文件名必须命名为Localizable,文件创建成功之后,查看xcode左侧多出来一个名为Localizable.strings的文件,然后选中该文件,在xcode的File inspection点击Localize;

3、点击Localize之后,会弹出一个提示对话框,展开对话框列表,发现下拉列表所展示的所有语言就是我们需要国际化的语言,选择需要本地化的语言,然后点击对话框的Localize按钮,然后依次把需要的语言都按照这种方法选中添加即可;

4、然后在添加完的国际化语言列表里面全部勾选刚才添加的国际化语言列表,然后再回去Xcode左侧的Localizable.strings的文件下面多了子文件,然后点击箭头展开,会发现添加的几个国际化语言文件;

5、然后在Localizable.strings下面所有的国际化语言文件里面,分别以键值对的形式在代码中给每一个需要本地化的字符串赋值,比如英语里面:"home" = "Home",那么简体中文里面:"home" = "主页" ,依次在每个对应的语言文件里面添加该键值对对应的值;

6、为了方便起见,直接使用Foundation框架系统自带的宏来根据Key获取对应的字符串,然后赋值给代码中字符串,这个宏是:#define NSLocalizedString(key, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]

7、具体在代码里调用:

NSString *cart = NSLocalizedString(@"cart", nil);

self.title = cart;

这里就不再发全部截图,以上步骤截图可以参照App名字本地化的那些步骤来就行,下面只发一下不一样部分的截图:

四、图片设置本地化配置

图片设置本地化和Localizable.strings类似,图片资源存放在Images.xcassets里,使用时将不同语言的图片资源在Localizable.strings里一一对应设置,如下所示:

Localizable.strings (English)

"imageName" = "pic-e";

Localizable.strings (Chinese(Simplified))

"imageName" = "pic-c";

五、货币值设置本地化配置

货币显示在不同的国家是有区别的,例如:100000可以写作"100,000"也能写作"100.000"。针对这种情况可以使用NSNumberFormatter格式化,例如:

NSNumberFormatter *numberFor = [[NSNumberFormatter alloc] init];

[numberFor setNumberStyle:NSNumberFormatterDecimalStyle];

NSString *numberString = [numberFor stringFromNumber:@(100000)];

testLabel.text = [NSString stringWithFormat:NSLocalizedString(@"testNum:%@", nil), numberString];

六、Xcode 8 权限提示语国际化/本地化配置

配置权限国际化和配置应用程序名字国际化一样,具体Key值如下:

NSMicrophoneUsageDescription 麦克风权限

NSCameraUsageDescription 相机权限

NSPhotoLibraryUsageDescription 相册权限

NSBluetoothPeripheralUsageDescription 蓝牙权限

NSSpeechRecognitionUsageDescription 语音转文字权限

NSCalendarsUsageDescription 日历权限

NSLocationWhenInUseUsageDescription 定位权限

NSLocationAlwaysUsageDescription 定位权限

以上就是本篇全部内容,欢迎关注三掌柜微信公众号,欢迎关注!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180404G0EXP300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券