Administration des dictionnaires (traduction)

De Wiki1000
(Différences entre les versions)
(Actualisation des dictionnaires objet)
Ligne 1 : Ligne 1 :
 
=Avertissement préalable=
 
=Avertissement préalable=
 +
Le comportement de la traduction peut différé suivant que le programme est utilisé dans un contexte Sage et dans un contexte Partenaire ou Client.
  
Le comportement de l'outil de traduction s'adressant à deux populations distinctes (les équipes SAGE et les revendeurs/clients).
+
Dans un contexte SAGE, on peut extraire les messages des sources outils et consulter la liste des erreurs rencontrées lors de l'extraction.
Dans le cas d'une version '''non commerciale''', son comportement est affecté par le positionnement des variables de la base de registre ''AdminLevel'' et ''RunTimeLevel''.
+
  
 
Pour utiliser la traduction dans un contexte SAGE, les '''deux''' variables doivent avoir la valeur '''99'''
 
 
Pour utiliser la traduction dans un contexte client ou partenaire, aucune des '''deux''' variables ne doit avoir la valeur '''99'''
 
 
 
Dans un contexte SAGE, on peut extraire les messages des sources outils, voir la liste des erreurs rencontrées lors de l'extraction.
 
 
Les partenaires et les client bénéficient en revanche du mécanisme de dictionnaire DELTA.
 
Les partenaires et les client bénéficient en revanche du mécanisme de dictionnaire DELTA.
  
 
=Glossaire=
 
=Glossaire=
  
===Les types de dictionnaires : ===
+
===Les types de dictionnaires===
 
+
'''Dictionnaire source''' : Dictionnaire de traduction des messages provenant du code source et des écrans Outils ainsi que du code source issu des objets métiers.
+
 
+
'''Dictionnaire interface''' : Dictionnaire de traduction des messages provenant des écrans et des états.
+
  
'''Dictionnaire menu''' : Dictionnaire de traduction des messages provenant des menus des applications.
+
*Dictionnaire source
 +
:Dictionnaire de traduction des messages provenant du code source et des écrans Outils ainsi que du code source issu des objets métiers.
  
'''Dictionnaire documentation''' : Dictionnaire de traduction des messages provenant de la documentation du modèle projet.
+
*Dictionnaire interface
 +
:Dictionnaire de traduction des messages provenant des écrans et des états.
  
----
+
*Dictionnaire menu
 +
:Dictionnaire de traduction des messages provenant des menus des applications.
  
===A qui sont liés ces dictionnaires :===
+
*Dictionnaire documentation
 +
:Dictionnaire de traduction des messages provenant de la documentation du modèle projet.
  
'''Dictionnaire objet''' : Dictionnaire des messages en provenance d'un objet de type système (librairie bpl ou exe), métiers (exemple GenEnvironement) ou menu. Ce type de dictionnaire est obtenu dans la phase d'extraction des messages.
+
===Rattachement des dictionnaires===
'''Un dictionnaire objet peut être de type source, interface, ou documentation'''
+
*Dictionnaire objet
 +
:Dictionnaire des messages en provenance d'un objet de type système (librairie bpl ou exe), métiers (exemple GenEnvironement) ou menu. Ce type de dictionnaire est obtenu dans la phase d'extraction des messages. Un dictionnaire objet peut être de type source, interface, ou documentation.
  
'''Dictionnaire application''' : Dictionnaire des messages pour une application L1000 (exemple Application Trésorerie). Ce dictionnaire est construit à partir des dictionnaires objet des objets utilisés dans l'application.
+
*Dictionnaire application
 +
:Dictionnaire des messages pour une application L1000 (exemple Application Trésorerie). Ce dictionnaire est construit à partir des dictionnaires objet des objets utilisés dans l'application.
  
 
Il est important de voir les dictionnaires application comme des dictionnaires temporaires de travail qui ont l'avantage de regrouper les messages et d'éliminer les messages dupliqués de l’ensemble des dictionnaires objet.
 
Il est important de voir les dictionnaires application comme des dictionnaires temporaires de travail qui ont l'avantage de regrouper les messages et d'éliminer les messages dupliqués de l’ensemble des dictionnaires objet.
En conséquence, chaque fois qu’un dictionnaire objet est créé ou modifié (exemples : mise à jour d’une nouvelle version, création d’une nouvelle interface, modification de menus,…) la construction (ou plutôt la re-construction) des dictionnaires application s’avère nécessaire pour intégrer ces modifications.
 
  
'''Un dictionnaire application peut être de type source, interface, documentation ou menu'''
+
En conséquence, chaque fois qu’un dictionnaire objet est créé ou modifié (exemples : mise à jour d’une nouvelle version, création d’une nouvelle interface, modification de menus,…) la re-construction des dictionnaires application s’avère nécessaire pour intégrer ces modifications.
  
----
+
Un dictionnaire application peut être de type source, interface, documentation ou menu
  
===L'origine du dictionnaire : ===
+
===Origine d'un dictionnaire===
 +
*Dictionnaire Sage
 +
:Dictionnaire fournit par la société Sage. Ce type de dictionnaire est non modifiable car une mis à jour de l'application peut le remplacer.
  
'''Dictionnaire Sage''' : Dictionnaire fournit par la société Sage. Ce type de dictionnaire est non modifiable car une mis à jour de l'application peut le remplacer.
+
*Dictionnaire utilisateur ou partenaire
 +
:Dictionnaire crée par les utilisateurs de la L1000.
  
'''Dictionnaire utilisateur ou partenaire''' : Dictionnaire crée par les utilisateurs de la L1000.
+
*Dictionnaire delta
 +
:Dictionnaire contenant les différences par rapport à un dictionnaire de traduction. Les dictionnaires delta sont créés en essayant de modifier un dictionnaire Sage.
  
'''Dictionnaire delta''' : Dictionnaire contenant les différences par rapport à un dictionnaire de traduction. Les dictionnaires delta sont créés en essayant de modifier un dictionnaire Sage.
+
===Langue initiale du conteneur===
 +
Il s'agit de la langue initiale du programme avant connexion à la base master.  
  
----
+
En effet, les dictionnaires L1000 sont stockés dans la base de données ; donc avant connexion à la base, la langue des dictionnaires utilisés pour la traduction de l'écran de l'application est déterminée par cette constante enregistrée dans la base des registres :
  
==='''Langue initiale (du conteneur)''': ===
+
HKEY_CURRENT_USER\Software\Sage\Ligne 1000\Preferences\Translate\Language
La langue initiale de l’application (conteneur)avant connexion à la base master.
+
En effet, les dictionnaires L1000 sont stockés dans la base de données ; donc avant connexion à la base, la langue des dictionnaires utilisés pour la traduction de l'écran de l'application est déterminée par cette constante enregistrée dans la base des registres : ''HKEY_CURRENT_USER\Software\Sage\Ligne 1000\Preferences\Translate\Language''.
+
  
 
Cette valeur est mise à jour de deux manières :  
 
Cette valeur est mise à jour de deux manières :  
- lorsque ,dans la console d'administration, on déclare une langue  
+
#lorsque ,dans la console d'administration, on déclare une langue comme "langue initiale"
comme "langue initiale"
+
#lorsque on rentre dans une application avec un utilisateur dont la langue n'est pas Française, ainsi, lors de la connexion  suivante, la boite de connexion sera dans la bonne langue.
- lorsque on rentre dans une application avec un utilisateur dont  
+
la langue n'est pas Française, ainsi, lors de la connexion  suivante,  
+
la boite de connexion sera dans la bonne langue.
+
  
 
=Rappel sur le principe de la traduction=
 
=Rappel sur le principe de la traduction=
 +
Une Application métier est constituée de modules.
  
'''Une application est constituée de modules'''.
 
 
Pour chaque module on peut associer des dictionnaires qui contiennent les messages du module et leur traduction.  
 
Pour chaque module on peut associer des dictionnaires qui contiennent les messages du module et leur traduction.  
Dans une langue, le dictionnaire de l'application est la fusion des dictionnaires  
+
 
des modules de l'application.  
+
Dans une langue, le dictionnaire de l'application est la fusion des dictionnaires des modules de l'application.  
 +
 
 
Quand l'utilisateur choisit une langue, le dictionnaire associé est chargé en mémoire. Les écrans et les messages sont traduits au moment de leur affichage.
 
Quand l'utilisateur choisit une langue, le dictionnaire associé est chargé en mémoire. Les écrans et les messages sont traduits au moment de leur affichage.
  
Pour des raisons de performances et de modularité, pour une langue donnée, les dictionnaires sont divisés en trois parties : le dictionnaire ''interface'' construit avec les messages contenus dans les écrans et états, le dictionnaire ''source'' construit avec les messages écrits dans les objets métiers et les outils développés en Delphi, et le dictionnaire ''menu'' avec les entrées dans le menu principal de l'application.
+
Pour des raisons de performances et de modularité, pour une langue donnée, les dictionnaires sont divisés en trois parties :  
 +
* le dictionnaire ''d'interface'' construit avec les messages contenus dans les écrans et états.
 +
* le dictionnaire ''source'' construit avec les messages écrits dans les objets métiers et le source du programme.
 +
* le dictionnaire ''menu'' avec les entrées dans le menu principal de l'application.
  
 
Les dictionnaires sont modifiables par les utilisateurs finaux qui pourront ainsi améliorer le message traduit.
 
Les dictionnaires sont modifiables par les utilisateurs finaux qui pourront ainsi améliorer le message traduit.
Normalement, les dictionnaires seront fournis ensemble avec les modules. Le développement d'un module pourra impliquer des changements dans les dictionnaires associés. Chaque déploiement d'une nouvelle version pourrait donc écraser la version antérieure d'un dictionnaire. En conséquence, pour éviter l'écrasement des modifications faites par les utilisateurs, un dictionnaire ''delta'' est créé contenant ces modifications, le dictionnaire fourni restant ainsi inchangé. Le dictionnaire delta s'applique comme un patch sur le dictionnaire fourni. Si un même message est contenu dans le dictionnaire ''original''  et le dictionnaire delta, c'est la traduction delta qui est prioritaire.
 
  
  En résumé, chaque module pourra avoir, pour chaque langue de traduction  
+
Normalement, les dictionnaires seront fournis ensemble avec les modules. Le développement d'un module pourra impliquer des changements dans les dictionnaires associés.
trois dictionnaires fournis, menu, source et interface.
+
 
 +
Chaque déploiement d'une nouvelle version pourrait donc écraser la version antérieure d'un dictionnaire. En conséquence, pour éviter l'écrasement des modifications faites par les utilisateurs, un dictionnaire ''delta'' est créé contenant ces modifications, le dictionnaire fourni restant ainsi inchangé. Le dictionnaire delta s'applique comme un patch sur le dictionnaire fourni. Si un même message est contenu dans le dictionnaire ''original'' et le dictionnaire delta, c'est la traduction delta qui est prioritaire.
 +
 
 +
En résumé, chaque module pourra avoir, pour chaque langue de traduction trois dictionnaires fournis, menu, source et interface.
  
 
Chaque dictionnaire fourni pourra être modifié. Ces modifications seront enregistrées dans les trois dictionnaires delta d'un module. Les trois dictionnaires d'une application (source, menu et interface) seront construits en fusionnant les dictionnaires des objets et menus associés à cette application.
 
Chaque dictionnaire fourni pourra être modifié. Ces modifications seront enregistrées dans les trois dictionnaires delta d'un module. Les trois dictionnaires d'une application (source, menu et interface) seront construits en fusionnant les dictionnaires des objets et menus associés à cette application.
Ligne 86 : Ligne 86 :
  
 
{{#images:image2.png|Outils_de_traduction}}
 
{{#images:image2.png|Outils_de_traduction}}
 
  
 
Une rubrique "Langues" dans la racine permet de définir les langues utilisées. Le menu contextuel de l'élément "Langues" permet d'ajouter, supprimer des langues et de définir la langue initiale du conteneur.
 
Une rubrique "Langues" dans la racine permet de définir les langues utilisées. Le menu contextuel de l'élément "Langues" permet d'ajouter, supprimer des langues et de définir la langue initiale du conteneur.
  
 
{{#images:image3.png|Outils_de_traduction}}
 
{{#images:image3.png|Outils_de_traduction}}
 
  
 
La langue initiale (cf glossaire) du conteneur définit la langue de l'application avant la connexion à la base et peut être différente d'un ordinateur à un autre.
 
La langue initiale (cf glossaire) du conteneur définit la langue de l'application avant la connexion à la base et peut être différente d'un ordinateur à un autre.
Ligne 98 : Ligne 96 :
  
  
'''Une fois la langue déclarée, il s'agit de construire les dictionnaires. '''
+
Une fois la langue déclarée, il s'agit de construire les dictionnaires.
 
