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

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

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

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

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

2、运行中如何切换界面

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

首先咱们看一下Iphone的语言设置。打开Settings-->International-->Language.能够在界面上切换语言.能够把当前语言界面切换不一样语言。iphone

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

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

1、iphone项目的语言文件测试

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

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

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

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

 
 
  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>

2、在XCode 操做strings文件.code

在XCode 的操做比较详细是

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

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

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

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

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



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

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

在程序中使用字符串的地方能够调用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];

4、在界面显示

在界面显示主要取决于两点。一个是当前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应用程序 多语言支持操做的内容介绍完了,但愿本文对你有所帮助!