Introduction
Harmony intègre des outils permettant d'exécuter une application dans une autre langue que la langue utilisée lors du développement.
La traduction d'une application ne demande aucun travail supplémentaire au programmeur. Le programmeur travaille dans sa langue maternelle, et uniquement dans celle-ci.
Une fois l'application achevée, il ne reste plus qu'à créer un dictionnaire contenant tous les libellés à traduire (cela se fait automatiquement) et à faire traduire ce dictionnaire.
Ce livre traite uniquement de la traduction des masques et des programmes. Pour la traduction des libellés contenus dans les fichiers (modes de règlements, familles articles...), voir le livre Traduction des champs multilingues.
Un dictionnaire contient les éléments suivants :
tous les libellés contenus dans les masques (y compris les ressources)
tous les textes des choix associés aux données à choix multiples (multi-choix)
tous les libellés des menus
des libellés contenus par des sources de programme Diva
des libellés contenus dans les dictionnaires de RecordSql (les libellés susceptibles d'être affichés par le Zoom)
des libellés contenus par certains fichiers (libellés d'erreur par exemple).
La création des dictionnaires se fait depuis l'atelier de développement Xwin.
La saisie des traductions se fait :
Soit par le programme xTtranslate.dhop. Cet utilitaire permet d'afficher les masques en cours de traduction, parallèlement à la saisie. Le traducteur peut ainsi voir le contexte dans lequel se trouvent les libellés à traduire. Cette méthode nécessite l'installation de Divalto et des sources.
Soit en utilisant l'import/export Tableur. Un dictionnaire peut être exporté vers un fichier Tableur ; ce fichier est complété par le traducteur, puis réimporté dans le dictionnaire. Cette méthode ne permet pas de voir le contexte mais ne nécessite pas l'installation de Divalto sur l'ordinateur du traducteur.
A l'exécution :
Le code langue de Windows est utilisé par défaut. Par exemple, si l'utilisateur a la code langue DE (Allemand) et que le dictionnaire correspondant est en ligne, les applications s'affichent en Allemand. L'utilisateur peut également changer manuellement de langue (écran ou imprimante), pour les applications Divalto et indépendamment du code langue de Windows, grâce au menu contextuel ouvert par un clic droit sur l'icône Divalto dans la zone de notification (Traybar).
Divalto traite, le cas échéant, la saisie et l'affichage des dates au format US (mm/jj/aaaa).
Si les fichiers d'aides sont traduits, Divalto affiche l'aide en fonction du code langue courant.
Terminologie
Langues
Dans la suite de cette documentation, le terme "langue de base" indique la langue utilisée pour le développement de l'application. Le terme "libellé étranger" indique un libellé traduit.
Le terme "dictionnaire de référence" indique le dictionnaire créé à partir des masques.
Voir Liste des codes langues
Dictionnaire
Un dictionnaire représente l'ensemble des libellés traduits pour une application et pour un code langue.
Les traductions peuvent se trouver dans plusieurs fichiers dictionnaires distincts. La liste des fichiers correspondant à un dictionnaire est donnée dans un fichier paramètres.
Un fichier dictionnaire source est un fichier séquentiel-indexé. Pour être utilisé à l'exécution, il doit être compilé en un fichier dictionnaire objet (extension .dhot).
Exemple :
Le dictionnaire Divalto pour le code langue DE contient les deux fichiers suivants :
MaSurcharge_de.dhot
Divalto_de.dhot
Pour effectuer la traduction d'un libellé, celui-ci est recherché dans le dictionnaire MaSurcharge_de.dhot. Si elle n'est pas trouvée dans ce fichier dictionnaire, elle est recherchée dans le fichier Divalto_de.dhot.
Remarques
L'utilitaire de traduction xTranslate.dhop utilise le terme dictionnaire au sens de Fichier-dictionnaire. Il traite un seul fichier dictionnaire à la fois.
Divalto livre deux dictionnaires. Un dictionnaire système (nommé Harmony) et un dictionnaire applications (nommé Divalto).
Codes Page
En standard, Harmony utilise le jeu de caractère ANSI latin occidental. Les caractères ANSI sont codés sur 8 bits (256 caractères différents). Le nombre de combinaisons est insuffisant pour coder l'ensemble de tous les caractères des alphabets utilisant le jeu ANSI. C'est pourquoi, il a été ajouté une notion complémentaire qui est le « code page » des caractères.
Un même code dans deux codes page différents ne sera pas représenté par le même symbole.
Exemple : le code 0xe6 correspond au symbole :
ć dans le code page Europe centrale
æ dans le code page Europe occidentale
Il existe une dizaine de codes page différents (Occidental, Hébreu, Arabe, Grec, Turc, Baltique, Europe centrale, Cyrillique, Vietnamien).
La plupart des pays d'Europe utilise le code page « Occidental ». C'est le code standard de Divalto.
Le polonais utilise le « code page » Europe centrale pour les caractères « spéciaux » de l'alphabet polonais. Si l'on souhaite afficher ces caractères, il faut utiliser une police de caractères avec le code page « Europe centrale ».
Remarque : les 128 premiers caractères du jeu ANSI sont communs à l'ensemble des codes page. Ainsi, l'anglais, qui n'utilise pas de caractères accentués, est indépendant des codes page.
Périmètre de la prise en compte du code page
La prise en compte du code page concerne principalement :
L'affichage et l'impression des constantes des masques.
L'affichage et l'impression des données (lorsque les bases de données contiennent des informations dans une langue étrangère).
L'affichage, la saisie et l'impression des champs multilingues.
La saisie de la traduction des masques par xtranslate.dhop.
L'import et l'export des textes à traduire dans cet outil.
La saisie des traductions des champs multilingues par xtranslateDataTools.dhop.
L'import et l'export des textes à traduire dans cet outil.
Les fonctions Diva liées à la traduction.
Les fonctions Diva de conversion de codage.
Les fonctions d'import et d'export tableur du module yoffice.dhop.
La saisie des textes dans Xwin pour un masque conçu directement dans une langue étrangère (masque pour lequel la propriété "Code langue du masque" a été renseignée). Attention, dans l'atelier de développement Xwin, la possibilité de saisir des textes, dans une langue à code page non standard, est limitée aux libellés des objets posés dans le masque et affichés ou imprimés à l'exécution (par exemple, la propriété "Texte" d'un objet Texte). Elle ne concerne pas les libellés "propres" à l'atelier (par exemple, la propriété "Libellé" des boîtes de dialogue des paramètres du masque ou de la page). Pour ces derniers, il est préconisé de les saisir en langue anglaise.
Dans les masques
Pour les textes des masques, la prise en compte du code page est automatique. On indique, dans les propriétés du masque, le Code Langue d'origine du masque (il s'agit de la langue de référence du masque).
Ce code détermine le code page du masque, s'il est affiché dans la langue d'origine du masque.
A l'exécution, l'utilisateur choisit sa langue d'affichage ou d'impression.
Si le Code Langue de référence du masque est différent du code d'affichage ou d'impression choisi par l'utilisateur, Harmony cherche, pour chaque texte à afficher ou à imprimer, sa traduction dans le dictionnaire de traduction.
La recherche dans le dictionnaire renvoie soit :
La traduction du texte dans la langue étrangère. La traduction est accompagnée du code page du texte traduit. Le texte est affiché ou imprimé dans ce code page.
Le texte dans la langue d'origine si la recherche n'a pas trouvé de traduction pour le texte concerné (soit parce que le texte n'a pas été traduit, soit parce que ce texte ne se trouve pas dans ce dictionnaire car il s'agit d'une version plus ancienne). Le dictionnaire renvoie le code page du texte d'origine. Le texte est affiché ou imprimé dans ce code page.
Remarques :
Pour les multi-choix, le code page s'applique à l'ensemble des choix. Si un texte d'un multi-choix n'est pas traduit, la valeur s'affichera dans la langue d'origine, mais le code page appliqué sera celui de la langue étrangère.
Le code page du masque s'applique aussi aux ressources du masque (Menu, Popup et Toolbar).
Les données
Pour les données, la balise <LanguageBaseData> du fichier paramètre permet de définir la langue des données stockées dans les tables. Le code page associé à cette langue est automatiquement pris en compte pour l'affichage et l'impression de toutes les données des masques.
Attention :
Les multi-choix et les menus (surtout les popup) peuvent contenir soit des constantes, soit des données qui proviennent des tables, soit des mélanges. Il faut impérativement que toutes les informations de ces objets soient dans le même code page.
Les champs multilingues
Pour les champs multilingues, la prise en compte du code page est automatique.
L'affichage des champs multilingues, ainsi que leur saisie dans le zoom, tient compte du code page.
Gestion dynamique des codes page
Dans certains cas, la gestion des langues doit être dynamique, c'est-à-dire qu'elle ne dépend pas seulement du choix de la langue fait par l'utilisateur, mais également du contexte. Par exemple, si une table client contient des informations stockées directement dans la langue du client (l'adresse de livraison) et qu'elle n'est pas homogène pour toutes les lignes la table.
Dans ce cas, qui n'est pas pris en charge par l'ERP Divalto en standard, il sera éventuellement nécessaire de changer les codes page dynamiquement à l'exécution pour l'affichage des champs concernés.
Les fonctions XmeSetAttribut et XmeListSetAttribut permettent d'indiquer quel est le code à utiliser pour l'affichage ou la saisie de ces informations.
Les valeurs des codes page
Zone | Ansi Code Page |
Europe centrale | 1250 |
Cyrillique | 1251 |
Occidental | 1252 |
Grec | 1253 |
Turc | 1254 |
Hébreu | 1255 |
Arabe | 1256 |
Baltique | 1257 |
Vietnamien | 1258 |
Thai | 874 |
Chine symboles simplifiés | 936 |
Chine symboles traditionnels | 950 |
Corée | 949 |
Japon | 932 |
Création des dictionnaires
Etape 1 : Extraction des libellés et création du dictionnaire de référence
Cette étape s'effectue depuis Xwin, choix <Outils>< Extraire les libellés en vue de la traduction>.
L'extraction se fait pour un répertoire complet, avec ses sous-répertoires.
Un fichier paramètre permet :
de filtrer certains libellés
d'ajouter les libellés contenus dans des fichiers (menus, fichiers d'erreurs, etc.)
A la fin de cette étape, un dictionnaire de référence est créé (ou mis à jour s'il existe déjà. Dans l'exemple ci-dessous, c'est un dictionnaire Français qui est créé.
Etape 2 : Création des dictionnaires en langue étrangère
Depuis l'utilitaire xTranslate.dhop, les dictionnaires étrangers sont créés, à partir d'un dictionnaire de référence.
Ces dictionnaires sont transmis aux traducteurs.
Etape 3 : Compilation et mise en place des dictionnaires
Après garnissage des dictionnaires par les traducteurs, il ne reste qu'à les compiler (avec xTranslate.dhop) et à les installer.
Mise en place des dictionnaires compilés
Le chapitre [System] de Divalto.ini (utiliser xDivaltoMajIni) doit contenir l'entrée suivante : CheminLangues=xxxxx. CheminLangues indique un répertoire dont le nom est au format Windows. Si ce répertoire est situé sur un serveur, il faut ici mettre un nom de partage Windows.
Le répertoire pointé par CheminLangues contient : - le fichier paramètre TranslateParams.txt - les dictionnaires compilés (.dhot).
Le fichier paramètres TranslateParams.txt contient trois parties : - une partie information qui indique les codes langues disponibles ainsi que le format d'affichage/saisie des dates et le code pour les fichiers d'aides - une partie donnant la liste des fichiers pour chaque couple dictionnaire-langue. - une partie indiquant les langues disponibles pour les données contenues dans les fichiers (la traduction des champs multilingues fait l'objet d'un livre à part).
Dans l'exemple ci-dessus : - l'utilisateur a le choix entre deux langues étrangères, DE et EN - le dictionnaire Divalto - DE est composé de deux fichiers : DivaltoU_de.dhot et Divalto_de.dhot - le dictionnaire Divalto - EN est composé d'un fichier : Divalto_en.dhot.
Remarques importantes
Pour le paramétrage des applications Web, voir Installation d'un site Web multilingue dans la documentation d'installation d'Harmony.
Quand on parle de dictionnaire pour les programmes Diva (instruction Translate) ou pour les masques, il s'agit toujours de l'entrée <Dictionnary> du fichier TranslateParams.txt. Par exemple, la traduction de tous les libellés de l'ERP Divalto est cherchée dans le dictionnaire Divalto : si le code langue courant est DE, ce sont les fichiers DivaltoU_de.dhot et Divalto.dhot qui seront utilisés ; si le code langue courant est EN, c'est le fichier Divalto_en.dhot qui sera utilisé.
Divalto livre deux dictionnaires. Un dictionnaire pour le système (nommé Harmony) et un dictionnaire pour les applications (nommé Divalto).
Voir aussi : Paramétrage
Résumé des étapes
Indiquer au niveau du projet quel dictionnaire est utilisé pour la traduction des masques
Création du dictionnaire de référence
Création d'un fichier paramètres donnant la liste des fichiers à traiter (autres que les sources)
Lancement de l'extraction
Création d'un dictionnaire étranger à partir du dictionnaire de référence
Vérification que les libellés traduits ne sont pas tronqués dans les masques
Paramètres du projet
Dans Xwin, au niveau des paramètres du projet, il faut garnir la zone <Dictionnaire de traduction pour les masques>. Si cette zone n'est pas renseignée, c'est le dictionnaire Divalto qui sera utilisé par défaut.
Deux cas se présentent :
Vous développez une surcharge de Divalto. Dans ce cas, vous allez utiliser le dictionnaire Divalto, qui est le dictionnaire par défaut. Vous n'avez donc pas besoin de modifier cette zone.
Vous développez un spécifique. Dans ce cas, vous allez créer votre propre dictionnaire, et vous mettez le nom de votre dictionnaire. Vous devez recompiler tous les masques pour que ce paramétrage soit pris en compte.
Création d'un dictionnaire de référence
La création (ou la mise à jour) d'un dictionnaire de référence se fait depuis Xwin, choix <Extraire les libellés en vue de la traduction> du menu <Outils><Traduction>.
Les paramètres à renseigner sont :
Répertoire source | Répertoire contenant les sources à traiter. Xwin traite les sous-répertoires. |
Code langue de référence | Code de la langue des libellés |
Code page de la langue de référence | Code page utilisé pour la langue de référence (0 par défaut) |
Dictionnaire de référence | Nom du dictionnaire de référence à créer ou à mettre à jour. Il s'agit d'un fichier source-dictionnaire (.dhfi). |
Effacer complètement le fichier | Attention : si vous effacez un dictionnaire de référence existant, vous ne pourrez pas vous servir de ce dictionnaire pour mettre à jour des dictionnaires étrangers existants. |
Effacer uniquement les liens | L'effacement des liens provoque la suppression des libellés inutilisés. Attention, si vous avez ajouté des libellés au dictionnaire de référence (par le programme xTranslate), ces libellés ajoutés seront perdus. |
Fichier paramètres complémentaire | Nom d'un fichier paramètre complémentaire qui permet de poser des filtres et d'extraire les libellés contenus dans d'autres fichiers que les sources (menus, etc.). (Voir ci-dessous) |
Programme Diva avant | Nom d'un programme Diva exécuté avant l'injection des libellés dans le dictionnaire. Ce programme peut éventuellement créer des fichiers qui seront injectés dans le dictionnaire. (Voir ci-dessous) |
Extraire uniquement les libellés qui ne figurent pas dans ce dictionnaire (surcharge) | Permet d'ignorer les libellés déjà présents dans un autre dictionnaire. Si vous êtes dans le cas d'une surcharge de Divalto, vous disposez des dictionnaires de référence et étranger de Divalto, et il est donc inutile de mettre dans votre dictionnaire les libellés déjà traduits. |
Remarque importante
Les dictionnaires de référence doivent être conservés et mis à jour d'une version à l'autre. Il ne faut pas les supprimer puis les recréer lors d'une nouvelle version, car dans ce cas, ils ne peuvent plus servir à mettre à jour les dictionnaires en langue étrangère. En cas de perte accidentelle, un choix de xTranslate.dhop permet de recréer un dictionnaire de référence à partir d'un dictionnaire étranger.
Fichier paramètre complémentaire
Le fichier paramètre complémentaire est au format HMP. Il peut contenir les lignes suivantes
<Fichier_Dico>....<enreg>.....<Champ>....<Champ>....<Champ_filtre>expression...<Champ_filtre>expression
Ce type de ligne permet d'extraire les libellés d'un fichier en précisant le nom de l'enregistrement et le nom des champs. Attention, le nom du dictionnaire de données et le mnémonique du fichier dans le dictionnaire doivent être garnis dans le fichier. (<xtools.dhop><Fichier><Modifier les caractéristiques>, zones "Dictionnaire" et "Mnémonique fichier dans le dictionnaire")
Attention : il ne faut pas ici mettre des champs multilingues (par exemple la description de l'article). La traduction de ces champs passe par un autre dictionnaire.
<Champ_Filtre> permet de filtrer les enregistrements à traiter.
La syntaxe de Expression est : champ [not] opérateur constante
Les opérateurs possibles sont = < > <> <= >= Like Match Inspect
Si plusieurs filtres sont positionnés, ils doivent tous être vrais pour que l'enregistrement soit traité.
Si vous utilisez les opérateurs < > il faut utiliser les crochets pour la syntaxe hmp.
Exemples :
Extraction des libellés d'un menu : <Fichier_dico>g3f.dhfi<enreg>m2<Champ>lib
Extraction des libellés d'un fichier d'erreurs : <Fichier_dico>gtferr.dhfi<enreg>Xerr<Champ>errtxt
Extraction des libellés d'un menu pour les enregistrements dont le regroupement est PARAM ou DOC.
[Fichier_dico]harmonyf.dhfi[enreg]m2[Champ]lib[champ_filtre]reg inspect "PARAM DOC"
<Fichier>...
Ce type de ligne ajoute l'intégralité du contenu du fichier au dictionnaire.
<Filtre><Match>...
<Filtre><Like>...
Ce type de ligne permet de filtrer les libellés, soit par l'opérateur Like soit par l'opérateur Match.
exemple : <FILTRE><like>client
<FiltreIgnorer><Match>...
<FiltreIgnorer><Like>...
Ce type de ligne permet de spécifier des libellés à ne pas mettre dans le dictionnaire.
exemple : <FiltreIgnorer><like>#*
<SourcesTraiter>...
Ce type de ligne permet de spécifier un format de fichier à traiter.
Si une ou plusieurs lignes de ce type existent dans le fichier, seuls les fichiers spécifiés par <SourcesTraiter> seront traités. Tous les autres fichiers seront ignorés.
Exemple : <SourcesTraiter>gt*
<SourcesIgnorer>...
Ce type de ligne permet de spécifier un format de fichier à ignorer lors de l'extraction des libellés.
Exemple : <SourcesIgnorer>pp*
Pour valider les différents éléments du fichier paramètre, il est conseillé de lancer l'extraction des libellés sur un "petit" répertoire. En cas d'erreur dans le fichier paramètre (dictionnaire non renseigné par exemple), le programme est interrompu.
Programme Diva Avant
Le programme Diva peut lire les paramètres de la boîte de dialogue depuis le tunnel.
PingReceive("nomdicobase" ,valeur) ; dictionnaire de référence également accessibles par "dicofrancais"
PingReceive("effacement" ,valeur1)
PingReceive("ficparametres" ,valeur2)
PingReceive("repertoire" ,valeur3)
PingReceive("fictmp" ,valeur4)
PingReceive("avecbase" ,valeur5) ; case "Extraire uniquement..." cochée
PingReceive("dicobase" ,valeur6) ; dictionnaire si la case "Extraire uniquement..." est cochée.
PingReceive("codelangueref" ,valeur7) ; code langue du dictionnaire de référence
Remarques
A chaque libellé provenant d'un masque correspond une entrée dans le dictionnaire. Cela permet de traduire différemment un même texte en langue de base, présent à plusieurs endroits du masque ou dans des masques différents. Lors de la saisie des traductions, l'outil permet de propager une saisie à tous les libellés identiques.
Les textes "Aides lignes" ne sont pas intégrés au dictionnaire.
Les libellés qui ne proviennent pas des masques sont présents une seule fois dans le dictionnaire. Toutefois l'instruction Diva Translate permet éventuellement de différencier deux libellés identiques.
Voir également Recréer un dictionnaire de référence à partir d'un dictionnaire étranger, Pilotage de Xwin pour la mise à jour des dictionnaires.
Création d'un dictionnaire en langue étrangère
La création (ou la mise à jour) d'un dictionnaire en langue étrangère se fait depuis le programme Xtranslate.dhop.
Lorsque vous lancez ce programme la première fois, la boîte de dialogue des fichiers s'ouvre pour sélectionner un dictionnaire. Si vous faites Abandon, il vous propose de créer un dictionnaire.
Sinon, sélectionnez le choix <Fichier><Créer ou mettre à jour un dictionnaire étranger depuis un dictionnaire de référence>.
Les paramètres à saisir sont :
Dictionnaire de référence | Nom du dictionnaire de référence. |
Dictionnaire Etranger | Nom du dictionnaire à mettre à jour. Par convention, on prendra le nom du fichier de référence suffixé par le code langue (mais ce n'est pas une obligation). Divalto.dhfi --> Divalto_de.dhfi |
Code langue | Code langue du fichier étranger. Voir Liste des codes langues |
Code page | Code page de la langue étrangère (0 par défaut) |
Voir également Pilotage de Xwin pour la mise à jour des dictionnaires.
Ajout de la fonction Translate
Certaines chaînes de caractères constantes se trouvant dans les programmes Diva doivent être traduites. De même, des libellés (textes d'erreur par exemple) stockés dans des fichiers doivent également être traduits.
ATTENTION : Cette fonction doit impérativement être sur une seule ligne. Elle ne doit pas être interrompue par le caractère \.
char Translate (libellé, [dictionnaire] ,[indice] , [EcranImp] , [CodeLangueLibelle] )
Paramètres
Libellé
Texte à traduire.
Dictionnaire
Nom du dictionnaire à utiliser pour la traduction (Divalto par défaut).
Indice
Variable numérique (valeur par défaut = 0). L'indice permet de distinguer deux libellés identiques dans le dictionnaire. Les libellés extraits de la fonction Translate ne sont présents qu'une seule fois dans le dictionnaire. Si un même libellé doit être traduit de plusieurs façons, l'indice permet de les distinguer.
EcranImp
1 = utiliser le code langue des affichages (valeur par défaut).
2 = utiliser le code langue des impressions.
CodeLangueLibelle
Code langue du libellé à traduire. (FR par défaut).
Retour
La fonction Translate retourne :
soit la chaîne traduite - soit la chaîne d'origine (si CodeLangueLibelle = Code_langue_de_l''utilisateur ou si la traduction n'a pas été trouvée dans le dictionnaire, ou en cas d'erreur).
Traduction des constantes Diva
Pour traduire une constante Diva, il faut appeler la fonction Translate. Cette fonction a deux effets :
elle permet l'extraction du libellé et son ajout au dictionnaire
elle effectue la traduction proprement dite au moment de l'exécution.
Exemple 1 :
MessageBox("Le fichier des clients est absent"," ")
devient :
MessageBox(Translate("Le fichier des clients est absent")," ")
Exemple 2 :
MessageBox("Le fichier " & tdf.name && " est absent"," ")
devient :
m = Translate("Le fichier %1 est absent")
m = Modify("%1",left(tdf.Name),m)
MessageBox(m,' ')
ou, en plus condensé :
MessageBox(Modify("%1",left(tdf.Name),Translate("Le fichier %1 est absent")),' ')
Remarque
L'écriture : MessageBox(Translate("Le fichier ") & tdf.name && Translate(" est absent")," ") n'est pas fausse mais elle va insérer deux libellés distincts dans le dictionnaire. Le traducteur devra donc traiter séparément "Le fichier" et "est absent". Pour fournir au traducteur des textes cohérents, il est conseillé d'utiliser des caractères "jocker" et de les substituer APRES la traduction.
Traduction d'un texte provenant d'un fichier
Lorsque le premier paramètre de la fonction Translate n'est pas une constante, cette fonction effectue uniquement la traduction (elle n'ajoute pas d'entrée au dictionnaire). Translate recherche la chaîne dans le dictionnaire et retourne la chaîne traduite.
Exemple :
Hseek(tdf,art,'A' & NumErr) ; recherche dans le fichier
m = Translate(art) ; traduction
m = Modify("%1",left(tdf.Name),m) ; substitution
Remarque
Les fonctions Diva Fdate, FdateDh, Sdate et SdateDh tiennent compte du paramétrage de la langue. Elles comportent un nouveau paramètre leur permettant d'ignorer le paramétrage de la langue.
Pour les champs multilingues (description de l'article par ex.) il faut utiliser la fonction TranslateData.
Traduction du dictionnaire
La traduction peut se faire avec le programme xTranslate.dhop. Dans ce cas, il faut installer Harmony sur le poste de la personne en charge de la traduction.
Sinon, avec l'import et l'export Tableur, il est possible de créer un fichier Tableur contenant les libellés à traduire et d'importer ce fichier une fois les traductions effectuées.
Voir xTranslate.dhop.
Compilation du dictionnaire
Une fois le dictionnaire traduit, il reste à le compiler.
La compilation se fait par le bouton “COMPILER” de xTranslate.dhop.
Le nom du fichier objet est déduit automatiquement du nom du fichier source en changeant l'extension en .dhot.
Paramétrage système
Pour voir le résultat de la traduction, il faut :
ajouter le paramètre CheminLangues dans divalto.ini (avec l'utilitaire xDivaltoMajIni)
créer ou modifier le fichier TranslateParams.txt.
Voir Mise en place des dictionnaires compilés
Vérification des boîtes
La taille des libellés est variable d'une langue à l'autre. Xwin propose des outils pour vérifier que les libellés placés dans les masques ne sont pas tronqués.
Chargez votre projet dans Xwin. Le choix <Outils><Traduction><Choisir un code langue> vous permet de sélectionner un code langue. Tous les libellés sont maintenant affichés dans la langue choisie. Le nom du dictionnaire dans lequel se fait la recherche est précisé au niveau des paramètres du projet.
Vérifier la taille des boîtes
Le menu <Outils><Vérifier la taille des boîtes> vous permet de vérifier la taille des boîtes pour : - la page courante, - le masque courant, - tout un répertoire.
Xwin vérifie toutes les boîtes avec le code langue sélectionné. Ensuite, vous pouvez vous déplacer d'objet en objet par <F4>.
Corriger la taille des boîtes
Les boîtes peuvent être agrandies manuellement, mais Xwin propose un choix permettant d'étendre au maximum les boîtes des objets sélectionnés.
Le choix <Edition><Etendre les boîtes au maximum> calcule la taille maximale des boîtes. A la fin de l'opération d'agrandissement, les poignées sont positionnées uniquement sur les objets qui ont été agrandis.
Le choix <Edition><Annuler déplacement/taille> permet d'annuler les modifications. De manière générale, Xwin permet d'annuler (undo) et de refaire (redo) les opérations de changement de taille et de déplacement.
Exécution de l'application
Pour voir enfin le résultat final des opérations, il reste à sélectionner un code langue et à lancer l'exécution de l'application.
Pour sélectionner un code langue, cliquez avec le bouton droit sur l'icône Divalto de la zone de notification (Traybar). Vous pouvez également sélectionner le code langue Windows par <Démarrer><Paramètres><Panneau de configuration><Options régionales et linguistiques>.
Voir Mise en place des dictionnaires compilés Choix du code langue
Pilotage de Xwin pour la mise à jour des dictionnaires
La génération initiale ou la mise à jour des dictionnaires de traduction est une opération demandant des interventions dans Xwin et aussi dans l'outil de traduction xtranslate.dhop.
Ces opérations doivent de plus être répétées pour chaque langue dans laquelle on souhaite traduire l'ERP.
Pour minimiser les opérations manuelles, l'ensemble de ces opérations peut désormais être automatisé par un pilotage de ces outils.
Un fichier paramètre contient les commandes de pilotage et Xwin est lancé en passant le nom du fichier en paramètre.
Exemple de fichier paramètre :
;---------------------------------------------------------------------------------------------
; Ligne de commande de Xwin
; Xwin7.exe -action translate -param fichier_parametre -project nom_du_projet -profile nom_du_profil -output fichier_sortie
; exemple : Xwin7.exe -action translate -param pilotagetrad.txt -project "/system74/sources/diva/system_7.dhpt" -profile debug
;
; par défaut le fichier de sortie est /divalto/sys/xwin_output.txt
;---------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------
; première partie : extraction des libellés et injection dans le dictionnaire de référence
; ce sont les paramètres de la boite de dialogue de Xwin
;---------------------------------------------------------------------------------------------
[extraire]
; repertoire des fichiers à examiner
repertoire_origine=/divalto/erp207/sources
; code langue et code page du dictionnaire de référence
code_langue_origine="FR"
code_page=0
; nom du dictionnaire de référence
dico_langue_origine=/divalto/divaltolanguage7/InfinitySurchargeLangue.dhfi
; effacements
effacement_complet=0
effacement_liens=0
;fichier paramètres complémentaire
;fichier_param=/divalto//divaltolanguage7/paramtrad.txt
; programme Diva exécuté avant l'extraction
;diva_avant=divaavant
; extraire uniquement les libellés qui ne figurent pas dans ce dictionnaire (surcharge)
;dico_base=/divalto/divaltolanguage7/InfinityLangue.dhfi
; injecter les libellés même s'il y a eu des erreurs pendant l'extraction
continuer_si_erreur=1
;---------------------------------------------------------------------------------------------
; Seconde partie : mise à jour (ou création) des dictionnaires de langues
; dictionnaire,code_langue,code_page
;---------------------------------------------------------------------------------------------
[mettreajour]
dico=/divalto/divaltolanguage7/InfinitySurchargeLangue_en.dhfi,EN,0
dico=/divalto/divaltolanguage7/InfinitySurchargeLangue_de.dhfi,DE,0
dico=/divalto/divaltolanguage7/InfinitySurchargeLangue_it.dhfi,IT,0
; la derniere ligne doit se terminer par un CRLF
xTranslate.dhop
L'utilitaire xTranslate.dhop a pour objet :
d'effectuer la saisie des traductions
de créer et mettre à jour les dictionnaires en langues étrangères
de compiler les dictionnaires.
xTtranslate permet à la personne chargée des traductions de visualiser les masques parallèlement à la saisie des traductions. De plus, les masques visualisés peuvent s'afficher avec les libellés d'origine ou avec les libellés traduits.
xTranslate.dhop est un programme Diva et, pour l'utiliser, il faut donc avoir installé Divalto sur le poste de travail. Pour que le traducteur puisse visualiser le contexte, il faut également que l'ensemble des sources soit installé et accessible avec les chemins implicites courants.
S'il n'est pas possible d'installer Divalto sur le poste du traducteur, il faudra utiliser les fonctions d'import et d'export Tableur.
Il est recommandé de lire préalablement les chapitres Architecture et Etapes pour créer un dictionnaire.
L'écran de xTtranslate
La zone "Filtrage des lignes affichées" vous permet de sélectionner les lignes sur lesquelles vous désirez travailler.
La zone "Propositions" contient les différentes traduction que vous avez déjà effectuées pour ce libellé. Rappelons qu'un libellé peut se trouver plusieurs fois dans le dictionnaire, puisque pour chaque occurrence de ce libellé dans les masques, il y a une entrée dans le dictionnaire. L'option "Propager les saisies" permet de ne saisir qu'une seule fois la traduction pour un même texte.
Etats et filtrage
Un libellé peut avoir trois états :
A traduire
A réviser
Terminé
Lorsqu'une traduction est saisie, l'état passe automatiquement à "Terminé".
Le bouton “METTRE LA LIGNE A ‘REVISER’” permet de changer l'état de la ligne courante ou des lignes sélectionnées.
Les groupes de radio-boutons "Types" et "Etat" permettent de filtrer les lignes affichées dans le tableau.
Les libellés à traduire sont répartis en trois catégories :
les libellés provenant des masques (textes, bulles, en-tête de colonnes, etc.)
les libellés Diva (fonction Translate, libellés provenant de fichiers tels que les menus ou les messages d'erreur)
les libellés provenant des dictionnaires de multi-choix.
Remarque
Le bouton “PREFIXE” permet de filtrer les libellés en fonction de leur provenance (nom du fichier d'origine).
Fonctions d'édition
Principe général
Le principe de la saisie est extrêmement simple. Le programme se positionne sur la première ligne du tableau, vous saisissez la traduction du libellé (validation par la touche <Entrée>) et le programme passe automatiquement au libellé suivant.
<Ctrl+D> permet de recopier le texte en langue de base dans la zone de saisie.
<Ctrl+N> permet de mettre la ligne à l'état Terminé mais sans traduire la ligne. Cela permet de laisser des libellés non traduits dans le dictionnaire.
Attention, l'ascenseur du tableau ne reflète pas le nombre de lignes réelles. Le tableau est chargé au fur et à mesure des besoins.
Déplacements
Lorsque vous êtes sur la zone de saisie, les touches fléchées permettent de se déplacer dans le tableau.
Le bouton “PROCHAIN NON TERMINE” permet de se déplacer à la prochaine ligne non terminée.
Clic dans le tableau
Si vous cliquez dans le tableau des libellés, vous pouvez sélectionner plusieurs lignes (Shift + clic, Ctrl + clic).
Vous pouvez alors : - affecter la même traduction à toutes ces lignes - changer l'état des lignes (avec le bouton <Mettre ligne à réviser>).
La touche <Echap> vous permet de revenir au mode de saisie initial.
Tri des colonnes
En cliquant sur un en-tête de colonne, il est possible de trier le tableau sur le contenu d'une colonne.
Attention, le tri ne concerne que les lignes déjà chargées dans le tableau. A partir du moment ou un tri est demandé, le tableau ne se remplit plus. Pour revenir au mode normal de fonctionnement, il faut demander le rafraîchissement de l'écran par le bouton “RAFRAICHIR L’ECRAN” ..
Le bouton <Charger toutes les lignes> permet de charger toutes les lignes en mémoire. Cela peut être une opération longue, mais c'est toujours plus rapide que de garder le doigt sur la touche <Pg-Down>.
Compteurs
Le choix <Compteurs> du menu <Outils> affiche une fenêtre de statistiques sur l'avancement des travaux.
Caractères spéciaux dans les libellés
Les libellés à traduire peuvent contenir des caractères spéciaux (ou jockers) qu'il convient de garder.
Ces caractères (ou groupes de caractères) peuvent-être déplacés mais doivent toujours être présents dans le libellé traduit.
Table des caractères spéciaux :
%x (x = un caractère) | Le groupe ne doit pas être modifié. | Fichier %s réservé | ||||||
{N} (N = entier) | Le groupe ne doit pas être modifié. | Tableau {0} inconnu dans la page {1} du fichier masque {2} | ||||||
{N%x} (N = entier, x = un caractère) | Le groupe ne doit pas être modifié. | Le chemin {1%s} n'existe pas | ||||||
$N (N = entier) | Le groupe ne doit pas être modifié. | $1 $6 est incompatible avec |
|
| Remplacer par $5 $6 ? |
|
| Ersetzen mit $5 $6 ? |
---|---|---|---|---|---|---|---|---|
* | * | Le caractère | marque un saut de ligne dans le texte. Il doit être conservé à sa place. | $1 erreur(s) en remplacement de composant | Vérifiez le livre de bord | .Logbuch prüfen. | ||
\x (x = un caractère) | Le groupe ne doit pas être modifié. | Aide &contextuelle\tShift F1 |
Fonction de recherche / Filtrage
Recherche de libellés
La fonction de recherche permet de chercher un texte soit dans les libellés en langue de base, soit dans les libellés étrangers.
Les caractères "jocker" de la recherche sont % pour une suite de caractères quelconque, _ pour un seul caractère quelconque.
Par défaut, la recherche distingue les minuscules et les majuscules. Vous pouvez demander à ne pas tenir compte de la casse, mais la recherche devient beaucoup plus longue.
Après une recherche, le tableau est trié sur la colonne "A traduire". Pour revenir au mode normal de fonctionnement, il faut demander le rafraîchissement de l'écran.
Filtrage
Le bouton ““ permet de filtrer les libellés sur la colonne <Localisation>. Les libellés sont donc filtrés d'après le nom de fichier d'où ils proviennent.
Exemple : gt permet d'afficher uniquement les libellés contenus dans les fichiers dont le nom commence par les caractères gt.
Le filtre est actif lors de la recherche de libellés et lors de la propagation des traductions
Remarque : le filtrage n'est pas accessible lorsque le choix Tous du groupe-radio Types est sélectionné.
Exemples
Code client% | Recherche tous les libellés commençant par "Code client". |
%client% | Recherche de tous les libellés contenant "client". Cette recherche sera longue (une dizaine de secondes) car elle oblige à la lecture de tout le fichier. |
Propagation des traductions
Un même libellé en langue de base peut être présent de nombreuses fois dans le dictionnaire.
Le choix <Propager les saisies> du menu <Options> permet de ne saisir qu'une seule fois la traduction d'un libellé.
Les zones à renseigner sont :
Propager les modifications | Active ou désactive la propagation des modifications. |
Propager pour | Indique quelles sont les lignes qui seront modifiées lors d'une propagation. |
Propager | Indique dans quel cas il faut propager une modification. - soit lors de la saisie d'une nouvelle traduction - soit lors de la modification d'une traduction. |
Nouvel état des lignes modifiées | Nouvel état affecté aux lignes modifiées par la propagation. |
Le nombre de lignes modifiées après chaque saisie est affiché.
Remarques
Les lignes marquées Terminées ne sont jamais modifiées par une propagation.
La validation d'une traduction par <F12> déclenche la propagation de la modification, même si l'option Propager les modifications n'est pas sélectionnée. Les règles de propagation sont les mêmes que pour la propagation automatique.
Affichage des masques
La synchronisation avec Xwin vous permet de voir le contexte dans lequel se trouvent les libellés que vous traduisez. De plus, vous pouvez immédiatement voir le résultat de votre travail en demandant à Xwin d'afficher les libellés traduits.
Le bouton “SYNCHRONISER” ouvre l'éditeur de masques Xwin et affiche le masque sur lequel vous travaillez. L'objet concerné par le libellé courant est encadré d'un trait noir.
Le bouton “TEXTE TRADUIT” vous permet de voir les libellés traduits dans l'éditeur Xwin. Si le dictionnaire ouvert dans xtranslate est un dictionnaire partiel (créé à partir de masques de surcharge), vous ne voyez par défaut que les libellés traduits dans le dictionnaire courant. Le menu <Options><Affichage des traductions dans Xwin> vous permet de spécifier un dictionnaire dans lequel les libellés non trouvés dans le dictionnaire courant seront cherchés. Il s'agit ici d'une entrée dans le fichier paramètres (divalto par exemple). Voir Mise en place des dictionnaires compilés.
Attention : Xwin aura les implicites de la tâche courante. Il faut donc que l'utilisateur qui exécute Xtranslate.dhop ait les implicites permettant d'accéder aux masques et aux dictionnaires.
Remarque :
Par défaut les masques sont ouverts en lecture-seule et ne peuvent donc être modifiés. Le droit d'effectuer des modifications nécessite le code de confidentialité HTR.
Import / Export Tableur
L'export est accessible par le choix <Exporter vers un fichier Tableur> du menu <Outils>.
Les paramètres de l'export Tableur sont :
Type d'export | |
Texte original - texte étranger | L'export se fait sur deux colonnes, la première contenant le texte en langue de base, la seconde contenant la traduction. Ce type d'export est utilisé si le traducteur désire travailler dans un fichier Tableur plutôt que d'utiliser Xtranslate. |
en vue d'une réintégration des traductions | Ce type d'export est utilisé pour exporter les traductions dans un fichier Tableur pour en vérifier l'orthographe, puis les réintégrer dans le dictionnaire. Ce type d'export doit être réintégré en utilisant le choix <Réintégrer un fichier Tableur>. |
Fichier Tableur | Nom du fichier Tableur à créer. |
Dictionnaire Etranger | Nom du dictionnaire à exporter. |
Dictionnaire complémentaire | Nom d'un dictionnaire étranger mais dans une autre langue. Cela permet de mettre dans le fichier Tableur les traductions effectuées dans une autre langue, ce qui peut simplifier le travail du traducteur. |
Préfixes | Liste de préfixes séparés par le caractère ; |
Exporter les lignes marquées | Permet de choisir les lignes à exporter. En cas de mise à jour d'un produit, il est inutile de mettre les libellés déjà traduits dans le fichier Tableur. |
L'import Tableur est acessible par le choix <Importer des traductions depuis un fichier Tableur> du menu <Outils>.
Les paramètres de l'import Tableur sont :
Fichier Tableur | Nom du fichier Tableur à importer. |
Dictionnaire à mettre à jour | Dictionnaire étranger dans lequel les traductions vont être importées. |
Ignorer le premier caractère | Permet d'ignorer le premier caractère de tous les libellés. |
Numéro de la colonne en langue de base | Colonne contenant les libellés en langue de base. |
Numéro de la colonne Etranger | Colonne contenant les libellés étrangers. |
Nombre de lignes à ignorer au début | Si les premières lignes contiennent des commentaires, il faut les ignorer. |
Modifier les lignes marquées | Permet de spécifier quelles sont les entrées du dictionnaires à traiter. |
Etat des lignes traduites | Nouvel état des lignes pour lesquelles une traduction est importée. |
Préfixes | Liste de préfixes séparés par le caractère ; |
Importer les textes d'un autre dictionnaire dans un dictionnaire de référence
Cet outil permet de copier des textes en langue de base d'un dictionnaire à un autre.
Exemple d'utilisation :
La traduction du libellé "Critères de sélection" ne vous convient pas. Avec cet outil, vous allez intégrer à votre dictionnaire toutes les occurrences du libellé "Critères de sélection". Puis vous allez mettre à jour votre dictionnaire étranger et saisir la nouvelle traduction.
Les paramètres à saisir sont :
Dictionnaire référence | Nom du dictionnaire de départ (celui qui contient les libellés à copier). |
Dictionnaire à mettre à jour | Nom du dictionnaire qui reçoit les libellés. |
Texte à importer | Texte à importer. |
Traitement des caractères % et _ | Indique si les caractères % et _ doivent être considérés comme des "jockers" : % = suite quelconque de caractères _ = un caractère quelconque. |
Distinguer minuscules/majuscules | Indique s'il faut tenir compte de la casse lors de la recherche des libellés. |
Voir également Importer les traductions d'un autre dictionnaire Import / Export Tableur
Importer les traductions d'un autre dictionnaire
Cet outil permet d'importer les traductions effectuées d'un dictionnaire à un autre. Cette nécessite d'avoir le dictionnaire source des traductions que l'on désire importer.
Les paramètres à saisir sont :
Dictionnaire référence | Nom du dictionnaire de départ. |
Dictionnaire à mettre à jour | Nom du dictionnaire qui reçoit les traductions déjà effectuées. |
Remarques :
Les lignes marquées "A faire" sont automatiquement modifiées.
Pour les lignes marquées "Terminées" ou "A réviser", deux cas se présentent :
la traduction du libellé est la même --> pas de problème, il n'y a rien à faire
la traduction du libellé est différente dans les deux dictionnaires --> le programme demande alors ce que vous voulez faire.
Voir également
Importer les textes d'un autre dictionnaire dans un dictionnaire de référence
Import / Export Tableur
Importer les traductions depuis un dictionnaire en version 6 d'Harmony
Utiliser des traductions d'autres dictionnaires objets
Importer les traductions depuis un dictionnaire en version 6 d'Harmony
Cet outil permet de récupérer les traductions contenues dans un dictionnaire créé en version 6 d'Harmony.
Tel que, un dictionnaire créé en version 6 ne peux être utilisé en version 7, à cause de certaines différences entre les générations 6 et 7 :
l'extension des masques écran a changé (dhoe --> dhof)
les libellés des onglets sont en majuscules en version 7
les raccourcis clavier ont changé, le caractère & est remplacé par le caractère _
Les paramètres à saisir sont :
Dictionnaire de départ | Nom du dictionnaire de départ. C'est un dictionnaire traduit avec les libellés de la version 6. |
Dictionnaire à mettre à jour | Nom du dictionnaire créé à partir de la version 7 qui reçoit les traductions |
Voir également
Importer les traductions d'un autre dictionnaire
Exporter des traductions dans un fichier texte
Cet outil permet d'exporter des traductions dans un fichier texte.
Exemple d'utilisation :
Un fichier contenant des libellés a été injecté dans le dictionnaire de traduction. Après la traduction, vous voulez récupérer les traductions de ces libellés dans un fichier. C'est le cas du fichier contenant les messages de la boîte de connexion à Divalto, car ces messages sont forcément stockés dans un fichier sur le poste client.
Les paramètres à saisir sont :
Fichier sortie | Nom du fichier texte qui reçoit les traductions |
Dictionnaire étranger | Dictionnaire à lire |
Préfixes | Liste de préfixes séparés par le caractère ; |
Exporter les lignes marquées | Permet de choisir les lignes à exporter en fonction de leur état de traduction. |
Remarque
Il est conseillé que le fichier des libellés soit de la forme num=libellé. Dans ce cas, le résultat est trié dans le même ordre, même en cas de modifications du fichier d'origine et donc de nouvelles traductions.
Exemple :
0=Langue d'origine
1=Défaut
2=Même langue que l'affichage
3=Connexion à Divalto
Voir également
Import / Export Tableur
Recréer un dictionnaire de référence à partir d'un dictionnaire étranger
Si un dictionnaire de référence a été effacé ou recréé par erreur, il ne peut plus servir à mettre à jour des dictionnaires étrangers existants.
Cet outil permet de recréer un dictionnaire de référence perdu ou cassé à partir d'un dictionnaire étranger.
Les paramètres à saisir sont :
Dictionnaire étranger | Nom du dictionnaire de départ . |
Dictionnaire de référence | Nom du dictionnaire de référence à recréer. |
Modifier un libellé traduit pour toutes ses occurrences
Cet outil permet de modifier une traduction pour toutes les entrées du dictionnaire.
Cela permet de corriger rapidement une erreur de traduction. Cette méthode est instantanée alors que la propagation des modifications est beaucoup plus lente.
Les paramètres à saisir sont :
Texte étranger à remplacer | Texte à modifier. |
Nouvelle traduction | Nouvelle traduction du texte. |
Voir également Propagation des traductions
Utiliser des traductions d'autres dictionnaires objets
Le but visé par ce choix est de ne pas retraduire dans un dictionnaire des libellés déjà traduits dans un autre dictionnaire dont on ne dispose pas des sources. Ceci s'obtient en créant un lien entre le libellé non traduit et le libellé déjà traduit.
On évite ainsi l'obligation de retraduire certains libellés, en étant capable d'utiliser leur traduction contenue dans un autre dictionnaire objet.
Exemple :
A l'occasion du développement d'une surcharge de l'ERP Divalto, vous êtes amenés à créer des masques spécifiques. Ces masques font référence à un dictionnaire spécifique.
De nombreux libellés présents dans ces nouveaux masques sont identiques à des libellés présents dans les masques standard de Divalto.
A l'exécution, les traductions des libellés des masques standard sont recherchées dans le dictionnaire objet « standard » de Divalto. De même, les traductions des libellés de vos masques spécifiques sont recherchées dans votre dictionnaire objet spécifique.
Comme vous ne disposez pas des sources du dictionnaire standard, il vous est impossible d'intégrer les traductions standard dans votre dictionnaire spécifique. Ceci vous oblige normalement à retraduire dans votre dictionnaire les libellés communs déjà traduits en standard, ce qui est évidemment une opération redondante et une perte de temps considérable.
Une autre solution consiste à utiliser, depuis votre dictionnaire objet spécifique, les traductions du dictionnaire objet standard.
Contenu de E : Source contenant les traductions spécifiques et les liens vers C pour les libellés non retraduits.
Le choix réalise les opérations suivantes, pour chaque libellé non traduit de E :
Recherche de toutes les occurrences de ce libellé dans A (1a) et de leur traduction respective dans C (1b).
Si ce libellé existe dans A, un lien est établi vers le libellé traduit. La compilation du source E crée le lien entre F et C (2).
Remarque : Si le libellé fait l'objet de plusieurs traductions différentes, le choix de la traduction à considérer est laissé à l'utilisateur (voir le paragraphe « Résolution des ambiguïtés »)
A l'exécution, la traduction des libellés non retraduits est cherchée dans F et trouvée dans C, grâce aux liens établis entre F et C.
Mise en oeuvre du programme
Saisie des paramètres
Il faut spécifier la liste des dictionnaires contenant les traductions des libellés standards (c'est à dire des traductions que vous désirez réutiliser)
On indique pour chaque dictionnaire :
Le chemin et le nom du dictionnaire de référence (A)
Le chemin et le nom du dictionnaire objet contenant les traductions (C)
Attention : si le dictionnaire objet est soumis à licences d'utilisation, ce choix vérifie que la licence est disponible.
Résolution des ambiguïtés
Au fur et à mesure de la recherche, xtranslate constitue une liste des libellés pour lesquels il existe plusieurs traductions différentes. A la fin du traitement, il propose à l'utilisateur d'effectuer l'arbitrage pour choisir la meilleure traduction.
L'utilisateur peut choisir une des traductions proposées ou laisser le texte sans traduction si aucune traduction ne convient. Il pourra ensuite saisir sa propre traduction.
Fin du traitement
A la fin du traitement, les libellés à traduire, pour lesquels une traduction a été trouvée, sont marqués « Terminés ». Une étoile dans la colonne « R » indique que la traduction du texte se trouve dans un autre dictionnaire. La colonne du tableau «Localisation de la redirection » contient le nom du dictionnaire et les autres informations habituelles de localisation (par exemple,, le nom du masque, le numéro de la page et l'id de l'objet contenant la traduction).
Saisie dans Xtranslate
Attention : les textes provenant d'autres dictionnaires objets ne peuvent pas être recopiés ou modifiés. Pour saisir une autre traduction pour un libellé, vous devez cliquer sur le bouton <Changer>. Dans ce cas, le lien avec le dictionnaire objet est effacé.
Affichage des masques traduits à l'exécution
Les dictionnaires spécifique (F) et standard (C) doivent être déclarés dans le fichier paramètre des langues TranslateParams.txt. Les libellés du dictionnaire spécifique ayant une traduction standard seront recherchés dans le dictionnaire standard grâce au lien vers celui-ci.
Pour...
Ne traduire qu'une partie d'un dictionnaire
Utilisez le bouton Préfixe pour filtrer les libellés en fonction de leur fichier d'origine.
Voir Fonction de recherche / Filtrage
Créer un dictionnaire qui surcharge un dictionnaire existant
Lors de la création du dictionnaire de référence, il faut cocher la case : "Extraire uniquement les libellés qui ne figurent pas dans ce dictionnaire (surcharge)".
Utilisez cette méthode pour vos masques de surcharge. Seuls les libellés ajoutés ou modifiés dans les masques seront extraits.
Voir Création d'un dictionnaire de référence
Récupérer dans mon dictionnaire des traductions se trouvant dans un autre dictionnaire
Voir Importer les traductions d'un autre dictionnaire
Modifier une traduction pour l'ensemble du dictionnaire
Voir Modifier un libellé traduit pour toutes ses occurrences
Voir Propagation des traductions
Intégrer dans mon dictionnaire des libellés d'un autre dictionnaire afin d'en modifier la traduction
Voir Importer les textes d'un autre dictionnaire dans un dictionnaire de référence
Utiliser des traductions d'un dictionnaire objet dont je n'ai pas la source
Voir Utiliser des traductions d'autres dictionnaires objets
Vérifier que les traductions ne sont pas tronquées (boîtes trop petites dans Xwin)
Voir Vérification des boîtes
J'ai le message : Le fichier xxxxx n'est pas issu du dictionnaire yyyyy
Soit vous vous êtes trompé de dictionnaire, soit le dictionnaire de référence a été recréé (donc effacé) par erreur.
Voir : Recréer un dictionnaire de référence à partir d'un dictionnaire étranger
Paramétrage
Voir
Mise en place des dictionnaires compilés
Fichier TranslateParams.txt
Fichier TranslateParams.txt
Le fichier TranslateParams est au format HMP.
Il contient trois types de lignes :
<Comment> | Ligne de commentaire |
<LanguageCode> | Déclaration et description d'un code langue. |
<LangageCode> | Code de la langue. |
<Description> | Description de la langue. Ce texte apparaît dans le menu de sélection des langues. |
<DateType> | LE (ou FR) : Les dates sont affichées / saisies au format jj/mm/aaaa (Little Endian). ME (ou US) : Les dates sont affichées / saisies au format mm/jj/aaaa (Middle Endian). BE : Les dates sont affichées / saisies au format aaaa/mm/jj (Big Endian). LE, ME et BE : à partir de la version 7.1a. |
<DecimalSeparator> | Caractère utilisé pour séparer les décimales de la partie entière d'une donnée numérique : |
<ThousandSeparator> | Le cas échéant, caractère utilisé pour séparer les milliers dans une donnée numérique : |
<DateSeparator> | Caractère utilisé pour séparer les éléments d'une date ("/" par défaut). |
<CodePage> | |
<HelpCode> | Code langue par défaut pour les aides. Ce code langue est utilisé si le fichier d'aides (.chm ou .hlp) n'existe pas avec le code langue courant. Voir Fichiers d'aides. |
Cas particulier de la langue d'origine : Voir le paragraphe correspondant en fin de rubrique. |
<Dictionnary> | Déclaration d'un dictionnaire pour un code langue. |
<Dictionnary> | Nom du dictionnaire. |
<Language> | Code langue. |
<File> | Nom du fichier dictionnaire (.dhot). Il peut y avoir plusieurs fois <File>, puisque à un dictionnaire peuvent correspondre plusieurs fichiers. |
Remarques :
Le fichier contient également des paramètres concernant la traduction des champs multilingues. Cette fonctionnalité fait l'objet d'un livre à part.
Les fonctions Diva Fdate, FdateDh, Sdate et SdateDh tiennent compte du paramétrage de la langue. Elles comportent un nouveau paramètre leur permettant d'ignorer le paramétrage de la langue.
Exemple :
<Comment>Liste des langues a proposer
<LanguageCode>CS<Description>Tcheque<DateType>FR<HelpCode>EN
<LanguageCode>DE<Description>Allemand<DateType>FR<HelpCode>EN
<Comment>Liste des dictionnaires
<Dictionnary>Divalto
<Language>DE
<File>DivaltoU_de.dhot
<File>Divalto_de.dhot
<Dictionnary>Divalto
<Language>CS
<File>Divalto_cs.dhot
<Dictionnary>Harmony
<Language>DE
<File>Harmony_de.dhot
<Dictionnary>Harmony
<Language>CS
<File>Harmony_cs.dhot
Dans cet exemple, le fichier contient les informations suivantes :
Deux langues étrangères sont disponibles, le Tchèque et l'Allemand. Les deux langues utilisent les dates au format jj/mm/aaaa Si les fichiers d'aides ne sont pas disponibles avec le code langue courant, il seront recherchés avec le code langue EN.
Le dictionnaire Divalto pour la langue Allemande est composée de deux fichiers : DivaltoU_de.dhot et Divalto_de.dhot.
Le dictionnaire Divalto pour la langue Tchèque est composé d'un seul fichier : Divalto_cs.dhot.
Le dictionnaire Harmony pour la langue Allemande est composé d'un seul fichier : Harmony_de.dhot.
Le dictionnaire Harmony pour la langue Tchèque est composé d'un seul fichier : Harmony_cs.dhot.
Cas particulier de la langue d'origine
Dans la liste des langues qui lui est proposée, l'utilisateur peut sélectionner le choix "Langue d'origine". Dans ce cas, le code langue vaut conventionnellement "XXXX" et Harmony ne procède à aucune traduction.
Toutefois, la langue de traduction n'est pas le seul paramètre spécifié par la balise <LanguageCode>. A partir de la version 7.1a, il est possible de faire figurer dans le fichier TranslateParam.txt une ligne <LanguageCode> avec le code langue "XXXX". Ceci permet, lorsque l'utilisateur sélectionne "Langue d'origine" et tout en n'opérant pas de traduction sur les masques, d'appliquer les autres paramètres (type de date, séparateur décimal, séparateur des milliers, code page). Remarque : Le paramètre <Description> est ici ignoré (le texte affiché dans le menu de sélection des langues est toujours "Langue d'origine"). Le paramètre <HelpCode> ne s'applique qu'aux fichiers d'aides de la version 6 (.chm ou .hlp).
Exemple :
<LanguageCode>XXXX<Description><DateType>BE<DecimalSeparator>point<ThousandSeparator>comma
Voir également Mise en place des dictionnaires compilés Liste des codes langues
Choix du code langue
Par défaut, Harmony utilise le code langue défini au niveau de l'utilisateur Windows. Ce code langue est positionné par le choix <Options régionales et linguistiques> du Panneau de configuration.
Pour sélectionner une autre langue :
cliquez avec le bouton droit de la souris sur l'icône Divalto de la zone de notification (Traybar)
les choix <Langues affichage> et <Langues impression> vous permet de sélectionner une langue (les choix de ce menu proviennent du fichier TranslateParams.txt). Pour les impressions, la valeur par défaut indique qu'il faut prendre la même langue que pour les affichages à l'écran.
le choix <Langue d'origine> permet d'annuler la traduction, tous les éléments sont affichés ou imprimés dans la langue d'origine.
Le changement de langue est effectif au moment ou vous lancez une nouvelle tâche. Les programmes en cours ne sont pas affectés par le changement de langue.
En cas de lancement d'un programme par Xwin, vous devez aussi décharger Xwin et le relancer pour que le programme appelé tienne compte du nouveau code langue.
Rappel
Toutes les fonctionnalités multilingues ne sont effectives que si divalto.ini est correctement configuré (avec l'utilitaire xDivaltoMajIni). Voir Mise en place des dictionnaires compilés.
Remarque
L'instruction Diva SetLanguageCode permet de positionner le code langue par programme.
Fichiers d'aides
Harmony prend également en charge l'affichage des aides dans différentes langues.
Pour connaître les détails de mise en oeuvre de cette fonctionnalité, consultez le livre "Installation des fichiers d'aides" et en particulier les rubriques Configuration des serveurs d'aides et d'applications, Centralisation des fichiers d'aides de la version 6 et Installation des aides sur un site multi-langue.
Liste des codes langues
af | Afrikaans |
sq | Albanais |
ar | Arabe |
ar-sa | Arabe (Arabie saoudite) |
ar-iq | Arabe (Irak) |
ar-eg | Arabe (Égypte) |
ar-ly | Arabe (Libye) |
ar-dz | Arabe (Algérie) |
ar-ma | Arabe (Maroc) |
ar-tn | Arabe (Tunisie) |
ar-om | Arabe (Oman) |
ar-ye | Arabe (Yémen) |
ar-sy | Arabe (Syrie) |
ar-jo | Arabe (Jordanie) |
ar-lb | Arabe (Liban) |
ar-kw | Arabe (Koweït) |
ar-ae | Arabe (E.A.U.) |
ar-bh | Arabe (Bahreïn) |
ar-qa | Arabe (Qatar) |
eu | Basque |
bg | Bulgare |
be | Biélorusse |
ca | Catalan |
zh | Chinois |
zh-tw | Chinois (Taïwan) |
zh-cn | Chinois (Chine) |
zh-hk | Chinois (région administrative spéciale de |
zh-sg | Chinois (Singapour) |
hr | Croate |
cs | Tchèque |
da | Danois |
nl | Néerlandais (Pays-Bas) |
nl-be | Néerlandais (Belgique) |
en | Anglais |
en-us | Anglais (États-Unis) |
en-gb | Anglais (Royaume-Uni) |
en-au | Anglais (Australie) |
en-ca | Anglais (Canada) |
en-nz | Anglais (Nouvelle-Zélande) |
en-ie | Anglais (Irlande) |
en-za | Anglais (Afrique du Sud) |
en-jm | Anglais (Jamaïque) |
en-bz | Anglais (Belize) |
en-tt | Anglais (île de la Trinité) |
et | Estonien |
fo | Féroïen |
fa | Farsi |
fi | Finnois |
fr | Français (France) |
fr-be | Français (Belgique) |
fr-ca | Français (Canada) |
fr-ch | Français (Suisse) |
fr-lu | francias luxo |
gd | Gaélique |
de | Allemand (Allemagne) |
de-ch | Allemand (Suisse) |
de-at | Allemand (Autriche) |
de-lu | Allemand (Luxembourg) |
de-li | Allemand (Liechtenstein) |
el | Grec |
he | Hébreu |
hi | Hindi |
hu | Hongrois |
is | Islandais |
in | Indonésien |
it | Italien (Italie) |
it-ch | Italien (Suisse) |
ja | Japonais |
ko | Coréen |
lv | Letton |
lt | Lituanien |
mk | Macédonien (ex rép. yougoslave de) |
ms | Malais (Malaisie) |
mt | Maltais |
no | Norvégien (bokmål) |
no | Norvégien (nynorsk) |
pl | Polonais |
pt-br | Portugais (Brésil) |
pt | Portugais (Portugal) |
rm | Rhéto-roman |
ro | Roumain |
ro-mo | Roumain (Moldavie) |
ru | Russe |
ru-mo | Russe (Moldavie) |
sr | Serbe (cyrillique) |
sr | Serbe (latin) |
sk | Slovaque |
sl | Slovène |
sb | Sorabe |
es | Espagnol (traditionnel) |
es-mx | Espagnol (Mexique) |
es | Espagnol (alphabet international) |
es-gt | Espagnol (Guatemala) |
es-cr | Espagnol (Costa Rica) |
es-pa | Espagnol (Panama) |
es-do | Espagnol (république dominicaine) |
es-ve | Espagnol (Venezuela) |
es-co | Espagnol (Colombie) |
es-pe | Espagnol (Pérou) |
es-ar | Espagnol (Argentine) |
es-ec | Espagnol (Équateur) |
es-cl | Espagnol (Chili) |
es-uy | Espagnol (Uruguay) |
es-py | Espagnol (Paraguay) |
es-bo | Espagnol (Bolivie) |
es-sv | Espagnol (Salvador) |
es-hn | Espagnol (Honduras) |
es-ni | Espagnol (Nicaragua) |
es-pr | Espagnol (Porto Rico) |
sx | Sutu |
sv | Suédois |
sv-fi | Suédois (Finlande) |
th | Thaï |
ts | Tsonga |
tn | Tswana |
tr | Turc |
uk | Ukrainien |
ur | Ourdou |
vi | Vietnamien |
xh | Xhosa |
ji | Yiddish |
zu | Zoulou |