2011年3月15日 星期二

iPhone 給我多國語系檔(.lproj),其餘免談

這篇筆記的內容"並不是"探討 怎麼建立一個多國語系檔
而是記錄iPhone上各國語系縮寫,以及讀取上的一些問題
所以大家可以按上一頁啦XD

由於多國語系的關係,我們可能需要知道使用者目前的語系設定
取得方法如下:
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString* preferredLang = [languages objectAtIndex:0];
NSLog(@"LangCode: %@",preferredLang);

ISO-639的各國語言對應到iPhone上面的語言列表可以參考


但是,當我們用實機測試的時候一定會遇到窘境
嗄~suomi,dansk,hrvatski...
原來iPhone上的語言列表早就已經替換成該語言的文字了
這對一個"外國人"來說是一件挺痛苦的事情
參考一下 stackoverflow 的這篇文章吧!
ex: Swedish = svenska
Finnish = suomi
Danish = dansk
Croatian = hrvatski

事情還沒結束
看到沒,language code有pt, pt_PT
還有中文也是有分zh_CN, zh_TW
鬼打牆的情節緊接上演,
無論怎麼切換pt 與pt_PT,模擬器跟iPhone就是沒辦法切換
花了我好幾個小時的結論如下:
1. 如果語系檔的檔名設定有誤,iPhone預設值會是English
ex: ja.lproj誤設為jp.lproj

2. 如果語系相近,會以有相關的語系檔讀取為優先
ex: pt.lproj與pt_BR.lproj 無論設定是 português (Portugal)或是português
預設就是讀取pt.lproj

3. 如遇上述兩個問題,也確定已經更正好了
記得!!要先clean project 再重新編譯

可能還有人會對zh_CN, zh_TW,zh_Hans,zh_Hant
或是該用underline(_) 還是dash(-)符號有問題
可以參考另外一篇文章:
MacUknow

內容回應