## Traduire GenJ dans une autre langue,
ou aider à maintenir la traduction.

Introduction

Effectuer une traduction, ou maintenir à jour une traduction au fur et à mesure des évolutions de GenJ ne requiert aucune connaissance en programmation, ni à fortiori du langage java. Donc aucun fichier source (*.java) ne doit être touché.
Les données contenant les phrases ou les mots utilisés sont complètement séparées du programme lui-même, elles se trouvent dans des fichiers de type texte.
La traduction entière du logiciel comprend trois éléments :

> 1. Le Programme GenJ lui-même
> 2. Les Rapports (ou Scripts)
> 3. Les fichiers d'Aide

Ces trois parties sont indépendantes les unes des autres, donc la traduction peut être faite, étape par étape, ou simplement partiellement (on ne s'occupe que des Rapports (ou Scripts), et pas des fichiers d'Aide ni du programme GenJ). Vous pouvez, et je dirais même, vous devez, utiliser les fichiers langage existants, exemple : l'Anglais. Les fichiers qui vous sont nécessaires (les modèles, comme ceux partiellement traduits) sont déposés sur le serveur CVS. La page Internet du logiciel GenJ sur le Web contient toutes les informations pour accéder à ce serveur, et sur la manière de reprendre les fichiers. D'autres possibilités s'ouvrent à vous si vous ne savez ou ne pouvez accéder à ce serveur, ainsi il vous suffit de voir sur le site, l'adresse Email de l'une des personnes qui parle votre langue et qui participe au développement du logiciel, pour lui envoyer un petit courrier (Email) et obtenir ainsi de sa part, tout ce qu'il vous faut pour vous lancer dans cette traduction.
La manière dont sont placés les fichiers langage dans l'arborescence de GenJ (l'endroit où se trouvent tous ces fichiers sur votre ordinateur quand vous utilisez le logiciel), est quelque peu différente de celle qui existe sur le serveur CVS, et dont il va être question dans les explications qui vont suivre. Dans tous les cas cependant, on aura à faire à des directories qui contiennent elles-mêmes des sous-directories qui contiennent les fichiers sur lesquels il va falloir travailler. Un exemple valant mieux que de grandes explications, voilà comment on peut traduire l'ensemble.
1°) Le Programme GenJ lui-même

Le chemin sur le serveur CVS est : `dev/genj/language/[abbréviation de la langue concernée, ex. fr=français, en=anglais]/genj/`.
Sous cette arborescence, on va trouver d'autres sous directories. Ainsi au moment où je fais cette aide, on trouve pour la langue anglaise :

> /dev/language/en/genj/app/
> /dev/language/en/genj/applet/
> /dev/language/en/genj/edit/
> /dev/language/en/genj/edit/actions/
> /dev/language/en/genj/edit/beans/
> /dev/language/en/genj/entity/
> /dev/language/en/genj/gedcom/
> /dev/language/en/genj/gedcom/time/
> /dev/language/en/genj/io/
> /dev/language/en/genj/nav/
> /dev/language/en/genj/option/
> /dev/language/en/genj/print/
> /dev/language/en/genj/renderer/
> /dev/language/en/genj/report/
> /dev/language/en/genj/resume/
> /dev/language/en/genj/search/
> /dev/language/en/genj/table/
> /dev/language/en/genj/timeline/
> /dev/language/en/genj/tree/
> /dev/language/en/genj/view/

Seuls les fichiers *.properties dans ces sous-directories sont importants, et à l'intérieur de chacun, il ne faut traduire que les textes qui se trouvent à la droite du signe "égal". Les textes à gauche de ce signe "égal" ne doivent en aucun cas être modifiés.

> Exemple, on va traduire de l'anglais vers le français (en => fr)
> Dans le fichier :
> /dev/language/en/genj/app/resource.properties
> On va trouver la ligne suivante :
> cc.menu.file = File (le mot est en anglais)
> On ne touchera pas à ce fichier, mais on ira voir dans le fichier :
> /dev/language/fr/genj/app/resource_fr.properties
> cc.menu.file = Fichier (là, le mot "File" doit être traduit en français, donc "Fichier")
> Si bien entendu la ligne "cc.menu.file = ....." n'existe pas, il faudra la rajouter avec la traduction, donc "cc.menu.file = Fichier" en se servant du fichier anglais comme modèle, mais si la ligne existe, et qu'on trouve que la traduction n'est pas terrible, on aura qu'à modifier la partie devant être en français, donc la partie à droite du signe "égal".

