iOS 应用程序的本地化

一、概述

应用程序本地化,从名字理解就是,应用程序App的入乡随俗化处理,比喻说App的名字,在手机设置语言为简体中文的时候,App名字也是简体中文,在手机设置语言为英文的时候,名字则变成英文。这样说,就能理解本地化是什么东西了。

既然可以对App名字本地化,同样也可以对其他的内容进行本地化处理,比喻说图片、nib文件及指定字符串等。在后面会讲述一些常用的本地化处理

开发中,对项目进行本地化处理,不是勾选某个选项就可以了的,需要为项目添加文件,这个文件称为”本地化文件夹”,文件名后缀为.lproj。下面就开始一步一步讲解

二、本地化

先创建一个项目,我这里就写了一个简单的项目,两个界面,demo可以在文章后面下载。新建项目,本地语言默认是英文,现在是添加中文本地语言,下面以中文和英文本地化处理为例(当然,你也可以添加其他的本地语言,思路是一样的)
如下图,找到添加本地语言的位置,Localizations,点击加号


统一设置

在展开的选项例表中选择你需要的处理的语言,这里选择简体中文zh-Hans


选择语言

选择语言后,会让你再选择需要做本地化处理的文件,都勾上就行了(这里既是给项目添加本地语言,也是给你选中文件添加本地化的子文件),勾上以后并确认
选择本地化的文件

确认以后,可以看到本地语言有两个了
结果显示1

同时,回到工程我们可以看到,刚才勾选的两个storyboard文件,都有各自的子文件了,在展开的子文件列表中可以看到多了一个**.string(chinese(Simplified))文件


结果显示2

到这一步,准备工作做完了。下面开始示例讲解
图片本地化

图片本地化,就是不同的语言环境,用不同的图片,打个比喻说首页的图片主题是过年,那么对应中国是饺子加鞭炮,而对于英文国家,则是圣诞老人加礼物。当然我这里的图片比较简单,仅仅是两张不同的图片而已

往项目中拖入一张图片并且写到界面上(具体怎么拖怎么写就不说了),然后找到图片Localization设置界面,如下图


图片本地化选项

点击上图中的“Localize...”按钮,会提示你,选择对应的语言,这里是中文,并确认。如下图


选择语言

会看到Localization的列表框下面多了几个选项,勾上"English"和"Chinese(Simplifile)",bese可以不用勾,基类,勾上的话和English是一个效果,如图
勾选语言

可以看到勾上以后,刚才那张图片也有了子下拉列表,展开可以看到两个文件,对应着中文和英文,如下图


本地化添加结果

因为,想要实现中英文下展示不同的图片,所以就要提供另外一张图片到项目中。首先准备一张图片,然后在本地化文件@“飞猪.png(Chinese(Simplified))”右键,选择在文件中显示,如图
在文件目录中显示

将准备好图片替换掉原有的图片,当然名字得是一样的,我替换的结果如下
替换图片

运行结果如下,前提是你的把模拟器设置成中文和英文各运行一次,才能看出区别
英文环境运行结果

中文环境下运行结果
字符串本地化

字符串本地化,就是把在项目中你可以控制或捕捉到的字符串,在不同的语言环境下将其显示为不同。在这里我是把界面上的一个label的字符串在不同语言环境下显示不同
先创建一个字符串的本地化文件 strings File文件如下图


创建.strings

将文件保存为Localizable


命名为Localizable

在项目列表中找到找到刚刚创建的文件,然后点击右边的Localize...按钮,步骤和图片本地化类似,如下图
本地化处理

选择简体中文即Chinese(Simplified)
选择简体中文

勾选Localization列表下的English和Chinese(Simplefied)


勾选简体中文

可以看到Localizable.strings有两个子文件,分别对应的是简体中文和英文
本地化结果

在Localizable.strings(Chinese(Simplified))文件中添加代码labelKey = "简体中文模式"。如下图
WX20170405-141712@2x.png

在Localizable.strings(English)文件中添加代码labelKey = "英文模式"。如下
WX20170405-141652@2x.png

在控制器中使用该字符串的地放使用系统的宏NSLocalizedString(key, comment),第一个参数是本地化字符串的键,其实这个键就是本地化文件中的那个“labelKey”,第二个参数是注释,可忽略。通过这个宏就可以得到对应语言环境下字符串的值。代码如下
- (void)viewDidLoad {
    [super viewDidLoad];
    self.label.text = NSLocalizedString(@"labelKey", @"验证不通的语言环境文字是否改变");
}

在简体中文环境下运行项目,结果如下


简体中文环境下运行结果

在英文环境下运行项目,结果如下


英文环境下运行结果

可以看到其中的区别了。
应用程序名字本地化

应用程序名称本地化,就是英文环境下显示一个名称,简体中文环境下显示一个名称,这里的例子是,分别显示中文和英文
套路和之前的差不多,简单说明下
首先要创建一个Strings File文件,如下图


创建strings文件

将名字命名为InfoPlist


命名InfoPlist

添加本地化文件,和之前的一样,勾选简体中文和英文
本地化处理

WX20170405-171135@2x.png

在中英文本地化文件中分别添加应用程序的名字,注意应用程序名字值对应的键不能错,一定是:“CFBundleDisplayName”,如下图


分别在英文环境和中文环境下运行项目,结果如下


英文环境下运行结果

中文环境下运行结果

这样就完成了应用程序名字的本地化处理
nib文件本地化

nib文件本地化,这里以xib文件为例,要实现的内容是界面上的返回按钮上的标题,在英文下为“back”,在简体中文下为“返回”。
步骤和上面的类似,先创建本地化文件


本地化处理

这里一定要选择Base,不要问我为什么,你试试就知道了。然后将三个都勾上,如图


选择base

勾选语言

在两个文件中更改按钮标题对应的字符串,像下图中那样更改
简体中文本地化文件修改

英文本地化文件修改

分别在简体中文和英文环境下运行项目,得到结果如下


中文环境下的运行结果

英文环境下的运行结果

到此,应用程序本地化处理的讲解结束。其实套路不复杂,也可以以此类推,对别的内容也可以进行本地化处理,自行发挥
另外补充一点文章开头说的添加本地化文件,涉及到**.lproj文件。这里说明一下,意思就是只要你添加了本地化文件,比喻说中文或者法语,就会自动生成这个文件,而且每种语言对应一个,命名也是自动的。这个文件在项目文件中,打开项目文件就可以看到,如下图

三、下载

点击下载Demo

四、推荐阅读

第一篇:应用程序本地化 这篇文章写的很详细,除了老一点
第二篇:iOS 设置App的名称

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容