2014-10-16 52 views
6

據我所知,iOS8現在支持區域本地化(在這種情況下我想支持pt-BR)。iOS8區域定位(例如pt-BR)?

http://www.ibabbleon.com/iOS-Language-Codes-ISO-639.html

我有這個問題,有一個全新的單一視圖的應用程序測試此,在Xcode我在PT相應地增加了PT和PT-BR語言到我的項目,並改變了文本.lproj和pt-BR.lproj目錄。

將我的設備設置爲pt-BR並運行後,顯示的文本始終爲pt,而不是pt-BR。

事實上日誌記錄NSLocale

返回的首選區域
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; 
NSLog(@"Locale = %@", language); 

僅返回「區域設置= PT」 ......

我失去了任何步驟或這是iOS8上的錯誤嗎?

感謝您的幫助...

回答

2

根據蘋果文檔IETF BCP 47應該返回。所以如果這是你的首選系統語言,你應該得到pt-BR。

如果你想要的僅僅是當前語言環境,我建議你使用:

[[NSLocale currentLocale] localeIdentifier] 

如果你希望你的應用程序運行時,支持的語言環境變化與autoupdatingCurrentLocale更換currentLocale。

編輯:區域設置不同於語言ID!我爲我的誤會道歉。反正「PT」是巴西葡萄牙語正確的語言ID:

...例如,使用PT作爲葡萄牙語言ID,因爲它是在巴西使用和PT-PT作爲葡萄牙語言ID爲它在葡萄牙使用。其他子菜單(位於列表底部)包含更多語言和方言。

來源:https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/LocalizingYourApp/LocalizingYourApp.html

+0

這輸出pt_US – Chris 2014-10-16 17:58:08

+0

我的語言絕對是葡萄牙語(巴西)在iOS的偏好。另外,我不太在意使用正確的語言來查詢NSLocale和更多的本地化文件(xib和字符串)...... – Chris 2014-10-16 17:59:49

+0

用正確的解決方案修改了我的答案。 – Shank 2014-10-18 23:46:32

2

出於某種原因,iOS8上使用PT葡萄牙巴西(而不是pt_BR表示)。當您選擇葡萄牙葡萄牙,本土化將是PT_PT

我已經刪除了國產化,並加入通用葡萄牙語(並與舊的.strings文件所取代)。

+2

它似乎是現在唯一的解決方案。 「pt_BR」不起作用,因爲葡萄牙語巴西的區域設置標識符返回「pt_US」。 – atxe 2015-07-03 07:58:58