Introduction
Pour qu'une application traduite en langue étrangère puisse être vraiment exploitée, il faut également que les textes contenus dans des fichiers soient traduits. Par exemple, la description de la famille article doit s'afficher dans la langue de l'utilisateur et non dans la langue dans laquelle elle a été saisie lors de la création de la fiche famille-article.
Cette traduction ne peut pas être faite à l'avance par le concepteur du logiciel, puisque les enregistrements contenant ces champs sont créés par les utilisateurs.
Harmony dispose d'un outil qui permet de créer des dictionnaires en balayant les fichiers et en extrayant les libellés à traduire. Une fois ces libellés traduits par un traducteur, ils sont automatiquement affichés dans les masques.
Pour mettre en oeuvre la traduction des champs multilingues il faut :
Remarque
La traduction des masques et des programmes est décrite dans le livre Traduction des applications.
Terminologie
Langue de base
On appelle "Langue de base" la langue des libellés tels qu'ils sont écrits dans les fichiers.
Il ne faut pas mélanger plusieurs langues dans les fichiers d'un site. Tous les libellés des fichiers doivent être saisis dans la langue de base.
Champ multilingue
Un champ multilingue est un champ susceptible d'être affiché dans une autre langue que la langue de base.
La déclaration d'un champ multilingue se fait soit dans le dictionnaire des données (propriété multilingue), soit dans les masques écran ou imprimante.
Lors de l'éxécution d'un programme, si l'utilisateur a sélectionné un autre code langue que le code langue de base
les libellés multilingues sont automatiquement affichés à la place des libellés en langue de base (si la traduction existe).
les libellés multilingues passent en Affichage (même si la traduction n'existe pas), il ne peuvent donc pas être saisis dans les masques (la saisie ne peut donc se faire que dans la langue de base).
La saisie des traductions peut se faire par l'outil XtranslateDataTools.dhop ou dans le zoom sur la table contenant un champ multilingue. Par exemple, dans le zoom sur la table des familles d'article, vous pouvez saisir la traduction de la description des familles. Voir dans la documentation du zoom, le livre Traduction des champs multilingues.
Restriction : si un champ multilingue fait partie d'un index, l'ordre de l'index sera toujours celui de la langue de base. Par exemple, l'affichage des articles triés par référence se fait toujours dans la langue de base.
Remarque
La fonction diva TranslateData permet aux développeurs d'accéder aux traductions, pour des programmes d'export par exemple.
Paramétrage des langues
Le paramétrage des langues existantes pour les champs multilingues se fait dans le fichier paramètres des langues : TranslateParams.txt.
Les paramètres spécifiques pour les champs multilingues sont :
<LanguageBaseData> | Déclaration de la langue de base, c'est à dire de la langue des champs, tels qu'ils sont écrits dans les fichiers de données. |
<LanguageCodeData> | Déclaration de la liste des codes langues disponibles pour les champs multilingues. |
Remarques pour les développeurs
La fonction TranslateGetCodes permet de lire ces informations.
La fonction GetLanguageData permet de connaître le code langue des champs multilingues.
La fonction SetLanguageData permet de positionner par programme le code langue des champs multilingues.
Dictionnaires
Les dictionnaires utilisés pour la traduction des champs multilingues sont des fichiers séquentiels-indexé.
A chaque code langue disponible correspond un fichier qui se nomme HarmonyDictionnary_cc.dhfi, où cc représente le code langue.
Exemple : Code langue EN --> fichier HarmonyDictionnary_EN.dhfi
Il n'y a pas de répertoire figé ou paramétré pour les dictionnaires. Simplement, à l'exécution, les dictionnaires doivent être accessibles par les chemins implicites de l'utilisateur.
Remarques
Les dictionnaires sont créés par l'utilitaire xtranslateDataTools.dhop. Ils peuvent également être créés par l'utilisateur lors de la saisie des traductions.
La saisie des traductions se fait soit par l'utilitaire xtranslateDataTools.dhop, soit par le zoom sur les tables contenant des champs multilingues.
Extraction des libellés
La création des dictionnaires consiste à extraire tous les champs multilingues de la base de données. Pour que cette opération soit la plus simple possible, Harmony dispose d'un outil (XtranslateDataTools) qui permet d'automatiser ce traitement. Il suffit de préciser les dictionnaires de données associés à vos données, et XtanslateDataTools détermine quels sont les fichiers à traiter, puis effectue le traitement.
Mise en oeuvre
Lancez le programme XtranslateDataTools.dhop puis sélectionnez le choix Extraire des libellés.
La boîte de dialogue de sélection des fichiers s'ouvre. Vous devez sélectionner les dictionnaires de données associés à vos fichiers (en général, tous les fichiers .dhsd du répertoire contenant vos fichiers).
XtranslateDataTools recherche dans ces dictionnaires toutes les tables contenant des champs multilingues.
Puis le résultat de cette recherche est affiché dans une page contenant deux tableaux :
le premier tableau contient la liste des langues pour lesquelles un dictionnaire va être créé. Vous pouvez modifier la sélection pour exclure certaines langues.
le second tableau contient la liste des tables qui vont être traitées. Ces tables contiennent un ou plusieurs champs multilingues. Vous pouvez également modifier la sélection pour exclure certaines tables de la recherche. Les colonnes de ce tableau sont :
Dictionnaire
Nom du dictionnaire de données contenant la description du fichier.
Fichier
Mnémonique du fichier dans le dictionnaire.
Nom physique du fichier
Nom du fichier sur le disque. Ce nom vous permet de vérifier que l'extraction des libellés se fera dans les bons fichiers.
Status d'ouverture
Résultat de la fonction Fopen sur ce fichier. Cela permet de voir qu'un fichier est éventuellement absent.
Table
Mnémonique de la table.
les autres paramètres à saisir sont :
Répertoire des dictionnaires | Répertoire où les dictionnaires sont créés. XtranslateDataTools créé le répertoire si nécessaire. |
Module contenant la fonction de filtrage | Facultatif. Nom d'un module diva qui contient une fonction permettant de filtrer les enregistrements. Cette fonction est appelée avant chaque ajout de libellé dans le dictionnaire de traduction. |
Après la validation de cette page le traitement commence. XtranslateDataTools parcours les fichiers de données (.dhsd) et utilise le code enregistrement des tables pour identifier les enregistrements lus.
Mise à jour des dictionnaires
La mise à jour des dictionnaires de traduction est en tous points similaire à la création des dictionnaires.
Voir Extraction des libellés
Remarque
Par la fonctionnalité d'import, vous pouvez également mettre à jour le dictionnaire en important soit un fichier Tableur, soit un fichier texte.
Ces fichiers à importer peuvent contenir
des libellés en langue de base ainsi que leurs traductions.
uniquement des libellés en langue de base. Cela vous permet d'écrire un programme qui crée un fichier de libellés à traduire puis de l'importer dans le dictionnaire.
Saisie des traductions
La saisie des traductions se fait par un zoom sur les dictionnaires de traduction.
Dans xtranslateDataTools.dhop, sélectionnez le choix Appel du Zoom, puis sélectionnez le dictionnaire sur lequel vous désirez travailler.
Confidentialités
Pour avoir le droit de traduire les champs multilingues d'une langue, l'utilisateur doit avoir le code de confidentialité HTxx (xx = code langue).
Par exemple, pour avoir le droit de traduire les champs en anglais, l'utilisateur doit avoir le code de confidentialité HTEN.
Etat
Chaque ligne contient un drapeau indiquant l'état. L'état peut être :
A traduire (clé rouge).
A réviser (clé bleue). Cet état ne peut être positionné sur une ligne non traduite.
Terminé (pas d'affichage). A l'exécution, la recherche de la traduction se fait uniquement sur les lignes marquées "Terminées" .
Lorsque vous saisissez une traduction, l'état passe automatiquement à Terminé.
La modification en série du zoom vous permet de modifier plusieurs lignes en une seule opération.
Onglets
Le zoom sur les dictionnaires propose les onglets suivants :Tout
Toutes les lignes sont affichées.
Terminées
Seules les lignes marquées "Terminées" sont affichées.
A réviser
Seules les lignes marquées "A réviser" sont affichées.
A traduire
Seules les lignes marquées "A traduire" sont affichées.
Par libellé traduit
Seules les lignes pour lesquelles une traduction existe sont affichées et triées suivant la traduction.
Export Tableur
Un dictionnaire peut être exporté afin d'être saisi avec un Tableur.
Si les langues utilisées utilisent un code page spécifique, il ne faut pas utiliser la fonction d'export standard du zoom.
Les paramètres à saisir sont :Fichier tableur
Nom du fichier résultat.
Le fichier résultat comporte deux colonnes, la première étant le libellé en langue d'origine, la seconde étant le libellé traduit.Exporter les lignes marquées
Types de lignes à exporter.
Import Tableur
Un dictionnaire peut être exporté afin d'être saisi avec un Tableur.
Le choix Import Tableur du menu Compléments permet d'importer un fichier Tableur ou un fichier texte.
Les paramètres à saisir sont :Fichier à Importer
Nom du fichier à importer. Cela peut être un fichier Tableur ou un fichier texte (.txt).
Numéro de colonne 'langue de base"
Numéro de la colonne contenant le libellé dans la langue de base.
Numéro de colonne "traduction"
Numéro de la colonne contenant la traduction.
Nombre de lignes à ignorer au début
Permet d'ignorer d'éventuelles lignes de commentaires placées en début de fichier.
Etat des lignes traduites
Etat à placer sur les lignes importées.
Séparateur de colonnes
Si le fichier est un fichier texte, il faut préciser ici quel est le caractère séparateur entre les colonnes.
Remarque
Si la colonne "traduction" est vide, le libellé en langue de base est tout de même ajouté au dictionnaire, mais avec l'état positionné à "A traduire". Cela permet d'importer un fichier texte contenant uniquement des libellés en langue de base.
Créer un dictionnaire
Le choix Créer un dictionnaire de l'utilitaire xtranslateDataTools.dhop permet de créer un nouveau dictionnaire et d'y copier les libellés en langue de base d'un autre dictionnaire.
Les paramètres à saisir sont :
Code langue | Code langue du nouveau fichier. |
Répertoire | Répertoire où créer le fichier. |
Copier les libellés de | Facultatif. Permet de copier les libellés en langue de base d'un autre dictionnaire. Les traductions ne sont pas recopiées. |