3分钟实现iOS语言本地化/国际化(图文详解)

前言

语言本地化,又叫做语言国际化。是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言。往往一些应用程序需要提供给多个国家的人群使用,或者一个国家有多种语言,这就要求应用程序所展示的文字、图片等信息,能够让讲不同语言的用户读懂、看懂。进而提出为同一个应用程序适配多种语言,也即是国际化。语言国际化之所以又叫做语言本地化,这是站在每个用户的角度而言的,是指能够让用户本地、本土人群能够看懂的语言信息,顾名思义,语言本地化。其实语言本地化 == 语言国际化!

本文将分如下7个主要章节一步一步讲解如何完全本地化一个App。

  • 配置需要国际化的语言(国际化的准备工作)

  • App名称本地化

  • 代码中字符串本地化

  • 多人开发情况下的字符串本地化

  • 图片本地化(两种方式两种方式)

  • 查看/切换本地语言

  • storyboard/xib本地化

配置需要国际化的语言

配置需要国际化的语言,这也是国际化之前的准备工作,无论我们是国际化App名称、代码中的字符串、图片、还是storyboard和xib,都需要进行这一步的准备工作(一个项目中需要且仅需要配置一次)。

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

1055199-9929ad6b38dae886.png

此处以添加法语为例,如下图:

1055199-5b8ec0ce8c5f61e7.png

弹出如下对话框,直接点击finish,如下图:

1055199-3aa4a15594e1684d.png

同理,添加简体中文、繁体中文、韩语,最终结果如下图:

1055199-ce7709e58803ed19.png

备注: “zh-Hans”和“zh-Hant”是简体中文和繁体中文的缩写。这是标准的缩写。H可大写也可小写。"en"是英语的缩写。ko是韩语的缩写,fr是法语的缩写。其他语言请百度各国语言缩写即可查询。

(一)应用名称本地化/国际化

应用名称本地化,是指同一个App的名称,在不同的语言环境下(也就是手机设备的语言设置)显示不同的名称。比如,微信在简体中文环境下App名称显示为“微信”,在英语环境下显示为“weChat”。下面就开始进行应用名称本地化。

选中Info.plist,按下键盘上的command + N,选择Strings File(iOS->Resource->Strings File)

1055199-974c14fac9fe0083.png

文件名字命名为InfoPlist(必须是这个名字才可以识别,并注意大小写),且必须是这个名字(因每个人电脑设置差异,此处本人电脑没有显示strings后缀名):

1055199-4a7f26d3881b7598.png

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

1055199-35cac81020746618.png

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

注意:在点击Localize之前,一定要保证我们已经添加了需要本地化的语言,也就是上面配置需要国际化的语言那一步(步骤:project->Info->Localizations,然后点击"+",添加需要国际化/本地化的语言)。

1055199-871c2853254ea8b5.png

点击Localize后,会弹出一个对话框,展开对话框列表,发现下拉列表所展示的语言正是我们在上面配置的需要国际化的语言,选择我们需要本地化的语言,然后点击对话框的Localize按钮,如下图:

1055199-034e2065ed6ea719.png

1055199-6d515d6e77ecdf51.png

注意:如果我们没有在 PROJECT 中配置需要国际化的语言(project->Info->Localizations,然后点击"+"),上图下拉列表中将只会出现"Base"和"English"选项,English语言是系统默认的语言,其他需要国际化的语言(例如中文简体、法语)必须通过上面的配置本地化语言那一步手动添加。

然后我们发现Xcode右侧的File inspection变成了下图的样式:

1055199-3d54bb8c6a5913a2.png

接下来,勾选French、Chinese(zh-Hans)、Chinese(zh-Hant)、Korean,如下图:

1055199-2560826ab667068d.png

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

1055199-7ffacf46ffd88552.png

从上图可以看出,InfoPlist.strings文件下包含了English、French、Chinese(Simplified)、Chinese(Traditional)、Korean这五种语言的文件。

原理:程序启动时,会根据操作系统设置的语言,自动加载InfoPlist.strings文件下对应的语言文件,然后显示应用程序的名字。

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

(1)在InfoPlist.strings(english)中加入如下代码:

1
2
// Localizable App Name是App在英语环境环境下显示的名称
CFBundleDisplayName =  "Localizable App Name" ;

备注:CFBundleDisplayName可以使用双引号,也可以不使用双引号!

1055199-011b5c192d0f8e88.png

(2)在InfoPlist.strings(French)中加入如下代码:

1
CFBundleDisplayName =  "Le nom de la localisation de l'App" ;

1055199-6ca3075564e0cc15.png

(3)在InfoPlist.strings(Chinese(Simplified))中加入如下代码:

1
CFBundleDisplayName =  "国际化App名称" ;

1055199-6eadf20b1782286a.png

(4)在InfoPlist.strings(Chinese(Traditional))中加入如下代码:

1
CFBundleDisplayName =  "國際化App名稱" ;

1055199-635b1a8e9abdca4b.png

(5)在InfoPlist.strings(Korean)中加入如下代码:

QQ截图20170122150821.png

1.png

修改模拟器语言环境为English。App名称如下图:

QQ截图20170122151052.png

修改模拟器语言环境为Chinese(Simplified)。App名称如下图:

QQ截图20170122151117.png

修改模拟器语言环境为Chinese(Traditional)。App名称如下图:

QQ截图20170122151142.png

修改模拟器语言环境为Franch。App名称如下图:

QQ截图20170122151202.png

修改模拟器语言环境为Korean。App名称如下图:

QQ截图20170122151221.png

备注:过去本地化App名称,需要在Info.plist文件中增加一个名为“Application has localized display name”的BOOL类型的Key,并且需要将其值设置为YES(如下图)。目的是让App支持本地化App名称。但现在可以忽略这一步。

1055199-38b7885292b31835.png

至此,本地化App名称已经演示完毕,其步骤就是:

  1. 在Project的设置中通过点击"+"添加需要本地化的语言。

  2. 然后在Xcode右侧的File inspection中点击Localize,选中需要本地化App名称的语言。

  3. 最后在每个语言对应的文件中以key = value(CFBundleDisplayName = "App名称";);的形式设置App的名称。

转载于:http://www.cocoachina.com/ios/20170122/18609.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值