2012-06-08 131 views
5

我想獲取系統默認語言和系統語言環境。如何獲取可可中的系統語言環境和系統語言

我曾嘗試下面的代碼來獲得系統當前區域設置爲以下

NSLocale *locale; 
locale = [NSLocale systemLocale]; 

NSString * localLanguage = [locale objectForKey:NSLocaleIdentifier]; 
NSLog (@"Language : %@", localLanguage); 

NSLog(@"System locale Identifier %@",[locale localeIdentifier]); 

但沒有什麼是顯示與系統區域Identifier.If是currentlocale它給正確的result.Why系統區域設置沒有給出任何價值和如何獲得系統默認語言不是用戶首選的語言?請幫助

回答

4

默認NSLocaleIdentifier是故意@""表示沒有當前的選擇。根據蘋果公司的說法,systemLocale只是在用戶選擇的語言環境(currentLocale)中沒有實現的鍵的後備,並且由於它始終處於設置狀態,並且始終在用戶的控制之下,所以它很有意義。

如果您想要關注用戶的首選語言列表,您希望使用+ preferredLanguages,它會按照用戶喜歡的語言順序返回用戶喜歡的語言列表。這適用於OSX和iOS,並在選擇語言時爲系統提供適當的回退。

對於測試,您可以使用命令行開關-AppleLanguages,其值爲逗號分隔,括號包圍的數組(例如:(DE,FR,EN)),Xcode將模擬該用戶的首選語言列表。

由於用戶設置首選語言(至少在OSX中),操作系統將在爲用戶選擇本地化數據時跟隨該列表。一般來說,由於這個事實,做比使用宏更多的事情被認爲是不必要的。但是,如果您有需要本地化的非資源信息,則可以手動查看該值。

+0

謝謝您response.Do你有什麼想法,我怎樣才能得到系統語言。 – Akbar

+0

確實沒有一個適用於OS X的版本,全由用戶決定。你想用它做什麼?也許還有另一種機制,我可以指出你。 – gaige

+0

我的需求。是以用戶首選語言顯示文本,它是從後端服務獲取的,如果用戶沒有選擇特定的語言,那麼我需要以默認的系統語言顯示文本。這就是爲什麼我試圖找出我怎麼能獲取系統默認語言。請告訴我其他機制是什麼? – Akbar

8

您可以簡單地使用: NSString* language = [[NSLocale preferredLanguages] objectAtIndex:0];

+0

這是我可以使用的最佳解決方案,謝謝! – thibmaek