Traduction des champs multilingues

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


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.
Par exemple, si l'utilisateur qui a créé les fichiers a saisi toutes les désignations en allemand, la langue de base est DE.
<LanguageBaseData>DE

<LanguageCodeData>

Déclaration de la liste des codes langues disponibles pour les champs multilingues.
Les codes sont séparés par une virgule.
<LanguageCodeData>EN,CZ <-- indique qu'il existe une traduction des champs multilingues pour les code langues EN et CZ.


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 :



    • 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.
Cette fonction se nomme FiltrageLibelle et doit avoir le prototype suivant :
function int FiltrageLibelle ( dico, nomFichier, nomTable, nomChamp, tdf, enreg, libelle) ; Retour : TRUE = ajouter le libellé
; FALSE = ignorer le libellé
1 dico A ; nom du dictionnaire de données (.dhsd)
1 nomFichier A ; nom du fichier
1 nomTable A ; nom de la table
1 nomChamp A ; nom du champ
record * htdf tdf ; tdf du dictionnaire de langue
1 enreg A ; table
1 libelle A ; libellé qui va être ajouté au dictionnaire de traduction
beginf
freturn TRUE
endf

  • 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 :


    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 :


    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 :


    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.