iOS 國際化

步驟一、在info中添加中英文支持:

圖1

步驟二紊服、創(chuàng)建資源文件


圖2

1.創(chuàng)建中英文資源文件(必須使用: Localizable.strings)
Localizable?勾選上中英文:


圖3
圖4

編寫資源文件:

中文:


圖5

英文:?


圖6

2.創(chuàng)建應用名稱顯示資源文件(名稱必需叫做:infoPlist.strings)?
圖7
圖8

還有一點要注意的是 工程Plist文件中的 Bundle display name 要設置為: ${PRODUCT_NAME}.

那么應用在顯示iPhone 桌面時 就一樣會根據(jù)設置的語言而顯示不同的語言了.

code:?

單獨建一個工具類GDLocalizableController萝挤,用來切換本地語言:

GDLocalizableController.h 文件

#import

@interface GDLocalizableController : NSObject

+(NSBundle *)bundle;//獲取當前資源文件

+(void)initUserLanguage;//初始化語言文件

+(NSString *)userLanguage;//獲取應用當前語言

+(void)setUserlanguage:(NSString *)language;//設置當前語言

@end

  GDLocalizableController.m文件

#import GDLocalizableController.h

 @implementation GDLocalizableController

static NSBundle *bundle = nil;

+ ( NSBundle * )bundle{

    return bundle;

}

+(void)initUserLanguage{

    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

    NSString *string = [def valueForKey:@userLanguage];

    if(string.length == 0){

        //獲取系統(tǒng)當前語言版本

        NSArray* languages = [def objectForKey:@AppleLanguages];

        NSString *current = [languages objectAtIndex:0];

        string = current;

        [def setValue:current forKey:@userLanguage];

        [def synchronize];//持久化,不加的話不會保存

    }

     //獲取文件路徑

    NSString *path = [[NSBundle mainBundle] pathForResource:string ofType:@lproj];

    bundle = [NSBundle bundleWithPath:path];//生成bundle

}

 +(NSString *)userLanguage{

    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

    NSString *language = [def valueForKey:@userLanguage];

    return language;

}

 +(void)setUserlanguage:(NSString *)language{    

    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

    //1.第一步改變bundle的值

    NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@lproj ];

    bundle = [NSBundle bundleWithPath:path];

    //2.持久化

    [def setValue:language forKey:@userLanguage];

    [def synchronize];

}

@end?
  1. 自定義一個宏方便處理:

// ----- 多語言設置

#define CHINESE @zh-Hans

#define ENGLISH @en

#define GDLocalizedString(key) [[GDLocalizableController bundle] localizedStringForKey:(key) value:@ table:nil]

6.使用:

[GDLocalizableController setUserlanguage:CHINESE];

NSLog(GDLocalizedString(@SUBMIT_BTN_TITLE));

[GDLocalizableController setUserlanguage:ENGLISH];

NSLog(GDLocalizedString(@SUBMIT_BTN_TITLE));

注意:?

iOS9需要注意的問題

iOS國際化問題:當前設備語言字符串返回有變化。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSArray *allLanguage = [defaults objectForKey:@"AppleLanguages"];

NSString *currentLanguage = [allLanguage objectAtIndex:0];

NSLog(@"The current language is : %@", currentLanguage);

iOS 9 之前:以上返回結果:語言字符串代碼责球。例如:"zh-Hans"

iOS 9以上返回結果:語言字符串代碼 + 地區(qū)代碼。例如:"zh-Hans-US"

備注:

1.請注意判斷當前語言類型拓劝,不要用以下形式的代碼了雏逾,不然在iOS9上就會遇到坑。
if ([currentLanguage isEqualToString:@"zh-Hans"])
可以使用:
if ([currentLanguage hasPrefix:@"zh-Hans"])
另外:對于中文郑临,語言有:

簡體中文:zh-Hans
  繁體中文:zh-Hant
  香港中文:zh-HK
  澳門中文:zh-MO
  臺灣中文:zh-TW
  新加坡中文:zh-SG

備注:以上iOS9 當前語言字符串返回結果:語言字符串代碼 + 地區(qū)代碼栖博。在某些情況下不是這樣,iOS開發(fā)培訓者本人手機型號:大陸版電信iPhone5S/A1533/16GB測試結果:zh-HK/zh-TW厢洞,在地區(qū)為"中國"仇让、"中國香港"、"中國臺灣"的時候躺翻,顯示的還是zh-HK/zh-TW丧叽,一旦切換到其它地區(qū),設備語言會自動的切換到中文繁體公你。請開發(fā)人員注意中文的問題踊淳!

?相關博客:http://www.cocoachina.com/ios/20151120/14258.html

?

?

?

?

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市陕靠,隨后出現(xiàn)的幾起案子迂尝,更是在濱河造成了極大的恐慌,老刑警劉巖懦傍,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芦劣,居然都是意外死亡粗俱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門虚吟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寸认,“玉大人签财,你說我怎么就攤上這事∑” “怎么了唱蒸?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長灸叼。 經(jīng)常有香客問我神汹,道長,這世上最難降的妖魔是什么古今? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任屁魏,我火速辦了婚禮,結果婚禮上捉腥,老公的妹妹穿的比我還像新娘氓拼。我一直安慰自己,他們只是感情好抵碟,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布桃漾。 她就那樣靜靜地躺著,像睡著了一般拟逮。 火紅的嫁衣襯著肌膚如雪撬统。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天唱歧,我揣著相機與錄音宪摧,去河邊找鬼。 笑死颅崩,一個胖子當著我的面吹牛几于,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沿后,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沿彭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了尖滚?” 一聲冷哼從身側響起喉刘,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎漆弄,沒想到半個月后睦裳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡撼唾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年廉邑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蛛蒙,死狀恐怖糙箍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情牵祟,我是刑警寧澤深夯,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站诺苹,受9級特大地震影響咕晋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜筝尾,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一捡需、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧筹淫,春花似錦站辉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至摧阅,卻和暖如春汰蓉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棒卷。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工顾孽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人比规。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓若厚,卻偏偏與公主長得像成畦,于是被迫代替她去往敵國和親征堪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 之前公司的app可能要在島國和東南亞地區(qū)使用系宜,所以最合理的方法就是--國際化灾常。 寫這篇文章也是為一個妹子寫的(咦~...
    倫敦鄉(xiāng)下的小作家閱讀 801評論 4 4
  • iOS國際化簡單操作 國際化后的App可以根據(jù)手機當前系統(tǒng)語言來切換不同的語言來適應不同的語言使用人群, 所以iO...
    zhouyuhan閱讀 874評論 2 7
  • ** 原文發(fā)表在:https://www.xiaolei0808.com/2016/04/24/Localized...
    金小白先生閱讀 17,561評論 16 90
  • Demo同步更新到Swift2.3本文地址: http://mokai.me/iOS-i18n.html 在真正...
    _GKK_閱讀 5,824評論 13 55
  • 與你們相遇霎冯,太幸運 我一直在醞釀,我要怎樣提筆寫下這篇文章钞瀑,要怎樣寫得情深意切讀來催人淚下沈撞,事實上我特別害怕到最后...
    濤娃濤閱讀 272評論 0 0