作者:Love@YR
鏈接:http://blog.csdn.net/jingqiu880905/article/details/52193039
請尊重原創,謝謝!
應用程序名稱:
1. Project-Info-Localizations那邊加語言
2. 新建InfoPlist.strings文件
3. 點擊此文件,右方Localization裏選擇語言
4. 生成多個InfoPlist.strings,寫上”CFBundleDisplayName” =”myProgram”; 還有”CFBundleDisplayName” =”我的應用名稱”; 設置工程名字(注意加引號),不然默認就是你的工程名字
Application has localized display name:YES
字符串:
創建Localizable.strings文件
分別在strings文件裏:”alertTitle” = “title”;
“alertTitle” = “標題”;
用的時候:NSLocalizedString(@”alertTitle”, @”這是一句註解,根據情況寫”)
圖片:
一張圖片,右邊file inspector那裏localization,生成幾張圖,替換掉要替換的,文件名不變即可。
xib, stroyboard等資源文件一樣的做法。
想國際化icon圖標,不行。
不更改系統的設置,不重啓app,在app裏做個設置語言的切換,切換完了就讓頁面重新load:
plist里弄兩個dic,一個en,一個ch的。如上面例子的話裏面key爲:”alertTitle” value分別爲”title”和”標題”
創建一個i18n類(i18n是internationalization的簡寫),這個類的實現:
@implementation i18n
+ (NSString *)getI18nStringWithKey:(NSString *)theKey andLanguageCode:(NSString*)theLanguageCode {
NSString *returnStr = [NSString string];
NSString *path = [[NSBundle mainBundle] pathForResource:@"i18n" ofType:@"plist"];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
if ([theLanguageCode isEqualToString:kEnglishLanuageCode])
{
returnStr = [(NSDictionary *)[dict objectForKey:@"en"] objectForKey:theKey];
}
else
returnStr = [(NSDictionary *)[dict objectForKey:@"ch"] objectForKey:theKey];
return returnStr;
}
@end
而在設置語言的時候設置成一個單例。
用的時候就:
if ([[[Language sharedInstance] getCurrentLanguageCode] isEqualToString:kEnglishLanuageCode]) {
self.title = [NSString stringWithFormat:@"%@ to %@",self.fromStation,self.endStation];
}else{
self.title = [NSString stringWithFormat:@"%@ 到 %@",self.fromStation,self.endStation];
}