本地化与国际化详解
效果以下:
英语: 中文:
具体实现以下:
一。先作准备:设置程序本地化
在xcode点击程序图标:点击Info选项->Localizationn,点击“+”,选择要添加的语言,简体中文选择Chinese(zh-Hans)
你会在你工程目录下发现多了个文件夹,“zh-Hans.lproj",x-code使用.lproj做为其本地化文件夹的扩展名。
二。设置xib文件本地化,
图像本地化的方法是同样道理的,能够根据用户的显示语言加载不一样的xib文件
操做:点击xib文件,在IB窗口中选择选项选择“File Inspecter",也就是第一个选项,选择“Localization->"+"选择添加的语言,
效果以下,原来的xib文件就会出现三角形,其下有两个文件,由于个人为storyboard,但效果是同样的。就能够实现将其本地化了,很是简单吧
三。设置应用程序名本地化,
设置应用程序名存储在应用程序的Info.plist文件中,咱们例子实际上为Localize-Info.plist,选择文件,并不须要对文件进行 本地化,而是使"Info.strings"本地化就能够了,在Localize.Info.plist,空白处右键,选择Show Raw Keys/Values,就会看到应用程序名实际为CFBundleDisplayName,咱们只须要在对应的 Info.plist中添加如下代码就能够了
英文版:C代码
- CFBundleDisplayName = "Localization";
复制代码
C代码java
- CFBundleDisplayName = "本地化";
复制代码
效果图:
4、加载的字符串本地化,
原理:在代码中将加入的字符串加入NSLocalizeString宏中,启动程序时,系统将根据语言加载相应的文件获得其对应的字符串文件,这个字符 串能够经过系统将NSLocalizedString中的宏生成名为“Localizable.strings”的文件,固然你能够本身去建立这个文件, 而后手动是添加对应的字符串。,
- labelName.text = NSLocalizedString(@"Name", @"The name is ");
- labelPassword.text = NSLocalizedString(@"Password:",@"The password is");
复制代码
NSlocalizeString 第一个参数是内容,第二个参数将会转化为字符串文件里的注释。
转化方法以下 :先关闭项目,打开终端,进入到项目的目录,输入genStrings 文件名.m就能够将该文件中的宏转化为相应的字符串文件,
效果以下:会看到生成"Localizable.strings",
打开文件,就能够交给翻译人员去翻译了
===================
一、本地化字符串,网上那些方法我就不说了,我只更正一点:若是你的Classes下面有子文件夹会报错,使用下面的命令:
find . -name *.m | xargs genstrings -o /Users/apple/(你目标的文件夹)
二、本地化软件的名字:
(1)在info.plist文件里作以下设置:
(2)建立一个InfoPlist.strings文件,里面写以下内容:
"CFBundleDisplayName"="你软件的名称";
"CFBundleName"="你软件的名称";
(3)本地化这个文件便可。
三、本地化资源,没必要细说了,网上资料不少,这里我只说下个人疑惑:图片资源貌似只能用zh-Hans。
四、本地化icon,目前不支持,因此不要费劲的去本地化icon了。
五、商店的本地化,也没必要细说了,很简单,按照苹果须要的填就能够了。
应用genstrings和NSLocalizedString实现App文本的本地化
Admin
2012年3月20日
xcode
App本地化的需要不消讲大师也都熟悉打听,本文将介绍一种简单的办法来实现字符串的本地化。
在不推敲本地化的景象下,咱们如果在代码中给一个Button定义title,通常会如许写:
btn.titleLable.text = @"Example Button";
app
也许咱们已经写了很长的代码才推敲到本地化的题目,大可没必要头疼,这时辰,咱们要作的是把代码从头扫一遍,而后把每一个会显示给用户看的字符串作以下批改:
(对于内部应用的字符串就用不着本地化了)
btn.titleLable.text = NSLocalizedString(@"btn_title", nil);
工具
NSLocalizedString是一个定义在NSBundle.h中的宏,其用处是寻找当前体系说话对应的Localizable.strings文件中的某个key的值。
第一个参数是key的名字,第二个参数是对这个“键值对”的注释,在用genstrings对象生成Localizable.strings文件时会主动加上去。
到今朝为止,咱们尚未生成Localizable.strings文件。这是一个逆向的过程,也就是先写好调用过程,再生成strings资料文件。
当咱们把全部的.m文件都修发好了,就该genstrings对象出场了。
1. 启动终端,进入工程地点目次。
2. 新建两个目次,推荐放在资料目次下。
目次名会感化到Localizable.strings文件对应的说话,不克不及写错了。这里zh-Hans指简体中文,重视不克不及用zh.lproj默示。
mkdir zh-Hans.lproj
mkdir en.lproj
spa
3. 生成Localizable.strings文件
genstrings -o zh-Hans.lproj *.m
genstrings -o en.lproj *.m
翻译
-o <文件夹>,指定生成的Localizable.strings文件放置的目次。
*.m,扫描全部的.m文件。这里支撑的文件还包含.h, .java等。
4. 右键点击工程的Resources目次,选择“New Group”,添加两个目次zh-Hans.lproj和en.lproj。
5. 在新建的group中添加方才生成的Localizable.strings文件。
6. 最后在Localizable.strings文件中,批改每一个key所对应的内容,就大功成功了。
说了一大堆,其实操纵起来仍是很简单的,总的来说就是两条:
1. 在代码里用NSLocalizedString获取要本地化的字符串
2. 用genstrings扫描代码文件,生成Localizable.strings,而后加到工程中。
五. 图片和其余资源文件
选中须要本地化的资源文件 -> 打开右边工具栏(Utilites) -> 在“Localization”栏目加入须要支持的语言。xcode会把资源文件拷贝到新加入语言的的目录下,把准备好的本地化文件替换掉xcode自动拷贝的文件便可。code