Sono nei processi di internazionalizzazione di un'app per iPhone - Devo apportare modifiche programmatiche a determinate visualizzazioni in base a quali sono le impostazioni locali dell'utente. Sto andando noci perché non importa ciò che la preferenza della lingua sul simulatore iPhone o hardware reale sono, locale
restituisce sempre "en_US":NSLocale currentLocale restituisce sempre "en_US" non la lingua corrente dell'utente
NSString *locale = [[NSLocale currentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
La cosa pazzesca è che il resto dell'applicazione si comporta come previsto. Le stringhe corrette vengono selezionate dal file Localization.strings e utilizzate nell'interfaccia e vengono utilizzati i file .xib corretti per le impostazioni locali selezionate.
Ho anche provato quanto segue, senza alcun risultato e con lo stesso risultato:
NSString *locale = [[NSLocale autoupdatingCurrentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
C'è qualcosa di semplice che mi manca? Una preferenza o un'importazione forse?
Quello che ho usato per fare:
Come risposta di Darren suggerisce, la preferenza che sto cercando non è in NSLocale
, anzi è qui:
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* languages = [userDefaults objectForKey:@"AppleLanguages"];
NSString* preferredLanguage = [languages objectAtIndex:0];
NSLog(@"preferredLanguage: %@", preferredLang);
risposta di Pietro sembra essere una soluzione migliore:
NSArray* preferredLanguages = [NSLocale preferredLanguages];
NSLog(@"preferredLanguages: %@", preferredLanguages);
@PeterHosey Inoltre, ho riscontrato problemi simili riguardo al linguaggio corrente e ho provato tutto, ma nessuno di essi ha funzionato. Così triste ... Puoi dare un'occhiata a questo, http://stackoverflow.com/questions/26572115/nslocale-preferredlanguages-objectatindex0-always-return-en/26574075#26574075? Grazie! – S1U
@ s1u C'è un bug in Xcode 6.1. Controlla questa risposta: http://stackoverflow.com/a/26641497/1085556 –
@ s1u: Coppia di cose: (1) Possono esserci più lingue preferite; non esiste una sola "lingua corrente" e (2) riguardo alla tua risposta (cancellata), che restituisce la lingua dominante della locale corrente (a.k.a. regione), * non * le lingue preferite dell'utente. –