【评】iPhone应用中使用NSLocalizedString实现国际化



iPhone应用中使用NSLocalizedString实现国际化是本文要介绍的内容,不多说,直接进入话题。获取系统所支持的国际化信息在国际化之前,你可以在iphone中的”设置->通用->多语言环境->语言”中来查看你的iphone支持哪些语言,当然也可以写一段代码测试一下你的iphone都支持哪些语言.测试代码如下:

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];   
    NSArray *languages = [defaults objectForKey:@"AppleLanguages"];   
    NSLog(@"%@", languages);  

注:NSUserDefaults类用来取得用户人默认信息.

【评】一般默认只有英文版本,如果需要添加其他语言的支持。需进行如下设置,点击加号,选中简体中文。


一、在Xcode中建立多语言文档

1、在Resources分类下新建文档(右鍵/Add/New File…)

2、在模板对话框中选择Other,然后再选择Strings File

3、将文件保存名设置为Localizable.strings

4、在Localizable.strings 文件上按右键并选择 Get Info 【评】这句已经没有用了,就选中好了

5、点击信息界面的Make File Localizable,然后再将Tab标签切换到General

6、输入新的语言名称 zh 後按 Add,这时有English与zh两种语言,你还可以增加其它语言.【评】这句也有变化,应该是选中需要本地化的语种,可选的是根据前面设置的。


二、在源代码中使用NSLocalizedString来引用国际化文件


//括号里第一个参数是要显示的内容,与各Localizable.strings中的id对应   
//第二个是对第一个参数的注释,一般可以为空串   
[_alertView setTitle:NSLocalizedString(@"Submitted successfully",@"")]; 

【评】这边是NSLocalizedString的用法。

三、使用Terminal的genstrings命令进行生成资源文件

打开Terminal,然后cd到工程所在的目录,然后使用genstrings来生成自动从源代码中生成资源文件.

例如,项目的目录为:/user/project/test01,则命令如下:

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

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

【评】这边不能照搬,要根据你的工程文件的结构,像我写的代码就直接在工程目录下面了,没有组织一个class文件夹来放。而且等待本地化的工程文件名字默认也是en.lproj和zh-Hans.lproj,因此结合实际我用的命令行是:

genstrings -o zh-Hans.lproj  ./*.m
genstrings -o en.lproj  ./*.m


四、编辑各Localizable.strings文件

从第四步中得到了与代码对应的资源文件,最后我们需要对这些资源文件翻译成对应的语言就可以了.如在Localizable.strings(zh)中, 把等号后的文字进行编译成中文.

"Submitted successfully" = "提交成功"


【评】运行完之后,你会发现Localizable.strings中多了一些内容:

/* No comment provided by engineer. */
"age:" = "age:";

/* No comment provided by engineer. */
"country:" = "country:";

/* No comment provided by engineer. */
"name:" = "name:";
根据你的需求修改成本地化的版本:

/* No comment provided by engineer. */
"age:" = "年纪:";

/* No comment provided by engineer. */
"country:" = "国家:";

/* No comment provided by engineer. */
"name:" = "名字:";


重新编译整个工程后,就会在不同的 语言环境下得到相应的 语言显示. 【评】在模拟器里设置不同的语言,程序就会显示成响应的版本。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值