Jestem w procesie internacjonalizacji aplikacji na iPhone'a - Muszę wprowadzić zmiany programistyczne do niektórych widoków na podstawie bieżących ustawień regionalnych użytkownika. Idę orzechy, ponieważ bez względu na preferowany język na symulatorze iPhone lub rzeczywistego sprzętu są locale
zawsze ocenia na „pl”:NSLocale currentLocale zawsze zwraca "en_US", a nie bieżący język użytkownika.
NSString *locale = [[NSLocale currentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
szaloną rzeczą jest to, że reszta aplikacji zachowuje się zgodnie z oczekiwaniami. Poprawne ciągi są wybierane z pliku Localization.strings i używane w interfejsie, a używane są poprawne pliki .xib dla wybranych ustawień narodowych.
Próbowałem również następujące, bezskutecznie iz tym samym skutkiem:
NSString *locale = [[NSLocale autoupdatingCurrentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
Czy istnieje coś prostego mi brakuje? Może preferencja czy import?
Co robiłem:
Jako odpowiedź Darrena sugeruje, preferencja szukam nie jest w NSLocale
, raczej to jest tutaj:
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* languages = [userDefaults objectForKey:@"AppleLanguages"];
NSString* preferredLanguage = [languages objectAtIndex:0];
NSLog(@"preferredLanguage: %@", preferredLang);
odpowiedź Piotra wydaje się być lepszym rozwiązaniem:
NSArray* preferredLanguages = [NSLocale preferredLanguages];
NSLog(@"preferredLanguages: %@", preferredLanguages);
@PeterHosey Mam również podobny problem dotyczący obecnego języka i wypróbowałem wszystko, ale żaden z nich nie działał. Tak smutno ... Mógłbyś rzucić okiem na to, http://stackoverflow.com/questions/26572115/nslocale-preferredlanguages-objectatindex0-always-return-en/26574075#26574075? Dzięki! – S1U
@ s1u W Xcode 6.1 występuje błąd. Sprawdź tę odpowiedź: http://stackoverflow.com/a/26641497/1085556 –
@ s1u: Kilka rzeczy: (1) Istnieje wiele preferowanych języków; nie ma jednego "aktualnego języka" i (2) dotyczącego twojej (usuniętej) odpowiedzi, która zwraca dominujący język bieżących ustawień narodowych (region a.k.a.), * nie * preferowanych języków użytkownika. –