2010-12-04 32 views
1

我正在將我的應用程序本地化爲丹麥。我將Localizable.Strings和XIB翻譯成丹麥語。NSLocalizedString()基於用戶的語言或其區域設置?

在iPhone上,用戶可以

  1. 設置「區域格式」爲「丹麥」 但保持語言「英語」
  2. 的「區域格式」設置爲任何講英語的國家,但保持 語言「丹麥語」
  3. 的「區域格式」設置爲「丹麥」和語言「丹麥語」

我的問題是:對於上述任何設置應當該應用程序會顯示'丹麥'版本(對於我的應用程序來說,這意味着用戶界面中的所有文本以及數據庫都是丹麥文版本),還是隻有當用戶將語言設置爲'丹斯克'時纔會顯示'丹麥語'版本?

回答

3

這是一個很好的問題。

在蘋果看來,真正的問題是,他們這樣做,NSLocalizedString傾向於支持「區域格式」還是「語言」設置?

我從來沒有找到明確的答案,我只是讓NSLocalizedString決定。

(純FWIW,我認爲按照「語言」設置。)

有可能下面的代碼片段可以幫助你。

// to ("usually") get the preferred language FROM THE SET WHICH we supplied in bundle 
// [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0] 

// to ("often") get the preferred language REGARDLESS OF what we supplied 
// [ [NSBundle preferredLocalizationsFromArray:[NSLocale ISOCountryCodes]] objectAtIndex:0] 

// to ("fairly reliably") get the user's chosen language setting... 
// [ [NSLocale preferredLanguages] objectAtIndex:0] 

它可能沒有幫助,但我希望它有幫助。

+0

感謝您的回覆。 – pm08 2010-12-04 21:22:21

2

Cocoa對語言和語言環境的處理方式不同,因爲它們是獨立的概念。 NSLocalizedString()將遵循操作系統的當前語言設置,其中日期,時間和數字等內容受語言環境設置的影響。

爲什麼語言環境分別從語言處理可以在Locales Programming Guide發現:

當顯示數據,將其 應根據用戶的本地 國家,地區的 約定來格式化用戶,或文化。 相反,當用戶輸入數據時,他們可能會根據他們自己的 海關或偏好設置。區域設置對象 用於提供本地化演示文稿 或解釋數據所需的信息 。此 信息可包含十進制 分隔符,日期格式和 單位的測量值,以及語言和 區域信息。

例如,通過在 美國「76年7月4日」會議代表 獨立宣言的 二百年。然而,在英國,它代表「1976年4月 」的第7位。在泰國使用 泰國傳統日曆,它可能是 代表「2519年4月7日」;並在 法國它代表「7 avril 1976」。 舉一個更微妙的例子,在 美國「12.125」代表 十進制數十二八八, 而在德國它代表 一千二百一千和 二十五。

在給那裏的例子,你可能誰喜歡使用英語作爲主要語言,但誰住在德國,用於逗號作爲小數點分隔符,而不是一個時期的用戶。

Internationalization Programming Topics指南對所涉及的所有問題以及如何處理這些問題進行了長時間的討論。

相關問題