一、概述
应用程序本地化,从名字理解就是,应用程序App的入乡随俗化处理,比喻说App的名字,在手机设置语言为简体中文的时候,App名字也是简体中文,在手机设置语言为英文的时候,名字则变成英文。这样说,就能理解本地化是什么东西了。
既然可以对App名字本地化,同样也可以对其他的内容进行本地化处理,比喻说图片、nib文件及指定字符串等。在后面会讲述一些常用的本地化处理
开发中,对项目进行本地化处理,不是勾选某个选项就可以了的,需要为项目添加文件,这个文件称为”本地化文件夹”,文件名后缀为.lproj。下面就开始一步一步讲解
二、本地化
先创建一个项目,我这里就写了一个简单的项目,两个界面,demo可以在文章后面下载。新建项目,本地语言默认是英文,现在是添加中文本地语言,下面以中文和英文本地化处理为例(当然,你也可以添加其他的本地语言,思路是一样的)
如下图,找到添加本地语言的位置,Localizations,点击加号
在展开的选项例表中选择你需要的处理的语言,这里选择简体中文zh-Hans
选择语言后,会让你再选择需要做本地化处理的文件,都勾上就行了(这里既是给项目添加本地语言,也是给你选中文件添加本地化的子文件),勾上以后并确认
确认以后,可以看到本地语言有两个了
同时,回到工程我们可以看到,刚才勾选的两个storyboard文件,都有各自的子文件了,在展开的子文件列表中可以看到多了一个**.string(chinese(Simplified))文件
到这一步,准备工作做完了。下面开始示例讲解
图片本地化
图片本地化,就是不同的语言环境,用不同的图片,打个比喻说首页的图片主题是过年,那么对应中国是饺子加鞭炮,而对于英文国家,则是圣诞老人加礼物。当然我这里的图片比较简单,仅仅是两张不同的图片而已
往项目中拖入一张图片并且写到界面上(具体怎么拖怎么写就不说了),然后找到图片Localization设置界面,如下图
点击上图中的“Localize...”按钮,会提示你,选择对应的语言,这里是中文,并确认。如下图
会看到Localization的列表框下面多了几个选项,勾上"English"和"Chinese(Simplifile)",bese可以不用勾,基类,勾上的话和English是一个效果,如图
可以看到勾上以后,刚才那张图片也有了子下拉列表,展开可以看到两个文件,对应着中文和英文,如下图
因为,想要实现中英文下展示不同的图片,所以就要提供另外一张图片到项目中。首先准备一张图片,然后在本地化文件@“飞猪.png(Chinese(Simplified))”右键,选择在文件中显示,如图
将准备好图片替换掉原有的图片,当然名字得是一样的,我替换的结果如下
运行结果如下,前提是你的把模拟器设置成中文和英文各运行一次,才能看出区别
字符串本地化
字符串本地化,就是把在项目中你可以控制或捕捉到的字符串,在不同的语言环境下将其显示为不同。在这里我是把界面上的一个label的字符串在不同语言环境下显示不同
先创建一个字符串的本地化文件 strings File文件如下图
将文件保存为Localizable
在项目列表中找到找到刚刚创建的文件,然后点击右边的Localize...按钮,步骤和图片本地化类似,如下图
选择简体中文即Chinese(Simplified)
勾选Localization列表下的English和Chinese(Simplefied)
可以看到Localizable.strings有两个子文件,分别对应的是简体中文和英文
在Localizable.strings(Chinese(Simplified))文件中添加代码labelKey = "简体中文模式"。如下图
在Localizable.strings(English)文件中添加代码labelKey = "英文模式"。如下
在控制器中使用该字符串的地放使用系统的宏NSLocalizedString(key, comment),第一个参数是本地化字符串的键,其实这个键就是本地化文件中的那个“labelKey”,第二个参数是注释,可忽略。通过这个宏就可以得到对应语言环境下字符串的值。代码如下
- (void)viewDidLoad {
[super viewDidLoad];
self.label.text = NSLocalizedString(@"labelKey", @"验证不通的语言环境文字是否改变");
}
在简体中文环境下运行项目,结果如下
在英文环境下运行项目,结果如下
可以看到其中的区别了。
应用程序名字本地化
应用程序名称本地化,就是英文环境下显示一个名称,简体中文环境下显示一个名称,这里的例子是,分别显示中文和英文
套路和之前的差不多,简单说明下
首先要创建一个Strings File文件,如下图
将名字命名为InfoPlist
添加本地化文件,和之前的一样,勾选简体中文和英文
在中英文本地化文件中分别添加应用程序的名字,注意应用程序名字值对应的键不能错,一定是:“CFBundleDisplayName”,如下图
分别在英文环境和中文环境下运行项目,结果如下
这样就完成了应用程序名字的本地化处理
nib文件本地化
nib文件本地化,这里以xib文件为例,要实现的内容是界面上的返回按钮上的标题,在英文下为“back”,在简体中文下为“返回”。
步骤和上面的类似,先创建本地化文件
这里一定要选择Base,不要问我为什么,你试试就知道了。然后将三个都勾上,如图
在两个文件中更改按钮标题对应的字符串,像下图中那样更改
分别在简体中文和英文环境下运行项目,得到结果如下
到此,应用程序本地化处理的讲解结束。其实套路不复杂,也可以以此类推,对别的内容也可以进行本地化处理,自行发挥
另外补充一点文章开头说的添加本地化文件,涉及到**.lproj文件。这里说明一下,意思就是只要你添加了本地化文件,比喻说中文或者法语,就会自动生成这个文件,而且每种语言对应一个,命名也是自动的。这个文件在项目文件中,打开项目文件就可以看到,如下图
三、下载
四、推荐阅读
第一篇:应用程序本地化 这篇文章写的很详细,除了老一点
第二篇:iOS 设置App的名称