iOS App国际化/本地化的实现过程

公司原本有一款仅支持中文的app,随着国际化发展,产品经理要求添加相关设置,让app在支持中文的同时,可以支持英文。搜索,发现以下两篇文章可以参考:
文章一: http://www.jianshu.com/p/88c1b65e3ddb
文章二:http://www.jianshu.com/p/782aaf3bf7da

文章一写得非常详细,没有任何经验的小白,只要按照作者分享的步骤一步步操作,很快就可以学会。遗憾的是作者还没有补上xib和storyBoard的国际化过程。

文章二写得相对简单,但是添加了xib和storyBoard的国际化过程。

本文综合两篇文章的精华和自己的实现过程,基于xcode8.1,简要描述一下实现国际化的核心步骤,方便自己今后查阅。

1 配置需要国际化的语言

选中project->Info->Localizations,然后点击"+",添加需要国际化/本地化的语言,如下图(默认需要勾选Use Base Internationalization):

iOS App国际化/本地化的实现过程_第1张图片
iOS App国际化/本地化的实现过程_第2张图片
iOS App国际化/本地化的实现过程_第3张图片

2 应用名称本地化/国际化

比如,微信在简体中文环境下App名称显示为“微信”,在英语环境下显示为“weChat”。下面就开始进行应用名称本地化。

iOS App国际化/本地化的实现过程_第4张图片

文件名字命名为InfoPlist,且必须是这个名字(因每个人电脑设置差异,此处本人电脑没有显示strings后缀名):

iOS App国际化/本地化的实现过程_第5张图片

点击create后,Xcode左侧导航列表就会出现名为InfoPlist.strings的文件,如下图:


iOS App国际化/本地化的实现过程_第6张图片

选中InfoPlist.strings,在Xcode的File inspection(Xcode右侧文件检查器)中点击Localize,目的是选择我们需要本地化的语言,如下图:


iOS App国际化/本地化的实现过程_第7张图片

弹框:
iOS App国际化/本地化的实现过程_第8张图片

选中语言后:
iOS App国际化/本地化的实现过程_第9张图片

勾选这需要支持的语言。

此时,Xcode左侧的InfoPlist.stirings左侧多了一个箭头,点击箭头可以展开,如下图所示:


iOS App国际化/本地化的实现过程_第10张图片

语言配置完成了,接下来,我们分别用不同的语言给InfoPlist.strings下的文件设置对应的名字。

(1)在InfoPlist.strings(english)中加入如下代码:
// Localizable App Name是App在英语环境环境下显示的名称
CFBundleDisplayName = "Localizable App Name";

(2)在InfoPlist.strings(Chinese(Simplified))中加入如下代码
CFBundleDisplayName = "国际化App";

app名称国际化完成,语言设置为中文时,显示中文;语言设置英文时,显示英文

3 代码中字符串的本地化

3.1 创建Localizable.strings文件

字符本地化和App名称本地化过程如出一辙,只是创建的文件名成不一样(连同后缀一起,文件名必须是Localizable.strings),其他步骤完全相同。

3.2 字符串赋值

xcode左侧项目列表中出现不同语言下的Localizable.strings文件后,
在对应的文件中,分别以Key-Value的形式,为代码中每一个需要本地化的字符串赋值。

//  Localizable.strings(English)
"content" = "line";

//  Localizable.strings(chinese(Simplified))
"content" = "行";

// 代码中本地化
UITableViewCell *cell = [[UITableViewCell alloc] init];
    NSString *str = NSLocalizedString(@"content", nil);
    cell.textLabel.text = str;
备注:NSLocalizedString(key, comment)是Foundation框架自带的宏,程序运行时根据Key获取对应的字符串,然后赋值给代码中的字符串。

4 图片本地化

测试表明,如果图片名称为英文,无论中文还是英文环境下,图片都能正常显示,所以暂时没有对图片做任何配置

5 XIB和storyBoard本地化

5.1 Localize

选择要本地化的Storyboard或XIB,在File inspection中点击Localize,然后勾选需要支持的本地化语言。

iOS App国际化/本地化的实现过程_第11张图片

5.1 修改对应的Key-Value

Xcode会自动为你生成对应的Key-Value,对应修改即可:

iOS App国际化/本地化的实现过程_第12张图片

经过以上操作,app的名称、代码中的字符串、xib和storyBoard已经国际化完毕了,不同的环境下就会显示不同的语言。

你可能感兴趣的:(iOS App国际化/本地化的实现过程)