iOS本地化

最近开发了一个项目要实现本地化功能,从网上找了一些资料,参考了一些别人的方法。

现将本地化的全过程做一下记录,以更经后能快速的使用。开发工具Xcode4.6
一、我们的工程文件中都是包含一个InfoPlist.strings文件,如果没有可自己新建一个,新建的方法如下:
1、选择New File创建一个新的文件,然后按照下图步骤。
IOS <wbr>本地化
选中后点击Next,输入文件名称如下图
IOS <wbr>本地化
这样就创建好了本地化文件,如果程序中有好的InfoPlist.strings本地化文件,可直接省去上面的步骤,直接进入下面的步骤。
2、选中创建好的strings文件,打开属性栏,如图
IOS <wbr>本地化
选择Localizable后将出现语言选择框,现在只能选择英文。
IOS <wbr>本地化
点击Localize后,就可以看到Localization中有一个English本地语言了。

3、经过上面的操作我们就建好了本地化文件,现在让我们开始添加本地化语言。选择文件根目录,打到info选项,如图
IOS <wbr>本地化
选择添加项后将出现语言选择框,选择Chinese(zh-Hant)简体中文。
IOS <wbr>本地化
如果程序中用到了XIB可创建对应版本的XIB文件,如果不需要,可不用选择。后面会对XIB进行讲解。如下图
IOS <wbr>本地化

添加其它语言重复上面第3步既可。
 
二、本地化程序名称。
1、展开InfoPlish.strings或你自己创建的本地化文件,将看到已添加的语言版本
IOS <wbr>本地化

(1)、在InfoPlish.strings(english)文件中加入;

CFBundleDisplayName ="localizable";

其中“ localizable”为英文应用程序名称.

(2)、同理在InfoPlish.strings(chinese)文件中加入:

CFBundleDisplayName ="本地化";

其中“本地化”为中文名称,

注意:CFBundleDisplayName加不加双引号都行

(3)、编辑Info.plist,添加一个新的属性Application has localized display name, 设置其类型为BOOL,并将其value设置为YES即可
2.运行结果如图:
IOS <wbr>本地化         IOS <wbr>本地化

三、可视内容本地化
1.本地化XIB,如果本地化语言选择了XIB将会出现对应的XIB文件。如图
IOS <wbr>本地化

你可以创建不同风格的布局,建议不要这样做,后期维护比较难。
 
IOS <wbr>本地化     IOS <wbr>本地化
 
 
2.给内容控件进行本地化赋值

(1)、在InfoPlish.strings(english)文件中加入本地化内容;

CFBundleDisplayName ="localizable"; //这个是应用名称

 

"label"="qingfeng zhang";

 

"buttonTitle" = "this is a button";

"buttonBg" = "buttonBg_01";

 

"imageName" = "1004.jpg"; //这个是将图片名称进行本地化

(2)、同理在InfoPlish.strings(chinese)文件中加入对应的本地化内容: 

CFBundleDisplayName ="本地化"; //这个是应用名称

 

"label"="张清锋";

 

"buttonTitle" = "这是个按扭";

"buttonBg" = "buttonBg_02";

 

"imageName" = "1005.jpg"; //这个是将图片名称进行本地化

 

(3)、读取本地化字符串有两种方法分别为:

NSLocalizedString(<#key#>, <#comment#>)

NSLocalizedStringFromTable(<#key#>, <#comment#>)

如果你的strings文件名称不是“Localizable.strings”而是自定义的话,如infoPlist.strings,那么你就得使用NSLocalizedStringFromTable(<#key#>, <#comment#>)来读取本地化字符串:取值方法如下:

NSLocalizedString(@"label",  nil);

NSLocalizedStringFromTable(@"label", @"InfoPlist", nil);

(4)、给控件进行赋值,这里用的取值方法是

NSLocalizedStringFromTable(<#key#>, <#comment#>):

 

    self.label.text = NSLocalizedStringFromTable(@"label", @"InfoPlist", nil);

    

    [self.button setTitle:NSLocalizedStringFromTable(@"buttonTitle",@"InfoPlist", nil)

                 forState:UIControlStateNormal];

    

    [self.button setBackgroundImage:[UIImage imageNamed:NSLocalizedStringFromTable(@"buttonBg", @"InfoPlist", nil)]

                           forState:UIControlStateNormal];

运行结果如下图

IOS <wbr>本地化    IOS <wbr>本地化

3、本地化图片,通过上面的方法可以看出,我们是通过本地化图片的名称进行取值,而实现显示不同的图片。下面讲解下图片的本地化操作。

(1)、选中你要本地化的图片,打开属性栏,如下图:

IOS <wbr>本地化

(2)、选择Localizable后将出现语言选择框,现在只能选择英文。
IOS <wbr>本地化
(3)、点击Localize后,就可以看到Localization中有一个English和Chinese本地语言了,但只选中了English。
IOS <wbr>本地化

(4)、这时你可以打开您的工程文件,里面有两个目录en.lproj文件和zh-Hans.lproj文件。在en.lproj你可以看到你刚才本地化的图片和其他本地化的文件,在zh-Hans.lproj文件中则没有这张图片。

IOS <wbr>本地化

IOS <wbr>本地化
(5)、现在将对应的图片添加到zh-Hans.lproj文件中,图片名称需一样才行。

IOS <wbr>本地化

(6)、回到Xcode,选中你刚才本地化的图片,打开属性栏。选中本地化的语言就行了

IOS <wbr>本地化

(7)、我们再看下刚才的图片会发现里面有两张图片。
IOS <wbr>本地化

(8)、在程序中取值按正常方法取值就行了。

 self.imageVIew.image = [UIImage imageNamed:@"1004.jpg"];

(9)、运行结果可下图

IOS <wbr>本地化     IOS <wbr>本地化

4.本地化其他文件

本地化其他文件和本地化图片第二种方法类似,先在Localization中添加语言,然后把对应版本拷贝到en.lproj和zh-Hans.lproj文件夹中,最后引用就行了。

洛阳亲友如相问,就说我在敲代码
原文地址:https://www.cnblogs.com/Ice-snowPride/p/4980932.html