iOS的國際化

作者: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:

  1. plist里弄兩個dic,一個en,一個ch的。如上面例子的話裏面key爲:”alertTitle” value分別爲”title”和”標題”

  2. 創建一個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];
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章