这里有几个概念:
多语言支持,就是一个程序支持几种语言.
本地化/国际化,就是把原有语言支持翻译成另外一种语言
这里又推导出另外几个问题,
一。是让程序带几种语言文件支持
二。运行中如何切换界面
三。代码中如何把对应的字符取出来?
首先我们看一下Iphone的语言设置。打开Settings-->International-->Language.可以在界面上切换语言.可以把当前语言界面切换不同语言。
应用程序是怎么做相应的切换呢?如果正好程序带了相应语言支持。则直接切换过去。如果没有相应的支持。则切算成默认语言。
还有一种情况,在iphone设为中文界面的情况,程序手动切换成英文。这又要怎么做?
一.iphone项目的语言文件
-----------------------------------------------------------------
在iphone的xcode项目中,往往带好几个语言支持。
每一个语言支持的文字保存在<语言类型>.lproj/Localizable.strings当中。比如英文是
English.lproj/Localizable.strings 当中, 简体中文是Zh_cn.lproj/Localizable.strings当中
Localizable.strings的格式有两种,一种是旧式是的,每一行都是形如下格式
"_LocaleLanguage"= "zh";
"cancel" ="取消";
另外一种是XML格式的plist文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plistPUBLIC "-//Apple Computer//DTD PLIST1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>button</key> <string>按键</string> </dict> </plist> |
二.在XCode 操作strings文件.
在主菜单File-->New file 或项目窗口的右健中,选择AddNew..
在other文件中,选择新建strings文件
新增文件可以放在任意目录,但是最好是按前面要写成Zh_cn.lproj/Localizable.strings 的名字
新的语言再重复上述步骤即可。
三.在应用程序中使用国际化字符串
-----------------------------------------------------------------------------
在程序中使用字符串的地方可以调用NSLocalizedString来取出对应语言的字符串
如果你的strings文件不是标准的Localizable.strings,假设叫my.strings则可以用
NSLocalizedStringFromTable(@"button",@"my", nil);来取得字符串
比如:
UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:NSLocalizedString(@"title",nil) message:@"showmessage" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
|
四.在界面显示
------------------------------------------------
在界面显示主要取决于两点。一个是当前iphone的显示语言,如果匹配自动调用相应的语言。
简体中文语言环境:

英文语言环境:

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