2011-01-03 2 views
1

J'ai besoin de localiser mon application, et j'ai besoin que le traducteur ait un accès facile aux fichiers dont il a besoin pour traduire. Je vois que les fichiers d'interface (les .xib s et les chaînes à l'intérieur d'eux) sont divisés en langues.Localisation dans Cocoa

La solution serait de réécrire manuellement tous les .xib s? Et si certaines chaînes sont affichées par programme dans l'application? Peut-être que j'ai besoin de quelque chose comme un paramètre global qui indique à l'application quelle langue est définie. Quoi qu'il en soit, je pense que les applications Mac affichent automatiquement le bon .xib en fonction de la langue du système.

Y a-t-il une "meilleure" chose à faire lors de la programmation avec des interfaces traduisibles?

Répondre

5

Ce dont je pense que vous avez besoin est la localisation.

Si vous utilisez des chaînes dans votre code:

  • Créer un nouveau fichier Localizable.strings (Fichier -> Nouveau fichier -> iOS -> Ressources -> fichier Strings)

  • Sélectionnez cette fichier et Afficher l'inspecteur de fichier (Commande + Option + 1)

  • Cliquez sur le bouton Ajouter sous la localisation et ajoutez une langue par défaut (j'attends l'anglais) et les autres langues que vous souhaitez.

  • Vous remarquerez que vous avez une petite flèche à côté de votre fichier Localizable.strings, si vous cliquez dessus, vous pouvez voir les langues que vous avez ajoutées.

  • Pour chaque phrase que vous voulez traduire, utilisez la syntaxe suivante:

    "key" = "value";
    "hello" = "bonjour";

  • Dans votre code où vous voulez utiliser la traduction, utilisez NSLocalizedString(@"hello", @"hello"); (Le second paramètre est un commentaire, il Peu importe ce que la valeur que vous utilisez ici)

Quand il vient à grué, vous devrez changer manuellement les chaînes et réarranger les champs de texte etc dans chaque nib.

Espérons que cela aide!

+0

Je ne sais pas si cela compte, ou j'ai fait quelque chose de mal, mais toutes ces étapes sont correctes sauf que je ne pouvais pas l'obtenir à travailler nommant le fichier de chaînes "Localization.strings". Mais quand j'ai utilisé "Localizable.strings" à la place, cela a fonctionné parfaitement. – Katie

+0

Bon endroit .. J'ai édité. –