1、简介 java
* 使用本地化功能,能够轻松地将应用程序翻译成多种语言,甚至能够翻译成同一语言的多种方言 app
* 若是要添加本地化功能,须要为每种支持的语言建立一个子目录,称为”本地化文件夹”,一般使用.lproj做为拓展名 spa
* 当本地化的应用程序须要载入某一资源时,如图像、属性列表、nib文件,应用程序会检查用户的语言和地区,并查找相匹配的本地化文件夹。若是找到了相应的文件夹,就会载入这个文件夹中的资源 .net
2、默认的效果图 翻译
工程目录结构 blog
运行效果图(由于没有使用本地化功能,因此无论用户选择什么语言环境,运行的效果都是同样的) 图片
如今想在中文语言环境下,换另外一套实现,其中包括: ip
* 更改nib文件中的文字(nib本地化) 资源
* 更改登陆按钮下面的图片(图片本地化) 字符串
* 更改对话框中的文字(Tip和Ok)(字符串本地化)
* 更改应用名称(应用名称本地化,即本地化Info.plist文件)
3、本地化前的准备
其实就是先建立好中文的本地化文件夹(zh-Hans.lproj),让应用程序支持中文语言环境
选择当前须要本地化的资源
选择Finish后,会发现硬盘上多了一个中文的本地化文件夹zh-Hans.lproj,至于en.lproj文件夹是英文的本地化文件夹,建立项目时默认就有的
项目中的MJViewController.xib、InfoPlist.strings文件左边也多了个能够展开的三角形,展开能够发现分别都有2个版本的文件
MJViewController.xib(English)对应en.lproj文件夹中的MJViewController.xib文件
InfoPlist.strings(English)对应en.lproj文件夹中的InfoPlist.strings文件
MJViewController.xib(Chinese)对应zh-Hans.lproj文件夹中的MJViewController.xib文件
InfoPlist.strings(Chinese)对应zh-Hans.lproj文件夹中的InfoPlist.strings文件
准备工做作完后,就能够开始展开本地化工做了
4、nib文件的本地化
打开MJViewController.xib(Chinese)文件,修改里面的文字信息(这里不修改图片)
5、应用程序名称本地化(Info.plist本地化)
知识背景:Info.plist中有个叫CFBundleDisplayName的key决定了应用程序的名称
1.为Info.plist添加一个key-value,让应用程序支持名称本地化,Info.plist就会去InfoPlist.strings加载CFBundleDisplayName对应的字符串
2.在InfoPlist.strings(English)文件中加入:
3.在InfoPlist.strings(Chinese)文件中加入:
6、图片本地化
(这里演示本地化home.png,nib文件中登陆按钮下面的房子图片)
1.单击选中home.png,而后查看右上角的视图
2.选了Localize表明会将home.png加入到英语的本地化文件夹en.lproj中去
3.添加图片支持中文语言
4.查看下硬盘中home.png的状况
5.并且项目中的home.png左边也多了个能够展开的三角形,展开能够发现有2个版本的文件
home.png(English)对应en.lproj文件夹中的home.png文件
home.png(Chinese)对应zh-Hans.lproj文件夹中的home.png文件
6.用预先准备好的另一张图片替换zh-Hans.lproj文件夹中的home.png
7.替换后查看项目中home.png的状况
8.在代码中照常使用图片便可
7、字符串的本地化
1.建立一个字符串资源文件
2.文件名最好是Localizable.strings,若是使用其余文件名,使用字符串时的调用会有些区别
3.为Localizable.strings添加多语言支持(跟上面图片本地化相似),选中Localizable.strings文件,查看右上角的视图
4.选了Localize表明会将Localizable.strings加入到英语的本地化文件夹en.lproj中去
5.添加支持中文语言
6.查看下硬盘中Localizable.strings的状况
7.并且项目中的Localizable.strings左边也多了个能够展开的三角形,展开能够发现有2个版本的文件
Localizable.strings(English)对应en.lproj文件夹中的Localizable.strings文件
Localizable.strings(Chinese)对应zh-Hans.lproj文件夹中的Localizable.strings文件
8.在Localizable.strings(English)文件加入:
9.在Localizable.strings(Chinese)文件加入:
10.在代码中使用NSLocalizedString(key, comment)来读取本地化字符串,key是Localizable.strings文件中等号左边的字符串,comment纯粹是注释
注意:若是你的字符串资源文件名不是Localizable.strings,如mj.strings,那么你就得使用NSLocalizedStringFromTable()来读取本地化字符串:
补充:生成字符串资源文件的另外一种方式(经过终端命令)
1.首先添加获取字符串的代码,好比在MJViewController.m
3.打开文件夹,已经生成了字符串资源文件
若是使用NSLocalizedStringFromTable(key, tbl, comment)来获取字符串,资源文件会以tbl参数做为文件名,好比
4.将资源文件导入项目便可,而后打开资源文件,能够发现已经生成了key和comment
8、其余文件的本地化
跟六中图片本地化的原理是同样的,重复六中的每一个步骤便可
9、最终效果演示
1.英文环境下
2.中文环境下