我正在對iPhone應用程序進行國際化 - 我需要根據用戶當前的語言環境對某些視圖進行編程更改。我要瘋了,因爲不管是什麼在iPhone模擬器或實際硬件的語言首選項是,locale
始終計算爲「en_US」:NSLocale currentLocale總是返回「en_US」而不是用戶當前的語言
NSString *locale = [[NSLocale currentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
瘋狂的事情是,應用程序的其餘部分按預期運行。從Localization.strings文件中選擇正確的字符串並在接口中使用,並使用所選語言環境的正確.xib文件。
我也曾嘗試以下,無果而具有相同的結果:
NSString *locale = [[NSLocale autoupdatingCurrentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
有一些簡單的我失蹤?可能有偏好還是導入?
我用來做:
由於達倫的答案表明,我正在尋找的偏好是不是NSLocale
,而它是在這裏:
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* languages = [userDefaults objectForKey:@"AppleLanguages"];
NSString* preferredLanguage = [languages objectAtIndex:0];
NSLog(@"preferredLanguage: %@", preferredLang);
彼得的答案似乎是更好的解決方案:
NSArray* preferredLanguages = [NSLocale preferredLanguages];
NSLog(@"preferredLanguages: %@", preferredLanguages);
@PeterHosey我也有類似的問題關於當前的語言,並嘗試了一切,但沒有人工作。所以傷心...你可以看看這個,http://stackoverflow.com/questions/26572115/nslocale-preferredlanguages-objectatindex0-always-return-en/26574075#26574075?謝謝! – S1U 2014-10-26 19:07:00
@ s1u Xcode 6.1中存在一個錯誤。檢查這個答案:http://stackoverflow.com/a/26641497/1085556 – 2014-11-14 12:43:21
@ s1u:幾件事情:(1)可以有多種首選語言;沒有單一的「當前語言」,和(2)關於你的(刪除的)答案,它返回當前語言環境(又名區域)的主要語言,而不是用戶的首選語言。 – 2014-11-16 19:14:48