Gestion des textes traduisibles 

Introduction

Les progiciels Sage en technologie X3 gèrent des textes traduisibles à différents niveaux, et donnent accès à des outils de traduction pour gérer les traduction, à la fois dans des langues standard livrées, mais aussi dans des langues non livrées en standard.

Trois tables différentes de la base de données sont utilisées pour gérer ces textes. Ce sont les suivantes :

  • la table APLSTD correspond à une table de textes organisés en chapitres. Un texte de cette table est identifié par 3 chiffres : le numéro de chapitre, le numéro de message dans le chapitre, et accessoirement un type de message. Pour accéder à ce type de message dans la langue courante de connexion, on peut, depuis la calculatrice, utiliser la fonction mess avec la syntaxe suivante :
    mess(numéro_message,numéro_chapitre,type_message)
    Cette table est gérée par le superviseur et accédée par le superviseur et le moteur.
  • la table ATEXTE définit la plupart des messages liés au dictionnaire (les intitulés des champs apparaissant sur les écrans, par exemple). Un message de ce type est simplement identifié par un numéro. Pour accéder à ce type de message dans la langue courante de connexion, on peut, depuis la calculatrice, utiliser la fonction AFNC.TEXTE avec la syntaxe suivante :
    Func AFNC.TEXTE(numéro_message)
    Cette table est gérée par le superviseur.
  • la table ATEXTRA définit les données traduisibles stockées dans des tables. Un tel texte est identifié par une clé qui intègre la table dans laquelle on gère les données associées au texte, le code du champ texte correspondant, et la clé de la fiche correspondante.
    Pour accéder à ce type de message dans la langue courante de connexion, on peut, depuis la calculatrice, utiliser la fonction AFNC.TEXTE avec la syntaxe suivante :
    Func AFNC.TEXTRA(code_table, code_champ, valeur_clé_1, valeur_clé_2)
    Cette table est gérée par les développeurs applicatifs pour l'essentiel, mais certaines tables du superviseur (les tables diverses, par exemple) y ont recours.

La table APLSTD

La table APLSTD sert à stocker à la fois :

  • les messages utilisés par le moteur pour ses différentes fonctions. Le type de message est alors égal à 0. On y trouve notamment les mots-clés du langage, les textes utiles à certaines fonctions (par exemple les noms des jours de la semaine et des mois de l'année renvoyés par les fonctions day$ et month$), ainsi que les messages d'erreur renvoyés par le moteur, ou certains textes de l'interface.
  • des messages utilisés par les développements superviseur ou applicatifs. Le type de message est alors égal à 1. On fait dans ce cas une distinction entre des chapitres de messages et des menus locaux :
    • Les chapitres de message contiennent des messages de service liés aux développements applicatifs.
    • Les menus locaux servent à gérer des saisies sous forme de combo-box ou de boutons radios, les choix affichés correspondant aux différents messages du chapitre, et une correspondance étant faite entre la valeur du champ saisi et le rang du message dans le chapitre.

La gestion des messages et des menus locaux est faite dans une fonction dédiée. Une simple case à cocher définit si le chapitre est un menu local.

Afin de permettre aux développeurs de spécifiques et aux personnes en charge de localisation de disposer de chapitres qui leurs sont dédiés, des plages de numérotation ont été définies. On trouvera le détail de ces plages dans l'annexe correspondante.

Un menu local peut par ailleurs être paramétrable par un utilisateur (pour lui permettre de personnaliser les choix qu'il fait dans une combo-box). Ceci se définit par un choix dans le paramétrage du chapitre de message.

Lorsqu'un menu de ce type est paramétrable, il n'est pas mis à jour lors d'une revalidation de dossier, d'une installation d'une nouvelle version, ou lors de l'installation d'un patch.

Tous les menus locaux et messages situés dans des tranches réservés aux spécifiques et protégés par les codes activité idoines peuvent être mis à jour par des patches spécifiques et sont respectés en cas de mise à jour.

La table ATEXTE

La table ATEXTE sert à stocker les textes du dictionnaire. Ces champs sont numérotés, et le principe est le suivant :

  • Tout texte standard est identifié par un numéro inférieur à 100.000. Pour un progiciel donné, ce numéro est intangible une fois attribué (il ne change plus et est respecté lors d'une mise à jour).
  • Tout texte spécifique est identifié par un numéro supérieur à 100.000. Les numéros sont attribués automatiquement au fur et à mesure des besoins lorsqu'on réalise des développements spécifiques. Ils ne peuvent pas être intangibles, puisqu'un numéro donné peut exister dans un autre dossier. Lorsqu'un développement spécifique est transféré par patch, les textes et les numéros sont présents dans le patch. A l'intégration, le numéro du texte est respecté si c'est possible, sinon une renumérotation est automatiquement faite. De la même façon, en cas de revalidation de dossier spécifique dans un contexte où on a 3 niveaux de dossiers, une procédure automatique de renumérotation peut être lancée (cf. l'annexedécrivant ce fonctionnement).

La table ATEXTRA

La table ATEXTRA sert à stocker les textes traduisibles associés à des fiches dans lesquels des intitulés doivent pouvoir varier en fonction de la langue. Dans le dictionnaire de données, les rubriques qui font appel à ce type de texte utilisent des types de données dont le code commence par AX.

Un champ déclaré avec ce type n'est pas réellement stocké dans la table, mais on retrouve, dans la table ATEXTRA, des lignes identifiées par le code de la table, le champ, la clé de la fiche (et bien sûr la langue), qui contiennent le texte en question.

Par exemple, dans le cas d'une table diverse (identifiée par un numéro, par exemple le numéro 23 et contenant un code, par exemple le code COD), la clé identifiant l'intitulé correspondant (champ LNGDES) pour la langue FRA,  sera composée des éléments suivants :

ATABDIV,LNGDES,FRA,23,COD

Tout texte de ce type peut être saisi dans des écrans et traduit en ligne grâce à une fonction dédiée.