iOS国际化

http://liuxing8807.blog.163.com/blog/static/97035305201347104854309/

iOS国际化  

 |字号 订阅

如果你的iOS版本比较低,可以看这个  http://www.cnblogs.com/stoic/archive/2012/07/08/2581298.htm
如果比较高的话,对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   alloc initWithFrame : CGRectMake ( 10 10 110 100 )];
    label. text  =  NSLocalizedString ( @"myKey" @"" );
    [ self . view   addSubview :label];
     [label  release ];
}
运行程序,当在英文状态下时,label显示"English!!",当在中文状态下时label显示"中文",切换中英文可以通过Settings-->General-->International-->Language iOS国际化 - liuxing8807 - liuxing8807的博客做到。
 


以上用的是函数NSLocalizedString(key, comment)获取国际化文字,所以要把存放国际化文字的名字命名为Localizable,有另外一个函数:  NSLocalizedStringFromTable(key, tbl, comment) ,这个函数的第二个参数就是指定文件名。



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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值