Я участвую в процессах интернационализации приложения для 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);