Je suis en train d'internationaliser une application iPhone - je dois modifier par programme certaines vues en fonction de la locale actuelle de l'utilisateur. Je deviens fou parce que peu importe la préférence linguistique du simulateur iPhone ou du matériel réel, locale
donne toujours la valeur "en_US" :
NSString *locale = [[NSLocale currentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
Ce qui est fou, c'est que le reste de l'application se comporte comme prévu. Les chaînes correctes sont sélectionnées dans le fichier Localization.strings et utilisées dans l'interface, et les fichiers .xib corrects pour la locale sélectionnée sont utilisés.
J'ai également essayé ce qui suit, sans succès et avec le même résultat :
NSString *locale = [[NSLocale autoupdatingCurrentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
Y a-t-il quelque chose de simple qui m'échappe ? Une préférence ou une importation peut-être ?
Ce que je faisais avant :
Comme le suggère la réponse de Darren, la préférence que je recherche n'est pas dans la section NSLocale
mais c'est plutôt ici :
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* languages = [userDefaults objectForKey:@"AppleLanguages"];
NSString* preferredLanguage = [languages objectAtIndex:0];
NSLog(@"preferredLanguage: %@", preferredLang);
La réponse de Peter semble être une meilleure solution :
NSArray* preferredLanguages = [NSLocale preferredLanguages];
NSLog(@"preferredLanguages: %@", preferredLanguages);