2015-09-22 160 views
5

我的應用程序使用Localizable.strings文件和NSLocalizedString macro以意大利文和英文本地化本地化應用程序。我也啓用了base localization。在模擬器和裝有iOS 8的設備上一切正常,但在iOS 9上,應用程序始終是英文的,即使在iPhone設置中默認選擇意大利語言的設備上也是如此。 iOS 9是否改變了本地化的東西?ios 9 + Xcode 7

這裏的Xcode的截圖本地化設置
http://i.imgur.com/xc20yjj.png1

用於測試的設備和
http://i.imgur.com/QCjn52u.png

在此先感謝

+0

你有什麼建議,應該是什麼問題? 該應用程序今天上午被批准並從App Store下載,僅顯示英文版本的內容 – lorenzoliveto

+0

@lorenzoliveto您能展示兩件事:Xcode項目本地化的屏幕截圖以及您的測試的設備語言+區域設備設置爲? – wakachamo

+0

我添加了問題的截圖。 – lorenzoliveto

回答

8

解決, 「問題」 是關鍵info.plist文件中的「本地化本地開發區域」。它被設置到意大利,所以當應用程序運行在默認爲意大利語的設備上時,它顯示了字符串的基本本地化版本(英文版)。 將值更改爲美國解決了該問題。

+0

我遇到了同樣的問題。但是我把價值改變成'Unite States'並沒有幫助。我的第二語言是中國傳統。 –

+0

但是,如果我將iOS設備的「區域」設置更改爲「統一國家」,則可以在我的應用程序中看到中文。爲什麼「區域」設置很重要? –

+0

您的基本字符串文件是英文還是中文? – lorenzoliveto

1

我找到了解決方法。 此問題的根本原因是Apple在iOS 9中更改了「語言標識符」,請參閱this

由於NSLocalizedString()(及其變體)訪問NSUserDefaults中的"AppleLanguages"鍵以確定用戶對優選語言的設置。我強迫NSLocalizedString使用特定語言,一旦我發現其語言標識爲新格式,在舊版iOS中將其標記爲其舊語言標識符。換句話說,我做了一個映射關鍵值"AppleLanguages"

要做到這一點,請參考:How to force NSLocalizedString to use a specific language

我認爲蘋果在兼容性做了一個非常糟糕的工作!

+0

注意,我無法找到一個方法來添加本地化的資源與代碼‘ZH-TW’,我只能添加‘ZH’,‘ZH-漢特’或只有「zh-Hant-TW」。不知道它是否是蘋果的錯誤。 –

2

我有另一種解決方案,只需刪除info.plist中的'Localizations'鍵即可。 它適用於我的情況。

+0

這對我有用。 Project-Info-Localization和info.plist-本地化在我的情況下是不同的。 – Minsu