详解iPhone应用程序 多语言支持操作

详解iPhone应用程序 多语言支持操作

iPhone应用程序 多语言支持操作是本文要介绍的内容,这里有几个概念的:多语言支持,就是一个程序支持几种语言的界面;本地化/国际化.就是把原有语言支持翻译成另外一种语言。

这里又推导出另外几个问题,

一、是让程序带几种语言文件支持

二、运行中如何切换界面

三、代码中取把对应的字符取出来?

首先我们看一下Iphone的语言设置。打开Settings-->International-->Language.可以在界面上切换语言.可以把当前语言界面切换不同语言。

应用程序是怎么做相应的切换呢?如果正好程序带了相应语言支持。则直接切换过去。如果没有相应的支持。则切算成默认语言。

还有一种情况,在iphone设为中文界面的情况,程序手动切换成英文。这又要怎么做?

一、iphone项目的语言文件

在iphone的xcode项目中,往往带好几个语言支持。

每一个语言支持的文字保存在 <语言类型>.lproj/Localizable.strings 当中。比如英文是

English.lproj/Localizable.strings 当中, 简体中文是 Zh_cn.lproj/Localizable.strings 当中

Localizable.strings 的格式有两种,一种是旧式是的,每一行都是形如下格式

  
  
  1. "_LocaleLanguage"="zh";
  2. "cancel"="取消";

另外一种是XML格式的plist文件

  
  
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEplistPUBLIC"-//AppleComputer//DTDPLIST1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plistversion="1.0">
  4. <dict>
  5. <key>button</key>
  6. <string>按键</string>
  7. </dict>
  8. </plist>

二、在XCode 操作strings文件.

在XCode 的操作比较详细是

http://www.skylarcantu.com/blog/2009/08/19/localization-your-iphone-os-applications-in-xcode/

在主菜单File-->New file 或项目窗口的右健中,选择Add New..

在other文件中,选择新建strings文件

新增文件可以放在任意目录,但是最好是按前面要写成 Zh_cn.lproj/Localizable.strings 的名字

在新增的文件手工增加翻译条目



新的语言再重复上述步骤即可。

三、在应用程序中使用国际化字符串

在程序中使用字符串的地方可以调用NSLocalizedString来取出对应语言的字符串

如果你的strings文件不是标准的Localizable.strings,假设叫my.strings 则可以用

NSLocalizedStringFromTable (@"button",@"my", nil);来取得字符串

比如我把标题换成国际化语言

  
  
  1. UIAlertView*alert=[[UIAlertViewalloc]initWithTitle:NSLocalizedString(@"title",nil)
  2. message:self.textField.text
  3. delegate:nilcancelButtonTitle:@"OK!"
  4. otherButtonTitles:nil];

四、在界面显示

在界面显示主要取决于两点。一个是当前iphone的显示语言,如果匹配自动调用相应的语言。



如果当前语言应用程序不支持,则会自动显示Info.plist中 Localization native development re指定的语言。

如果当前应用程序中自带的语言支持与当前不匹配。比如应用程序带了是法语,德语和意大利语.但当前iphone是西班牙语,这时应用程序如果随时指定语言,比哪显示法语。

如何在程序显示指定的语言?(待测试)

这里有一种解决方法。以下是一种实现设置当前语言的类Language.设置方法setLanguage。

initialize是取得当前语言

  
  
  1. @implementationLanguage
  2. staticNSBundle*bundle=nil;
  3. +(void)initialize{
  4. NSUserDefaults*defs=[NSUserDefaultsstandardUserDefaults];
  5. NSArray*languages=[defsobjectForKey:@"AppleLanguages"];
  6. NSString*current=[[languagesobjectAtIndex:0]retain];
  7. [selfsetLanguage:current];
  8. }
  9. /*
  10. examplecalls:
  11. [LanguagesetLanguage:@"it"];
  12. [LanguagesetLanguage:@"de"];
  13. */
  14. +(void)setLanguage:(NSString*)l{
  15. NSLog(@"preferredLang:%@",l);
  16. NSString*path=[[NSBundlemainBundle]pathForResource:lofType:@"lproj"];
  17. bundle=[[NSBundlebundleWithPath:path]retain];
  18. }
  19. +(NSString*)get:(NSString*)keyalter:(NSString*)alternate{
  20. return[bundlelocalizedStringForKey:keyvalue:alternatetable:nil];
  21. }
  22. @end

在程序中的类的调用

小结:iPhone应用程序 多语言支持操作的内容介绍完了,希望本文对你有所帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值