iOS多語言的實現(xiàn)

一者冤、說明

多語言一般為了實現(xiàn)下面兩個目標:

  1. App展示的語言為目標客戶的第一語言惜互,如繁體中文如暖、英語
  2. 在其它國家瘾英,默認展示語言為特定語言,如:英語

二证舟、實現(xiàn)步驟

注:此例實現(xiàn)的語言有:繁體中文硕旗、英語,當iPhone設置的語言為其它語言時女责,默認展示英語

  1. Xcode 添加相應語言

    Xcode設置

  2. 選擇目標語言后漆枚,彈框選擇finish,最終如下:

    語言選擇結果

  1. 設置不同語言下的應用名稱
    3.1) 新建用來展示應用名稱的多語言文件Strings File
    string 文件
  • 命名為InfoPlist
  • 選中此文件抵知,在Xcode右邊的File inspector 點擊Localize
    Localize 按鈕

3.2) 選擇繁體中文墙基,點擊Localize

繁體中文

  • 再單擊此InfoPlist.strings文件,選擇Base刷喜、English残制、Chinese(Traditional)
    選擇多語言

這時候,InfoPlist.strings文件就多了下拉箭頭掖疮,打開后發(fā)現(xiàn)有多個文件初茶,如上圖

  • InfoPlist.strings(English) 當iPhone設置語言為英語時,App名稱為此文件中配置的名稱
  • InfoPlist.strings(Chinese(Traditional))當iPhone設置語言為繁體中文時浊闪,App名稱為此文件中配置的名稱
  • InfoPlist.strings(Base)當iPhone設置語言為其它語言時恼布,App名稱為此文件中配置的名稱
  • 配置不同語言下的App名稱。因為當iPhone設置語言為其它語言時搁宾,我們展示的名稱為英語折汞,所以InfoPlist.strings(Base) 的內容與 InfoPlist.strings(English) 內容相同,則3個文件中的內容分別為:
CFBundleDisplayName = "Space App";
CFBundleDisplayName = "國際化應用";
  1. 設置不同語言下猛铅,NSString的取值
  • 同上字支,新建Strings File文件,此處取名為:Localizable.strings
    注:此處.string的文件名稱可以修改,對應的取值方法不同堕伪,下面有說明

  • 同上揖庄,選擇此文件的Base、English欠雌、Chinese Traditional蹄梢,
    最后生成文件如下:


    Localizable.strings文件
  • 因為Base 與 English 中配置相同,Base 文件便忽略富俄,不再說明禁炒。

  • 如我們配置facebook登錄的NSString,

Localizable.strings(English)

"facebook_login" = "Facebook Login";

Localizable.strings(Chinese(Traditional)):

"facebook_login" = "Facebook登錄";

由上我們可以看到命名規(guī)則:

  • 形式:key = value
  • key霍比、value 需要用 雙引號 包裝起來
  • 沒有@
  • 行尾有分號 ;

4.2) 調用方法:

NSLocalizedString(@"facebook_login", nil)

第二個值comment一般傳nil即可幕袱。此官方宏很簡單,看官方解釋即會使用

  • 如果上面命名此文件為其它名稱悠瞬,需要使用下面官方宏來獲取相應語言的字符串:
NSLocalizedStringFromTable(key, tbl, comment)

如果是在framework中们豌,實現(xiàn)的多語言。需要將.string 文件打包在bundle中浅妆,用官方宏NSLocalizedStringFromTableInBundle來獲取望迎,假設此bundle名稱為YHSDK.bundle

    NSString *mainBundlePath = [[NSBundle mainBundle] resourcePath];
    NSString *languageBundlePath = [mainBundlePath stringByAppendingPathComponent:@"YHSDK.bundle"];
    NSBundle *targetBundlePath = nil;
    targetBundlePath = [NSBundle bundleWithPath:languageBundlePath];
//    if ([[NSFileManager defaultManager] fileExistsAtPath:languageBundlePath]) {
//          NSLog(@"targetBundlePath:%@ 地址不存在", targetBundlePath);
//    }

    NSString *string = NSLocalizedStringFromTableInBundle(key, nil, targetBundlePath, nil);

三凌外、其它注意事項

有時候iPhone設置成其它語言時辩尊,如法語,App展示的語言不是英語康辑,而是繁體中文摄欲,是因為iPhone的設置導致的,將偏好的語言順序中將繁體中文刪除或調整到英文之后即可:

偏好的語言順序

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末晾捏,一起剝皮案震驚了整個濱河市蒿涎,隨后出現(xiàn)的幾起案子哀托,更是在濱河造成了極大的恐慌惦辛,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仓手,死亡現(xiàn)場離奇詭異胖齐,居然都是意外死亡,警方通過查閱死者的電腦和手機嗽冒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門呀伙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人添坊,你說我怎么就攤上這事剿另。” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵雨女,是天一觀的道長谚攒。 經(jīng)常有香客問我,道長氛堕,這世上最難降的妖魔是什么馏臭? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮讼稚,結果婚禮上括儒,老公的妹妹穿的比我還像新娘。我一直安慰自己锐想,他們只是感情好帮寻,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赠摇,像睡著了一般规婆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蝉稳,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天抒蚜,我揣著相機與錄音,去河邊找鬼耘戚。 笑死嗡髓,一個胖子當著我的面吹牛,可吹牛的內容都是我干的收津。 我是一名探鬼主播饿这,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼撞秋!你這毒婦竟也來了长捧?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤吻贿,失蹤者是張志新(化名)和其女友劉穎串结,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舅列,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡肌割,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了帐要。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片把敞。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖榨惠,靈堂內的尸體忽然破棺而出奋早,到底是詐尸還是另有隱情盛霎,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布耽装,位于F島的核電站摩渺,受9級特大地震影響,放射性物質發(fā)生泄漏剂邮。R本人自食惡果不足惜摇幻,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挥萌。 院中可真熱鬧绰姻,春花似錦、人聲如沸引瀑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽憨栽。三九已至帜矾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屑柔,已是汗流浹背屡萤。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掸宛,地道東北人死陆。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像唧瘾,于是被迫代替她去往敵國和親措译。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容

  • 福州饰序。有笑有哭有领虹。感情蠻復雜的。
    lin嘎嘣閱讀 104評論 0 0