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

  1. Pierre (5 comments) mai 3, 2009 @ 0 h 25 min

    Je suis vraiment débutant en Objectiv-C etc..
    Bref, le fait est que j’ai moi ça marche pas.. J’ai mon projet, et comme le dossier par défaut c’était « English », j’ai ajouté avec « Français » au lieu de fr.. Et ça ne marche pas.. j’ai essayé avec « French » et « fr » mais ça ne marche pas non plus.. Et voici le petit bout de code..:
    NSString *debug_string = NSLocalizedString(@ »Searching for result. », @ » »);

    Avec bien « Searching for result. » comme clef dans les 2 fichiers..

    En tout cas merci, ton site m’aide beaucoup (vivement la suite avec, je l’espère, l’internationalisation des interfaces graphiques.. je suppose que c’est pas tellement différent, mais mes essais ont été des echecs..).

  2. kraft (36 comments) mai 3, 2009 @ 14 h 58 min

    Es tu sur d’avoir bien crée un projet iPhone? Un dossier English me fait penser que c’est une application OSX

Leave a comment