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);
내가 놓친 간단한 것이 있습니까? 선호 또는 수입?
내가했던 것 :
Darren의 답변에서 알 수 있듯이 내가 찾고있는 기본 설정은 NSLocale
에있는 것이 아니라 여기에 있습니다.
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* languages = [userDefaults objectForKey:@"AppleLanguages"];
NSString* preferredLanguage = [languages objectAtIndex:0];
NSLog(@"preferredLanguage: %@", preferredLang);
Peter의 대답이 더 나은 해결책 인 것 같습니다.
NSArray* preferredLanguages = [NSLocale preferredLanguages];
NSLog(@"preferredLanguages: %@", preferredLanguages);