Départ

Francisation

Au départ on a un petit programme en anglais. Quand on clique sur le bouton, le programme affiche une fenêtre d'alerte avec le nom que l'on a saisi.

Ce que l'on veut c'est franciser ce programme.

Interne

Quand on clique sur le bouton, la méthode Bouton est appelé. Celle-ci utilise la fonction NXRunAlertPanel pour afficher une petite fenêtre avec un message construit dynamiquement. Cette méthode pourrait être du type :

Mais en fait le programmeur a suivi les règles de codage de NeXT et il a ainsi utilisé le codage suivant :

La fonction NXLocalizedString sert à traduire facilement une chaîne de caractères. Pour cela le système utilise un fichier de traduction lu au moment du démarrage de l'application. Ce fichier a un format du type :

La fonction NXLocalizedString recherche le nom "Hello" dans le fichier et récupère la chaîne "Hello %s". La chaîne "%s is the name" est juste une aide pour le traducteur. Ce fichier de traduction est normalement généré de façon automatique par la commande genstrings par analyse des sources Objective-C.

Dans le wrapper de l'application se trouve un répertoire English.lproj qui contient tous les fichiers qui doivent être modifier lors d'une traductions :

Le programme étant très simple, nous n'y trouvons que deux fichiers : un nib qui contient la description de l'interface graphique, et un strings qui contient les chaînes à traduire.

Traduction

Pour effectuer la traduction, il suffit de dupliquer le répertoire English.lproj en le renommant French.lproj. Il ne reste plus qu'à modifier le fichier strings pour obtenir :

Pour le fichier nib il suffit de lancer Interface Builder et de traduire toutes les chaînes.

Arrivée

On a ainsi un programme avec deux langues, et si le français est la langue par défaut (on modifie cela par le programme Preference), en relançant le programme on obtient :

On a ainsi réalisé une traduction sans avoir les sources du programme.