我想顯示設備UI使用的當前語言。 我將使用什麼代碼? spa
我但願它做爲NSString
以徹底拼寫的格式顯示。 (不是@「 en_US」) code
編輯:對於那些繼續前進的人,這裏有大量有用的評論,由於答案隨着新的iOS版本的發展而發展。 排序
對於MonoTouch C#開發人員,請使用: 內存
NSLocale.PreferredLanguages.FirstOrDefault() ?? "en"
注意:我知道這是一個iOS問題,可是因爲我是MonoTouch開發人員,所以此頁面上的答案將我引向了正確的方向,我認爲我會分享結果。 開發
所選答案返回當前設備語言,但不返回應用程序中使用的實際語言。 若是您未在應用中提供用戶首選語言的本地化版本,則使用按用戶首選順序排序的第一個可用本地化版本。 文檔
要發現您的本地化語言中選擇的當前語言,請使用 get
[[NSBundle mainBundle] preferredLocalizations];
例: it
NSString *language = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];
迅速: io
let language = NSBundle.mainBundle().preferredLocalizations.first as NSString
我用這個 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
根據Apple 文檔
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults]; NSArray* languages = [defs objectForKey:@"AppleLanguages"]; NSString* preferredLang = [languages objectAtIndex:0];
爲了得到用戶設備當前的語言,請使用如下代碼對我有用。
NSString * myString = [[NSLocale preferredlanguage]objectAtIndex:0];