+
Cette construction peut s'affectuer de deux manières :
+
  
- par extraction des messages
+
Cette construction peut s'effectuer de deux manières :
  On parcours l'ensemble des sources de messages dont on dispose afin
+
  d'extraire les messages. Lorsqu'on ne dispose pas de ces sources
+
  (unités outils par exemple), on s'appuie sur la langue de référence paramétrée.
+
  Cette méthode est utile pour le processus de traduction SAGE et
+
  pour les partenaires qui créent de nouveaux messages.
+
  
- par copie des messages d’un dictionnaire équivalent dans une autre langue.
+
#Par extraction des messages
  On s'appuie uniquement sur langue de référence.
+
:On parcours l'ensemble des sources de messages dont on dispose afin d'extraire les messages. Lorsqu'on ne dispose pas de ces sources (unités outils par exemple), on s'appuie sur la langue de référence paramétrée. Cette méthode est utile pour le processus de traduction SAGE et pour les partenaires qui créent de nouveaux messages.
  Cette méthode est utile si on souhaite simplement ajouter une nouvelle
+
  langue et la traduire sans rien modifier à  l'application.
+
  (tout les messages dont on a besoin sont déjà extraits).
+
  
 +
#Par copie des messages d’un dictionnaire équivalent dans une autre langue.
 +
