4D prend en charge le standard XLIFF, destiné à faciliter l’adaptation linguistique (localization) des textes et libellés de l’interface. Cette technologie est utilisée en interne pour les applications 4D. Les développeurs 4D ou de plug-ins peuvent en tirer parti dans leurs propres applications et plug-ins personnalisés.
Le principe de définition d’une interface d’application 4D traduite dynamiquement est le suivant : tous les éléments dépendants de la langue (textes, libellés et images) sont stockés en-dehors de l’application, sous forme de fichiers, dans le dossier Resources. Dans les formulaires, les menus, etc., les libellés et les images sont définis sous forme de références. Lors de l’exécution de l’application, ces éléments sont affichés dynamiquement à partir des fichiers externes en fonction du contexte linguistique. Le standard XLIFF codifie le mode de référencement et l’affichage des libellés.
Dans l'éditeur de formulaires, vous pouvez visualiser le contenu “réel” des zones statiques dans l’éditeur de formulaires en cliquant dans la zone ou en choisissant Afficher le format ou Afficher le nom dans le menu Objets :
Note de compatibilité : Outre le XLIFF, 4D prend toujours en charge le précédent système, basé sur le concept de “ressources” (type STR#). Ce système est toutefois désormais obsolète. Les deux systèmes peuvent être utilisés conjointement, notamment dans les applications converties (ce point est détaillé dans le pages suivantes).
XLIFF (XML Localization Interchange File Format) est un standard dédié aux processus de traduction et d’adaptation linguistique. Il permet d’établir une correspondance entre une langue source et une langue cible à l’intérieur d’un fichier XML.
Le standard XLIFF constitue de fait une alternative aux précédents systèmes basés sur les ressources. Divers outils, dont des logiciels gratuits, permettent la gestion des fichiers XLIFF.
Pour que la référence XLIFF soit reconnue, elle doit se trouver au début de la zone de texte.
Il n’est pas possible d’afficher des références XLIFF dans l’éditeur d’infobulles. Pour utiliser des infobulles basées sur le XLIFF, saisissez directement les références XLIFF dans le champ Message d'aide de la Liste des propriétés.
Dans 4D, vous pouvez utiliser des références XLIFF via l’une des syntaxes suivantes :
Syntaxe :15115,3 Lorsque cette syntaxe est utilisée avec des fichiers XLIFF, la première valeur (15115 dans cet exemple) désigne l’attribut id de l’élément group. La seconde valeur (3 dans cet exemple) désigne l’attribut id de l’élément trans-unit. Note de compatibilité : Cette syntaxe est identique à celle des références de ressources STR# “ancienne génération”, du type “:xxxx,yyy” où xxxx représente le numéro de la ressource STR# et yyy le numéro d’élément. Par exemple, “:15115,3” signifie que 4D doit utiliser le 3e élément de la ressource STR# numéro 15115. Vous pouvez ainsi conserver dans une base convertie un ancien système basé sur les ressources tout en installant un nouveau système XLIFF. En pratique, 4D recherchera dans un premier temps les valeurs correspondant à 15115,3 dans tous les fichiers XLIFF ouverts ; si cette valeur n’est pas trouvée, le programme poursuivra la recherche dans tous les fichiers de ressources ouverts. Avec ce principe, vous pouvez progressivement mettre en place un système basé sur le XLIFF dans une application sans devoir modifier les références dynamiques existantes : il vous suffit de copier un fichier XLIFF au bon emplacement (voir ci-dessous) et il sera pris en compte par 4D. Les deux systèmes peuvent être utilisés simultanément. Dans tous les cas, les fichiers XLIFF chargés seront prioritaires sur les fichiers de ressources si la même référence est présente aux deux emplacements.
Syntaxe :xliff:OKButton Cette syntaxe est utilisable uniquement avec les fichiers XLIFF chargés. Dans ce cas, la valeur référencée (OKButton dans l’exemple) désigne l’attribut resname de l’élément trans-unit.
Syntaxe NomObjet (basée sur le champ “Nom” dans la liste des propriétés) Cette syntaxe a pour but de faciliter la traduction des formulaires existants. A la différence des autres syntaxes, elle n’est utilisable que dans le cadre des formulaires. Le principe est d’encadrer dans le fichier XLIFF les éléments trans-unit par deux éléments group dont les attributs resname contiennent respectivement le nom de la table et du formulaire.
Exemple (formulaire table) Pour traduire le libellé du bouton dont le nom d’objet est “boutSauv” dans le formulaire “Form1” de la table [Clients], il suffit que le fichier XLIFF contienne les lignes :
Si vous utilisez les différentes syntaxes dans votre base, l’ordre de priorité appliqué pour rechercher une traduction valide dans les fichiers XLIFF sera : 1. syntaxe “:15115,3” 2. syntaxe “:xliff:OKButton” 3. syntaxe “Monlibellé”.
Il est possible de visualiser la référence XLIFF ou le libellé traduit en fonction de la langue courante dans l’éditeur de formulaires à l’aide, respectivement, des commandes Afficher le nom et Afficher la ressource du menu Objets de l’éditeur de formulaires. Pour plus d’informations, reportez-vous à la section Utiliser des références dans les textes statiques.
La mise en place d’une architecture XLIFF au sein d’une application personnalisée nécessite simplement la création d’un ou plusieurs fichier(s) XLIFF valide(s) et leur copie dans le dossier Resources de la base.
Pour plus d’informations sur le dossier Resources de la base, reportez-vous à la section Gestion du dossier Resources.
Le chemin d’accès complet à utiliser est le suivant :
Windows : MaBase\Resources\Lang.lproj\MonLocEn.xlf
Mac OS : MonPaquet:Resources:Lang.lproj:MonLocEn.xlf
où :
MaBase est le dossier contenant les fichiers de la base et MonPaquet est le “package” de la base sous Mac OS.
Lang.lproj est un dossier contenant les fichiers XLIFF pour le langage Lang. Le nom du dossier doit être conforme au standard international (reportez-vous au paragraphe suivant). Par exemple, pour les versions anglaises le dossier doit être nommé en.lproj.
4D chargera automatiquement les fichiers XLIFF du dossier de la langue courante de la base. Pour définir la langue courante de la base, 4D recherche successivement dans le dossier Resources de la base une langue correspondant à (dans l’ordre de priorité suivant) :
la langue du système (sous Mac OS, plusieurs langues peuvent être définies avec un ordre de préférence, 4D utilise ce paramétrage).
la langue de l’application 4D.
l’anglais
Si aucune de ces recherches n’aboutit, la première langue trouvée dans le dossier Resources est chargée.
La commande Lire langue base permet de connaître la langue courante définie pour la base.
Si une variante de langue non disponible dans les fichiers XLIFF est utilisée, la langue la plus proche sera chargée.
Le nom des fichiers XLIFF est libre, ils doivent toutefois comporter l’extension “.xlf”. Vous pouvez placer plusieurs fichiers XLIFF dans le même dossier de langue, ils seront chargés dans l’ordre alphabétique.
Le nom du dossier .lproj doit respecter l’une des normes décrites ci-dessous. 4D recherchera un dossier valide sur la base de chacune de ces normes, dans l’ordre suivant :
Code langue-code région Dans cette construction, une langue est décrite par un code langue (ISO639-1) + un signe moins + soit un code pays (ISO3166), soit un code de script sur 4 lettres (ISO15924). Par exemple, “fr-ca” (donc fr-ca.lproj) désigne la langue “français canadien”.
Nom “Legacy” Dans cette convention, le nom de la langue est écrit en anglais et en toutes lettres. Par exemple, “french” (donc french.lproj) désigne le français. Note : Les deux premières normes sont prises en charge uniquement à partir de la version 10.4 de Mac OS. Avec les versions précédentes de cet OS, seul le nom “Legacy” peut être utilisé.
Reportez-vous ci-dessous au paragraphe Codes de langue qui fournit un tableau récapitulatif des codes de langue pris en charge par 4D.
Si plusieurs définitions de langue existent, 4D utilise la traduction la plus précise. Par exemple, si le paramétrage de langue de l’OS est “français canadien”, 4D tente d’utiliser d’abord les traductions “fr-ca” puis, s’il ne les trouve pas, les traductions “fr”.
Note : Le même principe s’applique à l’intérieur des fichiers XLIFF pour le marqueur “target-language”. Il faut faire attention à bien définir cet attribut au sein des fichiers XLIFF car un fichier situé dans le dossier “fr-ca.lproj” ayant un “target-language=fr” sera considéré comme une traduction en “fr” et non “fr-ca”.
Les fichiers XLIFF sont rechargés dynamiquement, ce qui vous permet de contrôler visuellement l’intégration des libellés traduits dans l’interface de l’application. Le rechargement a lieu lorsque 4D passe au premier plan, si la date ou l’heure de modification a changé depuis la dernière sauvegarde. Le formulaire courant est rechargé simultanément.