国际化

作者: healthbird | 来源:发表于2017-03-15 15:16 被阅读42次

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

配置需要国际化的语言

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

1. 选中project->Info->Localizations,然后点击”+”,添加需要国际化/本地化的语言。英文国际化是工程建立时默认添加的,此处以添加简体中文为例,如下图(默认需要勾选Use Base Internationalization):

添加中文语言国际化

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

弹出框

添加效果图如下:

添加成功

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

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

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

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

Strings File

2. 文件命名为:InfoPlist.strings(首字母大写,必须是这个名称),点击Localize,来配置语言文件。

Localize

3. 选择需要本地化的语言。

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

English/Chinese

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

(1).在InfoPlist.strings(English)文件中添加下面代码:(CFBundleDisplayName可以使用双引号,也可以不使用双引号!)         

CFBundleDisplayName="Demo";

Demo是App在英语环境环境下显示的名称

(2).在InfoPlist.strings(Simplified)文件中添加下面代码:

CFBundleDisplayName="演示";

演示是App在中文环境环境下显示的名称

在手机上安装APP,切换不同的语言环境,即可查看APP名字的变化。

(二) 代码中字符串的国际化

1. 和上面APP名称国际化一样,先创建本地化语言文件,名称为Localizable.strings(首字母大写,必须是这个名称),选中InfoPlist.strings,按下键盘上的command + N,选择并创建文件Strings File(iOS->Resource->Strings File)

Localizable.strings

2. 选中Localizable.strings文件,在Xcode的File inspection中点击Localize,选择我们需要本地化的语言,由于我们在配置需要的国际化语言中添加了简体中文,英文是默认添加的,所以点击Localize弹框选项中会有三个选项:Base、English、Chinese(Simplified),选择一项即可。因为我们要配置简体中文和英文,这里我们选English。

语言选项

3. 在xcode右侧Localization下选中English、Chinese,此时,Xcode左侧的Localizable.stirings下多了两个文件,Localizable.stirings(English)、Localizable.stirings(Simplified),然后我们只需要在Localizable.strings下对应的文件中,分别以Key-Value的形式,为代码中每一个需要本地化的字符串赋值,如下图:

文件内容-English 文件内容-Chinese

4. 我们只需要使用Foundation框架自带的NSLocalizedString(key, comment)这个宏根据Key获取对应的字符串,然后赋值给代码中的字符串。

NSLocalizedString(key, comment)

第一个参数是内容,根据第一个参数去对应语言的文件中取对应的字符串,第二个参数将会转化为字符串文件里的注释,可以传nil,也可以传空字符串@""。

举个例子

5. 不同环境下的显示效果:

中文环境:

中文环境

英文环境:

英文环境

相关文章

  • App语言的国际化之跟随系统语言(一)

    本将要国际化的内容是: App国际化的配置 App名称国际化 代码中字符串国际化 国际化语言的配置 在项目中打开如...

  • 【整理】前端国际化小结

    近期在做国际化的改造,做了相应的调研,简单做下项目前端国际化的小结 国际化可以分为前端国际化和后端国际化,也可以是...

  • App语言的国际化之跟随系统语言(二)

    本将要国际化的内容是: 图片国际化 storyboard/xib国际化 (一)图片的国际化 方式一: 对于同一张图...

  • iOS-应用名称和内容国际化

    iOS应用的国际化,主要分为3个部分:Info.plist 文件的国际化.xib文件的国际化.m文件的国际化 In...

  • 东方国际化的符合高科技

    东方国际化的符合高科技东方国际化的符合高科技东方国际化的符合高科技东方国际化的符合高科技东方国际化的符合高科技东方...

  • iOS工程项目国际化

    项目国际化有两种情况,分别是应用内容国际化,还有一种是StoryBoard或Xib国际化;本文国际化(英语和简体中...

  • iOS 启动图国际化

    一、使用launchImage 国际化方法 对图片进行国际化,由于Image.xcassets无法国际化图片,所以...

  • Day18 - Flutter - 国际化

    概述 国际化的认识 国际化的适配 国际化的工具 一、国际化的认识 开发一个App,如果我们的App需要面向不同的语...

  • 国际化(i18n)

    title: vue国际化date: 2016-11-17 国际化 本文介绍vue国际化的思路与实现。 vue国际...

  • iOS国际化详解

    iOS国际化详解 对于iOS国际化,一般包括: 1. 工程项目名称国际化2. 工程内控件内容国际化3. 工程内图片...

网友评论

    本文标题:国际化

    本文链接:https://www.haomeiwen.com/subject/izezbttx.html