Main Contents

[Objective-c]Internationalisation

avril 12, 2009

Nous allons voir aujourd’hui comment rendre son application disponible dans plusieurs langues. La localisation et l’internationalisation sont complémentaires, l’un permet d’afficher les dates et unités du pays alors que le second  affiche les textes dans la bonne langue.

I) Préparation

Dans notre exemple nous allons gérer 2 langues, le français et l’anglais. La première chose à faire est de créer les dossiers. Ouvrez votre projet dans le finder et créer en.lproj et fr.lproj. Ces dossiers contiendront les fichiers de langue qui se nomment strings ou par défaut Localizable.strings. Une fois créé, nous allons ajouter nos fichiers de langue. Menu New File – OS X – Other et choisissez Strings file. Nommez le Localizable.strings et ajoutez le dans le dossier fr.lprog, recommencez la manip pour le dossier en.lproj. Vous devriez avoir ceci.

localizationlocalization2

Xcode reconnait automatiquement que ce sont des fichiers de langue et affiche en et fr.

2) Localizable.strings

Passons maintenant aux fichiers de langue. Les traductions sont stockées grâce à des clefs, « clef » = « traduction ». Il suffit donc d’ajouter dans chacun des fichiers une traduction pour un mot.

// Pour le fichier fr
"BonjourKey" = "Bonjour"

//Pour le fichier en
"BonjourKey" = "Hello"

Pour récupérer les bonnes valeurs en fonction de la langue sélectionné par l’utilisateur il suffit d’utiliser la fonction NSLocalizedString.

//Exemple qui affichera la traduction dans la console
NSLog(@"Exemple de traduction: %@", NSLocalizedString(@"BonjourKey", @""));

Vous pouvez aussi récupérer la langue par défaut :


NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
NSString *currentLanguage = [languages objectAtIndex:0];
NSLog(@"Local : %@", [[NSLocale currentLocale] localeIdentifier]);
NSLog(@"Langue courante : %@", currentLanguage);

Ainsi il est facile de créer une application dans plusieurs langues qui détectera laquelle afficher.

Catégorie(s): Développement, Objective-C, Tutorial | Comments (2)

2 Comments