iPhone 的国际化

本文详细介绍如何在iPhone项目中实现国际化,包括使用多语言支持、创建Localizable.strings文件、利用NSLocalizedString函数获取国际化字符串等步骤。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

在iPhone项目中如何才能国际化?难道同一个项目,非要写一个英文版的源代码,再写一个中文版的源代码?

其实大可不必。我们可以使用iPhone的多语言支持来实现项目的本地(国际)化。

1、新建Windows-baseApplication。打开main.m文件,在main函数中增加代码如下:

//取得用户默认信息

NSUserDefaults*defaults = [NSUserDefaults standardUserDefaults];

//取得iPhone支持的所有语言设置

NSArray *languages = [defaults objectForKey:@"AppleLanguages"];

NSLog(@"%@",languages);

   

运行程序,从console中输出如下内容:

"zh-Hans",

   en,

   fr,

   de,

"zh-Hant",

……

可以看到,iPhone设备上支持的所有语言,有英、法、德,还有两个”zh”开头的语言(简体/繁体)。我们知道,以”zh”开头的就是中文。

2、在Resources上右键,AddàNew File,文件类型选择Resource->Strings File,文件名为Localizable.strings。在该文件上使用getInfo命令,在如下界面中点击Make File Localizable按钮:

 

然后,你去Finder中查看工程目录,会发现多了一个English.lproj的目录,其下有一个Localizable.strings文件(不过其中的内容是空的)。

再次打开getInfo窗口,显示如下界面:

 

可以看见Localizations列表中只有一个语言English,我们需要点击Add Localization 按钮,增加中文 zh_CN

 

这时,你再去Finder中查看工程目录,发现又多了一个zh_CN.lproj的目录,其下也有一个Localizable.strings文件(内容也是空的)。

同时,在Target下的Copy Bundle Resources目录下多出两个不同语言版本的Localizabel.strings文件(一个English,一个zh_CN):

 

3、打开MainWindow.xib,拖一个UILablewindow中。

4、打开AppDelegate.h文件,在其中申明UILable变量并增加一个IBOutlet

UILabel* label;

……

@property (nonatomic,retain)IBOutlet UILabel* label;

5、打开AppDelegate.m文件,

@synthesize window,label;

(BOOL)applicationv:applicationdidFinishLaunchingWithOptionsv:方法中增加代码:

//使用NSLocalizedString函数根据iPhone的多语言设置获取国际化的字符串

label.text=NSLocalizedString(@"LocalizableTest",@"");

6、回到IB,将UILable控件和IBOutlet变量label进行连接:

 

7、打开终端程序,进入工程目录,运行命令:

genstrings -oEnglish.lproj ./classes/*.m

你会发现English.lproj目录下的那个Localizable.strings文件中增加了一行代码:

"Localizable Test" = "Localizable Test";

再运行命令:

genstrings -o zh_CN.lproj./classes/*.m

同样, zh_CN.lproj目录下的那个Localizable.strings文件中也会增加一行代码:

"Localizable Test" = "Localizable Test";

打开zh_CN.lproj目录下的Localizable.strings(双击),修改为

"Localizable Test" = "本地化测试";

这样,每当源代码有改变后,我们都需要用genstrings命令重新生成Localizable.strings文件。但是,每次重新生成后,原来的编辑(翻译)结果又不见了,我们又必须重头翻译。这是个很大的麻烦,建议以后每次genstrings之前把文件进行备份,减少重复工作。

8、运行程序,效果如下(如果模拟器的多语言设置为简体中文):

当你把多语言设置改为English,则标签中的文本显示为英文了。

 

 

 

 

 

           

给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow
这里写图片描述
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值