在iOS中獲取當前設備語言?

我想顯示設備UI使用的當前語言。 我將使用什麼代碼? spa

我但願它做爲NSString以徹底拼寫的格式顯示。 (不是@「 en_US」) code

編輯:對於那些繼續前進的人,這裏有大量有用的評論,由於答案隨着新的iOS版本的發展而發展。 排序


#1樓

對於MonoTouch C#開發人員,請使用: 內存

NSLocale.PreferredLanguages.FirstOrDefault() ?? "en"

注意:我知道這是一個iOS問題,可是因爲我是MonoTouch開發人員,所以此頁面上的答案將我引向了正確的方向,我認爲我會分享結果。 開發


#2樓

所選答案返回當前設備語言,但不返回應用程序中使用的實際語言。 若是您未在應用中提供用戶首選語言的本地化版本,則使用按用戶首選順序排序的第一個可用本地化版本。 文檔

要發現您的本地化語言中選擇的當前語言,請使用 get

[[NSBundle mainBundle] preferredLocalizations];

例: it

NSString *language = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];

迅速: io

let language = NSBundle.mainBundle().preferredLocalizations.first as NSString

#3樓

我用這個 object

NSArray *arr = [NSLocale preferredLanguages];
for (NSString *lan in arr) {
    NSLog(@"%@: %@ %@",lan, [NSLocale canonicalLanguageIdentifierFromString:lan], [[[NSLocale alloc] initWithLocaleIdentifier:lan] displayNameForKey:NSLocaleIdentifier value:lan]);
}

忽略內存泄漏。

結果是

2013-03-02 20:01:57.457 xx[12334:907] zh-Hans: zh-Hans 中文(簡體中文)
2013-03-02 20:01:57.460 xx[12334:907] en: en English
2013-03-02 20:01:57.462 xx[12334:907] ja: ja 日本語
2013-03-02 20:01:57.465 xx[12334:907] fr: fr français
2013-03-02 20:01:57.468 xx[12334:907] de: de Deutsch
2013-03-02 20:01:57.472 xx[12334:907] nl: nl Nederlands
2013-03-02 20:01:57.477 xx[12334:907] it: it italiano
2013-03-02 20:01:57.481 xx[12334:907] es: es español

#4樓

根據Apple 文檔

NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString* preferredLang = [languages objectAtIndex:0];

#5樓

爲了得到用戶設備當前的語言,請使用如下代碼對我有用。

NSString * myString = [[NSLocale preferredlanguage]objectAtIndex:0];
相關文章
相關標籤/搜索