私はiPhoneアプリを国際化する過程にあります-ユーザーの現在のロケールに基づいて、特定のビューにプログラムによる変更を加える必要があります。iPhoneシミュレーターや実際のハードウェアの言語設定に関係なく、locale
常に「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);