iOS 项目国际化

本文详细介绍如何为iOS应用程序实现多语言支持。包括创建本地化资源文件、设置不同语言下的程序名称及内容显示,以及如何利用NSLocalizedString函数进行文本本地化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你的iOS版本比较低,可以看这个  http://www.cnblogs.com/stoic/archive/2012/07/08/2581298.html
如果比较高的话,对iOS国际化,apple改变了一点,可以看这个: http://hi.baidu.com/myyuchong/item/821bb3dfa93babecb3f7779f
我对后者作了一个小总结:
为了简单,建一个单视图程序,命名为Test --> 找到Supporting Files文件夹然后 --> File --> New File (或Command+N)

iOS国际化 - liuxing8807 - liuxing8807的博客
并命名为Localizable(注意,此处不可以随便命名,一定要命名为Localizable),然后点中它,并点选右上角Organizer左边的一个按钮,出现它的属性,会发现localize...这个按钮,点击它然后直接点击localize, 然后:

iOS国际化 - liuxing8807 - liuxing8807的博客


注意把除InfoPlist.strings和Localizable.strings这两个选项其余的选项取消勾选:

iOS国际化 - liuxing8807 - liuxing8807的博客


好,配置好了现在,然后首先设置中文的程序名和英文的程序名,点InfoPlist.strings(English)输入CFBundleDisplayName = "China";   然后点InfoPlist.strings(Chinese)并输入CFBundleDisplayName = "中国"; 即可,这样当用户设置手机的语言之后,如果选择英文,程序名就是"China",如果选择中文,程序名就变成了"中国",设置手机语言这样搞:
Settings-->General-->International-->Language-->...
Settings-->General-->International-->Language-->...


程序名国际化了,下面讨论内容国际化:
iOS国际化 - liuxing8807 - liuxing8807的博客
点开Localizable.strings(English)并写入:    "myKey" = "中文!!";
点开Localizable.strings(Chinese)并写入:   "myKey" = "English!!";
在viewDidLoad里这样搞:
- (void)viewDidLoad
{
    [super viewDidLoad];
    UILabel *label = [[UILabel allocinitWithFrame:CGRectMake(1010110100)];
    label.text = NSLocalizedString(@"myKey"@"");
    [self.view addSubview:label];
    [label release];
}
运行程序,当在英文状态下时,label显示"English!!",当在中文状态下时label显示"中文",切换中英文可以通过Settings-->General-->International-->LanguageiOS国际化 - liuxing8807 - liuxing8807的博客做到。
 


以上用的是函数NSLocalizedString(key, comment)获取国际化文字,所以要把存放国际化文字的名字命名为Localizable,有另外一个函数:  NSLocalizedStringFromTable(key, tbl, comment) ,这个函数的第二个参数就是指定文件名,比如文件名是"myTextFile.strings", 那么 tbl这一栏就应该写 @"myTextFile", 而不是写成@"myTextFile.strings"



其他的再说点:
获得所支持的语言
NSUserDefaults *defaults = [ NSUserDefaults standardUserDefaults ];
// 取得 iPhone 支持的所有语言设置
NSArray *languages = [defaults objectForKey : @"AppleLanguages" ];
NSLog ( @"%@" , languages);
 

获取当前使用语言
NSArray *languages = [NSLocale preferredLanguages];
NSString *currentLanguage = [languages objectAtIndex:0];
NSLog ( @"%@" , currentLanguage);
打印结果:
en
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值