:On s'appuie uniquement sur langue de référence.Cette méthode est utile si on souhaite simplement ajouter une nouvelle langue et la traduire sans rien modifier à  l'application. (tout les messages dont on a besoin sont déjà extraits).
  
 
La méthode par copie est plus rapide que la méthode par extraction.
 
La méthode par copie est plus rapide que la méthode par extraction.
Ligne 121 : Ligne 111 :
  
 
==Menu associé aux nœuds « Traduction ».==
 
==Menu associé aux nœuds « Traduction ».==
 
 
 
Le menu contextuel de l'élément "Traduction" permet la construction de ces dictionnaires.
 
Le menu contextuel de l'élément "Traduction" permet la construction de ces dictionnaires.
 
  
 
{{#images:image6.png|Outils_de_traduction}}
 
{{#images:image6.png|Outils_de_traduction}}
  
 +
*Construire une langue
 +
:Cette fonction crée tous les dictionnaires associés à l’objet en utilisant soit la méthode par extraction soit la méthode par copie .
  
===Construire une langue : ===
+
*Supprimer une langue  
 +
:Cette fonction supprime tous les dictionnaires associés à l’objet.
  
Cette fonction crée tous les dictionnaires associés à l’objet en utilisant soit la méthode par extraction soit la méthode par copie .
+
*Importer un nouveau dictionnaire  
 
+
:Cette fonction importe un dictionnaire à partir d’un fichier dictionnaire . Les fichiers dictionnaires peuvent être sauvegardés par la fonction « sauvegarder sous » du menu associé aux dictionnaires.
===Supprimer une langue :===
+
 
+
Cette fonction supprime tous les dictionnaires associés à l’objet.
+
 
+
===Importer un nouveau dictionnaire :===
+
 
+
Cette fonction importe un dictionnaire à partir d’un fichier dictionnaire . Les fichiers dictionnaires peuvent être sauvegardés par la fonction « sauvegarder sous » du menu associé aux dictionnaires.
+
  
 
Les nœuds « Traduction » associés aux « Applications » possède une fonction supplémentaire :
 
Les nœuds « Traduction » associés aux « Applications » possède une fonction supplémentaire :
Ligne 145 : Ligne 128 :
 
{{#images:image7.png|Outils_de_traduction}}
 
{{#images:image7.png|Outils_de_traduction}}
  
===Mise à jour :===
+
*Mise à jour  
 
+
: Après une mise à jour de la Ligne 1000, des nouveaux dictionnaires de référence (fournis par SAGE France) sont déployés. Les dictionnaires, dans une langue étrangère, des objets et des applications peuvent alors être obsolètes.  
Après une mise à jour de la Ligne 1000, des nouveaux dictionnaires de référence (fournis par SAGE France) sont déployés. Les dictionnaires, dans une langue étrangère, des objets et des applications peuvent alors être obsolètes.  
+
  
 
La technique pour actualiser ces dictionnaires consiste en trois étapes :
 
La technique pour actualiser ces dictionnaires consiste en trois étapes :
  
- Actualiser d’abord les dictionnaires des objets dans la langue concernée
+
#Actualiser d’abord les dictionnaires des objets dans la langue concernée à partir du dictionnaire de l’application.  
  à partir du dictionnaire de l’application. Cette opération actualise  
+
:Cette opération actualise la traduction dans chaque dictionnaire d’objet associé à l’application les messages. ( Fonction'' « Actualiser les dictionnaires des objets »'' du menu associé aux nœuds « Traduction » des « Applications »  )
  la traduction dans chaque dictionnaire d’objet associé à l’application les messages.
+
  ( Fonction'' « Actualiser les dictionnaires des objets »''  
+
  du menu associé aux nœuds « Traduction » des « Applications »  )
+
  
- Reconstruction des dictionnaires des objets par extraction ou copie à partir  
+
#Reconstruction des dictionnaires des objets par extraction ou copie à partir des dictionnaires de la langue de référence(français).
  des dictionnaires de la langue de référence(français).
+
:Cette étape ajoute dans les dictionnaires étrangers des objets les nouveaux messages et marque comme supprimés les messages qui n’existent plus. ( Fonction ''« Construire une langue »'' du menu associé aux nœuds « Langues » )
  Cette étape ajoute dans les dictionnaires étrangers des objets les nouveaux  
+
  messages et marque comme supprimés les messages qui n’existent plus.
+
  ( Fonction ''« Construire une langue »'' du menu associé aux nœuds « Langues » )
+
  
- Fusion des dictionnaires étrangers des objets dans un nouveau dictionnaire d’application.
+
#Fusion des dictionnaires étrangers des objets dans un nouveau dictionnaire d’application.
  Après cette dernière étape, le dictionnaire de l’application doit être en phase
+
:Après cette dernière étape, le dictionnaire de l’application doit être en phase avec l’application mais les nouveaux messages ne sont pas encore traduits. ( Fonction ''« Construire une langue »'' du menu associé aux nœuds « Traduction » des « Applications » )
  avec l’application mais les nouveaux messages ne sont pas encore traduits.  
+
  ( Fonction ''« Construire une langue »'' du menu associé  
+
  aux nœuds « Traduction » des « Applications » )
+
  
 
==Menu associé à chaque dictionnaire.==
 
==Menu associé à chaque dictionnaire.==
 
 
Le menu contextuel de chaque dictionnaire permet de modifier le dictionnaire (traduire les messages) via une interface graphique, d'exporter les messages dans un fichier texte, d'importer les traductions à partir d'un fichier texte ou un fichier dictionnaire ('*.dut, *.dud') ou d'importer tous les messages et leur traduction à partir d'un fichier dictionnaire. Le dictionnaire peut être complètement remplacé à partir d’un fichier et il peut être sauvegardé dans un fichier.
 
Le menu contextuel de chaque dictionnaire permet de modifier le dictionnaire (traduire les messages) via une interface graphique, d'exporter les messages dans un fichier texte, d'importer les traductions à partir d'un fichier texte ou un fichier dictionnaire ('*.dut, *.dud') ou d'importer tous les messages et leur traduction à partir d'un fichier dictionnaire. Le dictionnaire peut être complètement remplacé à partir d’un fichier et il peut être sauvegardé dans un fichier.
 
  
 
{{#images:image8.png|Outils_de_traduction}}
 
{{#images:image8.png|Outils_de_traduction}}
Ligne 178 : Ligne 149 :
 
Figure 7 Le menu contextuel d'un dictionnaire.
 
Figure 7 Le menu contextuel d'un dictionnaire.
  
===Traduire :===
+
*Traduire  
 
+
:Cette fonction appelle l’interface de traduction des messages.
Cette fonction appelle l’interface de traduction des messages.
+
 
+
===Supprimer :===
+
 
+
Cette fonction supprime le dictionnaire.
+
  
===Actualiser les dictionnaires des objets :===
+
*Supprimer
 +
:Cette fonction supprime le dictionnaire.
  
Cette fonction met à jour les traductions dans tous les autres dictionnaires. La traduction d’un message sera reporté dans tous les dictionnaires qui comporte le même message.
+
*Actualiser les dictionnaires des objets
 +
:Cette fonction met à jour les traductions dans tous les autres dictionnaires. La traduction d’un message sera reporté dans tous les dictionnaires qui comporte le même message.
  
 
'''Règle pour remplacer la traduction : '''
 
'''Règle pour remplacer la traduction : '''
Ligne 194 : Ligne 162 :
 
[[Image:Actualisation.jpg]]
 
[[Image:Actualisation.jpg]]
  
===Exporter les messages (Texte):===
+
*Exporter les messages (Texte)
 +
:Cette fonction exporte tous les messages, sans leur traduction, dans un fichier texte. Ce fichier peut être utilisé pour réaliser une traduction à l’extérieur du produit puis réimporté à l’aide de la fonction « Importer les traductions »
  
Cette fonction exporte tous les messages, sans leur traduction, dans un fichier texte. Ce fichier peut être utilisé pour réaliser une traduction à l’extérieur du produit puis réimporté à l’aide de la fonction « Importer les traductions »
+
*Exporter les traductions (Texte)
 +
:Cette fonction exporte tous les traductions dans un fichier texte. Ce fichier peut être utilisé pour réaliser une traduction ou correction à l’extérieur du produit puis réimporté à l’aide de la fonction « Importer les traductions »
  
===Exporter les traductions (Texte):===
+
*Importer les traductions (Texte)
 +
:Cette fonction importe les traduction d’un fichier texte.
  
Cette fonction exporte tous les traductions dans un fichier texte. Ce fichier peut être utilisé pour réaliser une traduction ou correction à l’extérieur du produit puis réimporté à l’aide de la fonction « Importer les traductions »
+
*Importer les messages (dictionnaire)
 +
:Cette fonction importe les traductions contenues dans un fichier dictionnaire. Les traductions qui se trouvent dans le dictionnaire importé remplacent et écrasent les traductions du dictionnaire.
  
===Importer les traductions (Texte)===
+
*Remplacer par …
 
+
:Cette fonction remplace la totalité du dictionnaire.  
Cette fonction importe les traduction d’un fichier texte.
+
 
+
===Importer les messages (dictionnaire) :===
+
 
+
Cette fonction importe les traductions contenues dans un fichier dictionnaire. Les traductions qui se trouvent dans le dictionnaire importé remplacent et écrasent les traductions du dictionnaire.
+
 
+
===Remplacer par …===
+
 
+
Cette fonction remplace la totalité du dictionnaire.
+
 
+
===Sauvegardez sous :===
+
 
+
Cette fonction sauvegarde le dictionnaire dans un fichier au format « dictionnaire ».
+
  
 +
*Sauvegardez sous
 +
:Cette fonction sauvegarde le dictionnaire dans un fichier au format « dictionnaire ».
  
 
== Construction des dictionnaires application==
 
== Construction des dictionnaires application==
Ligne 229 : Ligne 190 :
 
La traduction peut s'effectuer sur les dictionnaires objets et application cependant
 
La traduction peut s'effectuer sur les dictionnaires objets et application cependant
  
Il est conseillé de traduire les dictionnaires objets
+
{{tip|Il est conseillé de traduire les dictionnaires objets puis de les fusionner pour obtenir le dictionnaire application traduit.}}
 
+
puis de les fusionner pour obtenir le dictionnaire application traduit
+
 
+
  
 
Il existe deux modes d’utilisation permettant la traduction des messages :
 
Il existe deux modes d’utilisation permettant la traduction des messages :
  
1 : L'interface de traduction
+
#L'interface de traduction
 +
:Sur un dictionnaire donné, le menu contextuel '''Traduire'' permet d’afficher l’écran '''Traduction des messages'''. La traduction peut se faire directement dans cette interface
  
Sur un dictionnaire donné, le menu contextuel '''Traduire'' permet d’afficher l’écran '''Traduction des messages'''. La traduction peut se faire directement dans cette interface
+
#L'export de fichier messages
 
+
:Sur un dictionnaire donné , le menu contextuel '''Exporter les messages à traduire… '''permet de générer un fichier texte contenant tous les messages de l’application.
2 : L'export de fichier messages
+
 
+
Sur un dictionnaire donné , le menu contextuel '''Exporter les messages à traduire… '''permet de générer un fichier texte contenant tous les messages de l’application.
+
  
 
Sur ce même dictionnaire, le menu contextuel '''Traduire''' permet d’afficher l’écran '''Traduction des messages'''. A partir de cet écran '''Traduction des messages''', il est possible de filtrer la liste des messages de la grille (traduits, A confirmer, importés et supprimés) et d'extraire cette sélection en utilisant le menu contextuel '''Exporter les messages non filtrés'''. A titre d’exemple, cette fonction permet, en décochant préalablement le filtre "traduits", d’exporter uniquement les messages non encore traduits.  
 
Sur ce même dictionnaire, le menu contextuel '''Traduire''' permet d’afficher l’écran '''Traduction des messages'''. A partir de cet écran '''Traduction des messages''', il est possible de filtrer la liste des messages de la grille (traduits, A confirmer, importés et supprimés) et d'extraire cette sélection en utilisant le menu contextuel '''Exporter les messages non filtrés'''. A titre d’exemple, cette fonction permet, en décochant préalablement le filtre "traduits", d’exporter uniquement les messages non encore traduits.  
Ligne 252 : Ligne 208 :
 
Sur un dictionnaire donné, le menu contextuel '''Importer les messages à traduire… '''permet d’importer un fichier texte contenant tous les messages traduits.
 
Sur un dictionnaire donné, le menu contextuel '''Importer les messages à traduire… '''permet d’importer un fichier texte contenant tous les messages traduits.
  
Attention ! Il n’est plus possible de réintégrer un fichier texte lorsque :
+
{{warning|Il n’est plus possible de réintégrer un fichier texte lorsqu'une modification, une suppression ou un ajout a modifié le dictionnaire d’origine entre l’export et la réintégration. l’une des 2 premières ligne d’entête du fichier texte a été supprimée ou modifiée.}}
une modification, suppression ou ajout a modifié le dictionnaire d’origine entre l’export et la réintégration
+
 
l’une des 2 premières ligne d’entête du fichier texte a été supprimée ou modifiée.
+
{{warning|Ne modifier pas les 2 premières ligne d’entête du fichier texte.}}
  
 
===Actualisation des dictionnaires objet===
 
===Actualisation des dictionnaires objet===
 
 
Après avoir traduit les messages (par interface ou import) il est nécessaire de mettre à jour les autres dictionnaires objet.
 
Après avoir traduit les messages (par interface ou import) il est nécessaire de mettre à jour les autres dictionnaires objet.
  

Version du 30 juin 2011 à 13:11

Sommaire

Avertissement préalable

Le comportement de la traduction peut différé suivant que le programme est utilisé dans un contexte Sage et dans un contexte Partenaire ou Client.

Dans un contexte SAGE, on peut extraire les messages des sources outils et consulter la liste des erreurs rencontrées lors de l'extraction.

Les partenaires et les client bénéficient en revanche du mécanisme de dictionnaire DELTA.

Glossaire

Les types de dictionnaires

  • Dictionnaire source
Dictionnaire de traduction des messages provenant du code source et des écrans Outils ainsi que du code source issu des objets métiers.
  • Dictionnaire interface
Dictionnaire de traduction des messages provenant des écrans et des états.
  • Dictionnaire menu
Dictionnaire de traduction des messages provenant des menus des applications.
  • Dictionnaire documentation
Dictionnaire de traduction des messages provenant de la documentation du modèle projet.

Rattachement des dictionnaires

  • Dictionnaire objet
Dictionnaire des messages en provenance d'un objet de type système (librairie bpl ou exe), métiers (exemple GenEnvironement) ou menu. Ce type de dictionnaire est obtenu dans la phase d'extraction des messages. Un dictionnaire objet peut être de type source, interface, ou documentation.
  • Dictionnaire application
Dictionnaire des messages pour une application L1000 (exemple Application Trésorerie). Ce dictionnaire est construit à partir des dictionnaires objet des objets utilisés dans l'application.

Il est important de voir les dictionnaires application comme des dictionnaires temporaires de travail qui ont l'avantage de regrouper les messages et d'éliminer les messages dupliqués de l’ensemble des dictionnaires objet.

En conséquence, chaque fois qu’un dictionnaire objet est créé ou modifié (exemples : mise à jour d’une nouvelle version, création d’une nouvelle interface, modification de menus,…) la re-construction des dictionnaires application s’avère nécessaire pour intégrer ces modifications.

Un dictionnaire application peut être de type source, interface, documentation ou menu

Origine d'un dictionnaire

  • Dictionnaire Sage
Dictionnaire fournit par la société Sage. Ce type de dictionnaire est non modifiable car une mis à jour de l'application peut le remplacer.
  • Dictionnaire utilisateur ou partenaire
Dictionnaire crée par les utilisateurs de la L1000.
  • Dictionnaire delta
Dictionnaire contenant les différences par rapport à un dictionnaire de traduction. Les dictionnaires delta sont créés en essayant de modifier un dictionnaire Sage.

Langue initiale du conteneur

Il s'agit de la langue initiale du programme avant connexion à la base master.

En effet, les dictionnaires L1000 sont stockés dans la base de données ; donc avant connexion à la base, la langue des dictionnaires utilisés pour la traduction de l'écran de l'application est déterminée par cette constante enregistrée dans la base des registres :

HKEY_CURRENT_USER\Software\Sage\Ligne 1000\Preferences\Translate\Language

Cette valeur est mise à jour de deux manières :

  1. lorsque ,dans la console d'administration, on déclare une langue comme "langue initiale"
  2. lorsque on rentre dans une application avec un utilisateur dont la langue n'est pas Française, ainsi, lors de la connexion suivante, la boite de connexion sera dans la bonne langue.

Rappel sur le principe de la traduction

Une Application métier est constituée de modules.

Pour chaque module on peut associer des dictionnaires qui contiennent les messages du module et leur traduction.

Dans une langue, le dictionnaire de l'application est la fusion des dictionnaires des modules de l'application.

Quand l'utilisateur choisit une langue, le dictionnaire associé est chargé en mémoire. Les écrans et les messages sont traduits au moment de leur affichage.

Pour des raisons de performances et de modularité, pour une langue donnée, les dictionnaires sont divisés en trois parties :

  • le dictionnaire d'interface construit avec les messages contenus dans les écrans et états.
  • le dictionnaire source construit avec les messages écrits dans les objets métiers et le source du programme.
  • le dictionnaire menu avec les entrées dans le menu principal de l'application.

Les dictionnaires sont modifiables par les utilisateurs finaux qui pourront ainsi améliorer le message traduit.

Normalement, les dictionnaires seront fournis ensemble avec les modules. Le développement d'un module pourra impliquer des changements dans les dictionnaires associés.

Chaque déploiement d'une nouvelle version pourrait donc écraser la version antérieure d'un dictionnaire. En conséquence, pour éviter l'écrasement des modifications faites par les utilisateurs, un dictionnaire delta est créé contenant ces modifications, le dictionnaire fourni restant ainsi inchangé. Le dictionnaire delta s'applique comme un patch sur le dictionnaire fourni. Si un même message est contenu dans le dictionnaire original et le dictionnaire delta, c'est la traduction delta qui est prioritaire.

En résumé, chaque module pourra avoir, pour chaque langue de traduction trois dictionnaires fournis, menu, source et interface.

Chaque dictionnaire fourni pourra être modifié. Ces modifications seront enregistrées dans les trois dictionnaires delta d'un module. Les trois dictionnaires d'une application (source, menu et interface) seront construits en fusionnant les dictionnaires des objets et menus associés à cette application.

Gestion de la traduction

Menu associé aux Langues

La gestion des dictionnaires est accessible via la console d'administration.

image2.png

Une rubrique "Langues" dans la racine permet de définir les langues utilisées. Le menu contextuel de l'élément "Langues" permet d'ajouter, supprimer des langues et de définir la langue initiale du conteneur.

image3.png

La langue initiale (cf glossaire) du conteneur définit la langue de l'application avant la connexion à la base et peut être différente d'un ordinateur à un autre.

image4.png


Une fois la langue déclarée, il s'agit de construire les dictionnaires.

Cette construction peut s'effectuer de deux manières :

  1. Par extraction des messages
On parcours l'ensemble des sources de messages dont on dispose afin d'extraire les messages. Lorsqu'on ne dispose pas de ces sources (unités outils par exemple), on s'appuie sur la langue de référence paramétrée. Cette méthode est utile pour le processus de traduction SAGE et pour les partenaires qui créent de nouveaux messages.
  1. Par copie des messages d’un dictionnaire équivalent dans une autre langue.
On s'appuie uniquement sur langue de référence.Cette méthode est utile si on souhaite simplement ajouter une nouvelle langue et la traduire sans rien modifier à l'application. (tout les messages dont on a besoin sont déjà extraits).

La méthode par copie est plus rapide que la méthode par extraction.

image5.png

Menu associé aux nœuds « Traduction ».

Le menu contextuel de l'élément "Traduction" permet la construction de ces dictionnaires.

image6.png

  • Construire une langue
Cette fonction crée tous les dictionnaires associés à l’objet en utilisant soit la méthode par extraction soit la méthode par copie .
  • Supprimer une langue
Cette fonction supprime tous les dictionnaires associés à l’objet.
  • Importer un nouveau dictionnaire
Cette fonction importe un dictionnaire à partir d’un fichier dictionnaire . Les fichiers dictionnaires peuvent être sauvegardés par la fonction « sauvegarder sous » du menu associé aux dictionnaires.

Les nœuds « Traduction » associés aux « Applications » possède une fonction supplémentaire :

image7.png

  • Mise à jour
Après une mise à jour de la Ligne 1000, des nouveaux dictionnaires de référence (fournis par SAGE France) sont déployés. Les dictionnaires, dans une langue étrangère, des objets et des applications peuvent alors être obsolètes.

La technique pour actualiser ces dictionnaires consiste en trois étapes :

  1. Actualiser d’abord les dictionnaires des objets dans la langue concernée à partir du dictionnaire de l’application.
Cette opération actualise la traduction dans chaque dictionnaire d’objet associé à l’application les messages. ( Fonction « Actualiser les dictionnaires des objets » du menu associé aux nœuds « Traduction » des « Applications » )
  1. Reconstruction des dictionnaires des objets par extraction ou copie à partir des dictionnaires de la langue de référence(français).
Cette étape ajoute dans les dictionnaires étrangers des objets les nouveaux messages et marque comme supprimés les messages qui n’existent plus. ( Fonction « Construire une langue » du menu associé aux nœuds « Langues » )
  1. Fusion des dictionnaires étrangers des objets dans un nouveau dictionnaire d’application.
Après cette dernière étape, le dictionnaire de l’application doit être en phase avec l’application mais les nouveaux messages ne sont pas encore traduits. ( Fonction « Construire une langue » du menu associé aux nœuds « Traduction » des « Applications » )

Menu associé à chaque dictionnaire.

Le menu contextuel de chaque dictionnaire permet de modifier le dictionnaire (traduire les messages) via une interface graphique, d'exporter les messages dans un fichier texte, d'importer les traductions à partir d'un fichier texte ou un fichier dictionnaire ('*.dut, *.dud') ou d'importer tous les messages et leur traduction à partir d'un fichier dictionnaire. Le dictionnaire peut être complètement remplacé à partir d’un fichier et il peut être sauvegardé dans un fichier.

image8.png

Figure 7 Le menu contextuel d'un dictionnaire.

  • Traduire
Cette fonction appelle l’interface de traduction des messages.
  • Supprimer
Cette fonction supprime le dictionnaire.
  • Actualiser les dictionnaires des objets
Cette fonction met à jour les traductions dans tous les autres dictionnaires. La traduction d’un message sera reporté dans tous les dictionnaires qui comporte le même message.

Règle pour remplacer la traduction :

Actualisation.jpg

  • Exporter les messages (Texte)
Cette fonction exporte tous les messages, sans leur traduction, dans un fichier texte. Ce fichier peut être utilisé pour réaliser une traduction à l’extérieur du produit puis réimporté à l’aide de la fonction « Importer les traductions »
  • Exporter les traductions (Texte)
Cette fonction exporte tous les traductions dans un fichier texte. Ce fichier peut être utilisé pour réaliser une traduction ou correction à l’extérieur du produit puis réimporté à l’aide de la fonction « Importer les traductions »
  • Importer les traductions (Texte)
Cette fonction importe les traduction d’un fichier texte.
  • Importer les messages (dictionnaire)
Cette fonction importe les traductions contenues dans un fichier dictionnaire. Les traductions qui se trouvent dans le dictionnaire importé remplacent et écrasent les traductions du dictionnaire.
  • Remplacer par …
Cette fonction remplace la totalité du dictionnaire.
  • Sauvegardez sous
Cette fonction sauvegarde le dictionnaire dans un fichier au format « dictionnaire ».

Construction des dictionnaires application

Pour une application donnée (exemple : Applications/Application trésorerie/Traductions), le menu contextuel Construire le dictionnaire - dans notre exemple Espagnol (alphabet international) – permet de générer ou mettre à jour tous les dictionnaires application.

Au cours de cette construction, les messages qui ne sont plus utiles sont marqués avec le flag « Supprimé ». L’écran Traduction des messages – voir - permet de supprimer ces messages définitivement via le menu contextuel Supprimer les messages situé dans la grille d’affichage.

Traduction des dictionnaires

La traduction peut s'effectuer sur les dictionnaires objets et application cependant

Tip-20px.png Tip : Il est conseillé de traduire les dictionnaires objets puis de les fusionner pour obtenir le dictionnaire application traduit.

Il existe deux modes d’utilisation permettant la traduction des messages :

  1. L'interface de traduction
Sur un dictionnaire donné, le menu contextuel Traduire permet d’afficher l’écran Traduction des messages'. La traduction peut se faire directement dans cette interface
  1. L'export de fichier messages
Sur un dictionnaire donné , le menu contextuel Exporter les messages à traduire… permet de générer un fichier texte contenant tous les messages de l’application.

Sur ce même dictionnaire, le menu contextuel Traduire permet d’afficher l’écran Traduction des messages. A partir de cet écran Traduction des messages, il est possible de filtrer la liste des messages de la grille (traduits, A confirmer, importés et supprimés) et d'extraire cette sélection en utilisant le menu contextuel Exporter les messages non filtrés. A titre d’exemple, cette fonction permet, en décochant préalablement le filtre "traduits", d’exporter uniquement les messages non encore traduits.

Les messages sont générés uniquement en fichier texte.

Import de fichier messages

Sur un dictionnaire donné, le menu contextuel Importer les messages à traduire… permet d’importer un fichier texte contenant tous les messages traduits.

Exclam-20px.png Attention : Il n’est plus possible de réintégrer un fichier texte lorsqu'une modification, une suppression ou un ajout a modifié le dictionnaire d’origine entre l’export et la réintégration. l’une des 2 premières ligne d’entête du fichier texte a été supprimée ou modifiée.
Exclam-20px.png Attention : Ne modifier pas les 2 premières ligne d’entête du fichier texte.

Actualisation des dictionnaires objet

Après avoir traduit les messages (par interface ou import) il est nécessaire de mettre à jour les autres dictionnaires objet.

Sur un dictionnaire donné (exemple : Applications/Application trésorerie/Traductions/interface-Espagnol (alphabet international), le menu contextuel Actualiser les dictionnaires des objets… permet de mettre à jour l’ensemble des dictionnaires objet de l’application.

image13.png

Figure 11. Actualiser les dictionnaires des objets

Guide de la traduction (trans)Développement DSM

Outils personnels