如果你的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)
并命名为Localizable(注意,此处不可以随便命名,一定要命名为Localizable),然后 点中它,并点选右上角Organizer左边的一个按钮,出现它的属性,会发现localize...这个按钮,点击它然后直接点击localize, 然后:
注意把除InfoPlist.strings和Localizable.strings这两个选项其余的选项取消勾选:
好,配置好了现在,然后首先设置中文的程序名和英文的程序名,点InfoPlist.strings(English)输入 CFBundleDisplayName = "China" ; 然后点InfoPlist.strings(Chinese)并输入 CFBundleDisplayName = " 中国 " ; 即可,这样当用户设置手机的语言之后,如果选择英文,程序名就是"China",如果选择中文,程序名就变成了"中国",设置手机语言这样搞:
Settings-->General-->International-->Language-->...
Settings-->General-->International-->Language-->...
程序名国际化了,下面讨论内容国际化:
点开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 做到。
以上用的是函数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];
如果比较高的话,对iOS国际化,apple改变了一点,可以看这个: http://hi.baidu.com/myyuchong/item/821bb3dfa93babecb3f7779f
我对后者作了一个小总结:
为了简单,建一个单视图程序,命名为Test --> 找到Supporting Files文件夹然后 --> File --> New File (或Command+N)
并命名为Localizable(注意,此处不可以随便命名,一定要命名为Localizable),然后 点中它,并点选右上角Organizer左边的一个按钮,出现它的属性,会发现localize...这个按钮,点击它然后直接点击localize, 然后:
注意把除InfoPlist.strings和Localizable.strings这两个选项其余的选项取消勾选:
好,配置好了现在,然后首先设置中文的程序名和英文的程序名,点InfoPlist.strings(English)输入 CFBundleDisplayName = "China" ; 然后点InfoPlist.strings(Chinese)并输入 CFBundleDisplayName = " 中国 " ; 即可,这样当用户设置手机的语言之后,如果选择英文,程序名就是"China",如果选择中文,程序名就变成了"中国",设置手机语言这样搞:
Settings-->General-->International-->Language-->...
Settings-->General-->International-->Language-->...
程序名国际化了,下面讨论内容国际化:
点开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 做到。
以上用的是函数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