Il faut toujours avoir à l'esprit que le fichier anglais sera lui, toujours à jour. Donc ne pas hésiter à voir ce qu'il y a dedans pour faire les modifications dans le fichier de la langue que vous voulez traduire.
Au cas où la traduction manque (ex. il n'y pas de traduction en français pour telle ou telle phrase), le fichier de langue anglaise sera automatiquement utilisé. Si donc en utilisant GenJ vous trouvez des mots en anglais alors qu'ils auraient dû être en français, c'est un bon moyen pour vous de voir qu'il est nécessaire d'intervenir sur le(s) fichier(s) français.
Les fichiers *.properties doivent être nommés ou renommés en utilisant le préfixe de la langue concernée, précédé d'un underscore ("_"). Ainsi le fichier anglais s'appelle "resource.properties", le fichier de langue française, s'appellera "resource_fr.properties", le fichier de langue allemande "resource_de.properties", etc....
Note : Les fichiers de langue Anglaise (l'Anglais est le langage par défaut), n'ont pas d'underscore ("_"), et aucune identification de langue. Ainsi, ils ne s'appellent pas "resource_en.properties", mais "resource.properties".

> Exemple : anglais // français // allemand
> resources.properties (Anglais)
> resources_fr.properties (Français)
> resources_de.properties (Allemand)

Aprés avoir renommé la directorie par le préfixe d'identification de la langue concernée, la traduction des fichiers langage du programme est prête.

> Exemple : anglais // français // allemand
> dev/genj/language/en/genj/ (Anglais)
> dev/genj/language/fr/genj/ (Français)
> dev/genj/language/de/genj/ (Allemand)

2°) Les Rapports (ou Scripts)

Ici les fichiers *.properties vont dans la sous-directorie : `dev/genj/src/report`. Une nouvelle ligne doit être ajoutée pour chaque entrée. Les lignes déjà existantes pour d'autres langues, doivent servir d'exemples. Un simple copier/coller est suffisant pour faire le nécessaire. Là encore, sur le coté gauche du signe égal on trouve le nom de la variable suivi d'un point et de l'abbréviation de la langue (sauf pour l'anglais). A droite du signe égal, on trouve la traduction dans la langue concernée.

> Exemple : anglais // français // allemand // espagnol
> name = Gedcom Statistics
> name.fr = Statistiques des données Gedcom
> name.de = Gedcom-Statistik
> name.es = Estadésticas de Gedcom

Comme vous le voyez, le texte du côté droit du signe "égal" doit être traduit. L'anglais est la langue par défaut, donc si une traduction manque dans une langue, c'est l'anglais qui sera affiché.
Les textes qui se trouvent entre les signes `{}` ou `@@` seront remplacés lors de l'éxécution du script. Donc ne pas les traduire :

> Exemple :
> females = Females: {0} ({1}%)
> females.de = Weiblich: {0} ({1}%)
> females.fr = Femmes : {0} ({1}%)
> females.es = Mujeres : {0} ({1}%)

Les séquences d'échappement commencent avec `\` comme `\n`. Les séquences comme `\u00ED` sont des caractères Unicode pour des lettres accentuées, et seront transformées en des lettres lisibles lors de l'éxécution de GenJ.

> Exemple : anglais // français
> unknown = Unknown: {0} ({1}%)
> unknown.fr = Ind\u00E9termin\u00E9 : {0} ({1}%)

Les séquences "\u00E9" dans l'exemple ci-dessus, seront transformées en la lettre "é", lors de l'exécution du script.
Pour être sûr de ce que l'on fait, il convient de prendre un éditeur qui encode le fichier .properties sur lequel on travaille en UTF-8. Il ne faut pas choisir US_ASCII, ni ISO8859_1, ni ISO8859_15, mais UTF-8.
La traduction est complête, si toutes les entrées dans tous les fichiers *.properties sont traduites.
3°) Les Fichiers d'Aide

Les fichiers d'aide sont écrits au format HTML. Les images qui sont utilisés, sont placées dans la sous-directorie : `dev/genj/images`. Les fichiers HTML, eux, sont placés dans les sous-directories :
`dev/help/[abbréviation de la langue concernée, ex. fr=français, en=anglais]`
Les commandes HTML comme `<br>` ou `</p>` restent inchangées. Seul le texte sera modifié.
Actuellement, l'arborescence utilisée pour les fichiers d'aide pour la langue française, est la suivante (à l'heure où j'écris ces lignes bien sûr) :

> /dev/help/fr/concepts/context.html
> /dev/help/fr/concepts/gedcom.html
> /dev/help/fr/concepts/paths.html
> /dev/help/fr/entity/fam.html
> /dev/help/fr/entity/indi.html
> /dev/help/fr/entity/media.html
> /dev/help/fr/entity/note.html
> /dev/help/fr/entity/repository.html
> /dev/help/fr/entity/source.html
> /dev/help/fr/entity/submitter.html
> /dev/help/fr/special/blueprint.html
> /dev/help/fr/special/faq.html
> /dev/help/fr/special/report.html
> /dev/help/fr/special/translation.html
> /dev/help/fr/view/.html
> /dev/help/fr/special/edit.html
> /dev/help/fr/special/entity.html
> /dev/help/fr/special/navigator.html
> /dev/help/fr/special/report.html
> /dev/help/fr/special/table.html
> /dev/help/fr/special/timeline.html
> /dev/help/fr/special/tree.html
> /dev/help/fr/cc.html
> /dev/help/fr/cconcepts.html
> /dev/help/fr/entities.html
> /dev/help/fr/frameset.html
> /dev/help/fr/intro.html
> /dev/help/fr/paths.html
> /dev/help/fr/resource.properties
> /dev/help/fr/specials.html
> /dev/help/fr/team.html
> /dev/help/fr/views.html

Merci de l'aide que vous pourrez apporter dans ces traductions.