Gestion des traductions

De MappingDoc
Révision datée du 21 novembre 2018 à 16:10 par imported>Rdal
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Objectifs du Document

Ce document explique comment traduire automatiquement, à l’aide d’un dictionnaire, les blocs WRITE utilisés dans vos reports. Ce document reprend aussi les spécifications du fichier utilisé pour la traduction.

Pré-requis

Niveau de Connaissance Produit Requis pour utiliser ce document : MAPREPORT : Débutant

Versions : MAPREPORT 2.0.3.4 ou supérieur et dernière version du binaire MAP_858

Marche à suivre

Nous utiliserons un simple bloc WRITE dans lequel les chaines de caractères seront en Anglais. Le but sera d’obtenir ce même bloc, en Français, lors de l’exécution du Report sur la machine de production.

Détail du bloc Write dans MAPREPORT : Les libellés sont en anglais. Mise en place de la traduction Le dictionnaire

La traduction n’est possible que si vous disposez du fichier adéquat sur le serveur de production :

  • Répertoire …\MappingWindows\Import\lang sous Windows
  • Répertoire /apps/mapping/import/lang sous UNIX
  • Répertoire /home/mapping/justify/lang dans l’IFS d’un iSeries

Les noms des fichiers sont libres, mais vous devez respecter la cohérence entre le nom dans le répertoire import et celui que vous allez utiliser dans MAPREPORT.


L’extension utilisée est .lang. Nous avons utilisé le fichier english.lang, le but étant, dans notre report, de traduire les libellés depuis l’anglais vers le français.

Remarque : Le contenu du fichier peut être Unicode ou non. Utilisez la bonne version de MAPREPORT ! N’oubliez pas non plus la variable d’environnement [UNICODE] dans votre fichier de configuration Mapping (Unix ou Windows), ou le paramètre UCS2 pour une plateforme iSeries.

Gestion du Dictionnaire - MappingTranslate.exe / MappingTranslateU.exe Ces outils sont installés dans le répertoire de MAPREPORT.

Remarque : Si votre fichier contient des caractères non-Unicode (du français vers n’importe quelle langue latine, par exemple), utilisez le programme MappingTranslate.exe. Servez-vous de MappingTranslateU.exe dans le cas contraire.

Dans le programme, par l’option Fichier > Préférences, choisissez les pages de code :

  • Cas non Unicode :
  • Si vous devez utiliser l’Unicode, vérifiez :

Que vous utilisez bien le programme MappingTranslateU.exe Que vous avez sélectionné les préférences suivantes : Ouvrez le fichier english.lang correspondant dans MappingTranslate :

L’interface affiche l’ensemble des chaines d’origine et leur traduction : Pour insérer une traduction, cliquez sur le bouton ou double-cliquez sur la dernière ligne vide dans l’interface. Entrez alors la chaine d’origine et sa traduction. Pour modifier une traduction, faites un clic dans la zone à modifier (valable pour les 2 colonnes, Original et Translation). Pour supprimer une ligne, cliquez simplement sur son numéro et en faisant un clic droit, choisissez Supprimer :

Edition Manuelle des fichiers de traduction

Les fichiers peuvent également être modifiés dans n’importe quel éditeur de texte.

  • Détail du contenu du fichier texte english.lang :

La structure du fichier doit être la suivante :

Chaine en entrée+Tabulation+Chaine en Sortie

Il doit comporter autant de lignes que nécessaire.

Mise en œuvre dans MAPREPORT

Instructions SetLanguage() et TranslateWrite()

Elle reste très simple, il suffit de rajouter un calcul pour appeler la fonction SetLanguage avec le nom du fichier de langue à utiliser, sans l’extension .lang. Le programme ira chercher automatiquement le fichier correspondant dans le répertoire voulu du serveur de production. Ici, il s’agit du dictionnaire english.lang

Il convient ensuite d’indiquer au moteur de faire la traduction des blocs en utilisant l’instruction

TranslateWrite() :

A l’exécution de ce report, le système essaiera de trouver les correspondances entre les chaines des locs Write et le fichier de langue utilisé. Vous pouvez changer de langue à la volée simplement, en insérant de nouveau une instruction SetLanguage dans le report.

Billing Address<TAB>Adresse de Facturation
Delivery Address<TAB>Adresse de Livraison
Products details<TAB>Produits
Quantity<TAB>Quantité
Unit Price<TAB>Prix Unitaire
Amount($)<TAB>Montant en USD

Résultat :

Les chaines pour lesquelles une correspondance est trouvée sont remplacées lors de l’exécution (dans le rectangle bleu). En revanche, les chaines pour lesquelles aucune correspondance n’est trouvée restent en l’état (dans le rectangle rouge). Cas de l’Unicode : les chaines Unicode sont prises en charge lors de la traduction.

Bloc Write de MAPREPORT :

Chaine de traduction dans le dictionnaire :

Résultat lors de l’aperçu dans MAPREPORT :

Insertion automatique dans le dictionnaire

Une variable d’exécution de MAPREPORT permet d’insérer automatiquement les libellés non trouvés dans le dictionnaire.

Voici comment la définir :

Cette variable, en tant que paramètre d’entrée, admet la valeur 0 ou 1. Si elle est positionnée à 0, aucun ajout ne sera effectué dans le fichier. Positionnée à 1, toute chaine non reconnue sera insérée. Voici le contenu du fichier english.lang, modifié par MAPREPORT si l’on utilise ce paramètre comme suit : (le nom du report est TRAD)

maprunrpt -rptname:TRAD -param:DB.MAPPING_APPENDLANG=1

Fichier english.lang résultant : 1

1 Vous remarquerez que même la ligne comportant les tirets comme séparateurs a été rajoutée.

Billing Address<TAB>Adresse de Facturation
Delivery Address<TAB>Adresse de Livraison
Products details<TAB>Produits
Quantity<TAB>Quantité
Unit Price<TAB>Prix Unitaire
Amount($)<TAB>Montant en USD
Customer N°:<TAB>Customer N°:
Invoice :<TAB>Invoice :
Email:<TAB>Email:
Date : <TAB>Date :


<TAB>--------------------------


Ce paramètre permet ainsi de ne pas se soucier de recenser toutes les chaines, MAPREPORT va le faire pour vous. Il ne vous reste plus qu’à faire les traductions nécessaires dans le fichier de langue concerné.

Traduction de chaines de caractères dans les calculs

Vous pouvez aussi traduire des chaines de caractères dans les calculs. Prenons le cas de deux chaines de caractères :

  • DB.Str_English
  • DB.Str_Français

Dans la première, nous forçons la valeur à ‘Hello’ et nous demanderons sa traduction dans la chaine Str_Français.

Bien entendu, Hello et Bonjour ont été rajoutés dans le fichier english.lang : Exemple 1 : 2 calculs sont insérés dans le Report

  • Initialisation de la chaine avec la valeur ‘Hello’ :
  • Traduction en utilisant la fonction MapTranslate :

La fonction MapTranslate renvoie la traduction de la chaine passée en paramètre en utilisant le dictionnaire paramétré par la fonction SetLanguage().

Bloc Write :

Résultat dans l’aperçu :

Exemple 2 : Traduction ‘à la volée’ d’une chaine de caractères sans utiliser de variable intermédiaire.

Détail du calcul :