L'anglais est partout, surtout dans le monde de l'informatique et du développement. C'est tellement vrai que lorsque l'on fait un développement sur xCode, le langage par défaut du projet est l'anglais, et on ne peut pas changer cela sans éditer le fichier project.pbxproj avec un autre éditeur que xCode !
La variable $(DEVELOPMENT_LANGUAGE) dans Xcode est une variable d’environnement définie par le projet lui-même. Elle représente la langue de développement (development language) du projet iOS/macOS.
Elle est définie dans le fichier project.pbxproj à l’intérieur du bundle .xcodeproj de votre projet. Cherchez la ligne developmentRegion = <langue>; (par exemple, developmentRegion = English; ou developmentRegion = fr; ). Cette valeur est exportée comme variable DEVELOPMENT_LANGUAGE lors de la compilation du target.
Car à quoi sert le "Default localization" ? À formater les dates par exemple. Faut-il dire "août 2026" ou "August 2026" ? C'est pas mal, mais ce n'est pas la localisation de l'appareil ! C'est bien dans une application monolingue, mais pas dans une application qui s'adapte à l'appareil.
Avant aujourd'hui (je n'avais pas fait attention et cru internet et les docs), je croyais que :
return [NSDateFormatter localizedStringFromDate:date
dateStyle:NSDateFormatterMediumStyle
timeStyle:NSDateFormatterNoStyle];
retournait la date formaté selon les réglages de l'appareil. Mais non ! C'est selon les réglages de info.plist et le "Default localization". Faire le même formatage en suivant les réglages de l'appareil est plus long:
NSLocale *ipadLocale = [NSLocale currentLocale];
NSString *languageCode = [NSLocale preferredLanguages][0];
// "fr", "en", etc.
NSString *regionCode = [ipadLocale objectForKey:NSLocaleCountryCode];
// "FR", "US", etc.
NSString *identifier = [NSString
stringWithFormat:@"%@_%@",languageCode,regionCode];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale localeWithLocaleIdentifier:identifier]];
formatter.dateStyle = NSDateFormatterMediumStyle;
formatter.timeStyle = NSDateFormatterNoStyle;
return [formatter stringFromDate:date];
Commentaires