Principe de la traduction
Sommaire |
Introduction
Le besoin d'utiliser la Ligne 1000 dans différentes langues a été exprimé. La réponse apportée consiste en l'utilisation de dictionnaires.
Les dictionnaires
Définitions
Un message est une chaine de caractère applicative susceptible d'être présentée à l'utilisateur. Par applicative on entend relatif à l'application, c'est à dire que les données métier ne sont pas concernées (table des pays...)
Un dictionnaire est un ensemble de couples de messages = l'entrée en langue de développement (le Français) et sa correspondance traduite dans la langue désirée. Un dictionnaire est propre à une langue.
Les dictionnaires sont chargés lors de l'exécution : plusieurs utilisateurs de langues différentes peuvent utiliser le produit simultanément.
Types de dictionnaires
On distingue 4 types de dictionnaires
Source
Ils contiennent :
- Le code source des Outils
- Les écrans des outils
- Le code source du projet
Interface
Ils contiennent :
- Les écrans projet
- Les états projet
Menu
Ils contiennent :
- Les menus de l'application
Documentation
Ils contiennent :
- La documentation du modèle projet (au format Rtf)
Modes de dictionnaires
Les dictionnaires fournis peuvent être modifiés par le client.
On distingue ainsi :
Le mode original
Il s'agit d'un dictionnaire construit par SAGE (AdminLevel=99)
Le mode delta
Il s'agit d'un dictionnaire qui n'est pas construit par SAGE (AdminLevel<>99)
Voir (La personnalisation des dictionnaires) pour le détail du fonctionnement.
Natures de dictionnaires
Un dictionnaire peut être lié à une application ou à un paquet(objet).
Dictionnaire objet
Il s'agit des dictionnaire obtenus par extraction (ou par recopie d'un dictionnaire objet). On pourrait qualifier ces dictionnaires d'élémentaires, ils ne sont pas exploités directement pour traduire les messages à destination de l'utilisateur.
Dictionnaire application
Ce sont eux qui sont utilisés pour traduire les messages à destination de l'utilisateur.
Il sont crées par fusion des dictionnaires objets (ou par recopie d'un dictionnaire application). Une application est composée de modules, eux mêmes composés de paquets. Le dictionnaire application rassemble les dictionnaires des paquets qui le compose.
Il s'agit d'un dictionnaire de travail
Attention, si on effectue des traductions sur le dictionnaire application, puis qu'on le reconstruit sans avoir actualisé les traductions on perd les traductions effectuées
Remarque : il n'y a pas de doublons de messages dans un dictionnaire, ainsi, si un même message est présent dans plusieurs paquets et que les traductions diffèrent, une seule traduction (la première rencontrée lors de la fusion) sera retenue pour le dictionnaire application.
Modèle
L'extraction des messages crée des dictionnaires pour chaque paquet du référentiel. On pourrait qualifier ces dictionnaires d'élémentaires, ils ne sont pas exploités directement pour traduire les messages à detination de l'utilisateur.
Ensuite, ces dictionnaires sont fusionnés pour donner les dictionnaires applications. Ce sont eux qui sont utilisés pour traduire les messages à destination de l'utilisateur.
Origine des messages
Les messages outils
Les messages outils proviennent des fichiers sources (*.pas) des écrans (*.dfm). Dans les fichiers sources, on rerpère les messages à extraire par la fonction _TP
Les messages outils nécessitent un paramétrage pour être extraits
- Paramétrage base de registre qui indique les chemins vers le dossier de compilation
- Dossier de compilation en paquet
- Accès aux sources
Les messages projets
Les messages projets sont extraits des paquets du référentiel. Dans un paquet, on trouve toutes les informations relatives au modèle objet. ...
Mécanisme de la traduction
Dans une application
Lorsqu'un utilisateur se connecte à une application, si sa langue (paramétrée dans l'administration) n'est pas le Français, on cherche les quatre types dictionnaires applications de cette langue.
Par la suite, dès un message doit être présenté à cet utilisateur, il est traduit à la volée grâce au dictionnaire adéquat.
Concrètement, l'application n'est pas traduite, elle est toujours en Français, la traduction s'opère juste avant la restitution visuelle du message.
C'est pourquoi, si un message est absent du dictionnaire, il apparait en Français.
Remarque : Certains messages systèmes ne sont pas de notre ressort, il s'agit des fenêtres 'oui/non' par exemple, qui dépendent de la langue du système d'opération
Hors d'une application
Il s'agit d'un problème car on ne connait pas à priori la langue de l'utilisateur et surtout, on est pas connecté à la base de données pour charger les dictionnaires.
La réponse apportée consiste à copier des dictionnaires en local.
Lorsque l'utilisateur se connecte à l'application, on regarde la langue du poste paramétrée dans la base de registre. Si celle-ci n'est pas le Français, alors on copie les dictionnaires de l'application administration en local.
En effet, tous les messages hors applications sont des messages outils, l'application administration est l'application minimale pour avoir ces messages (on doit donc construire le dictionnaire de l'application administration si on veut avoir les messages traduits)
Lors du prochain chargement, les dictionnaires sont chargés dès le lancement de l'exécutable : les messages sont traduits.