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

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


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

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

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.

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


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


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 :

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.