4D v16.3

Annexe C : Architecture XLIFF

Accueil

 
4D v16.3
Annexe C : Architecture XLIFF

Annexe C : Architecture XLIFF  


 

 

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.

Note : Vous pouvez également lire directement des chaînes stockées dans des fichiers XLIFF à l'aide de la commande Get localized string.

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é ci-dessous).

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 plus d’informations sur le standard XLIFF, référez-vous à la spécification officielle XLIFF 1.1 qui peut être consultée à l’adresse suivante :
http://www.oasis-open.org/committees/xliff/documents/xliff-specification.htm

Attention : Le standard XLIFF tient compte de la casse des caractères.

Pour appeler des chaînes XLIFF dans 4D, vous disposez de deux possibilités :

  • Utiliser la commande Get localized string
  • Utiliser le système de traduction dynamique via des références

Vous pouvez appeler la commande Get localized string pour accéder directement à la traduction d'une chaîne dans la langue courante de l'application à partir de n'importe quel emplacement de la base. La commande Get database localization permet de connaître la langue courante.

Note de compatibilité : Les commandes Get indexed string et STRING LIST TO ARRAY du thème “Ressources” permettent également de tirer parti des documents XLIFF. Toutefois leur usage est désormais déconseillé, elles sont maintenues pour des raisons de compatibilité uniquement.

Dans 4D, des références XLIFF automatiques peuvent être utilisées aux emplacements suivants :

  • Champ “Nom de l’objet” dans la liste des propriétés de l’éditeur de formulaires
  • Champ “Nom de la fenêtre” dans la boîte de dialogue “Propriétés du formulaire” accessible depuis l’Explorateur
  • Textes statiques, y compris les libellés des boutons, cases à cocher, etc.
  • Editeur de menus (sauf syntaxe NomObjet, cf. ci-dessous)
  • Messages d’aide (sauf syntaxe NomObjet, cf. ci-dessous).

Notes :

  • 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 automatiques 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 :
      <group resname="[Clients]">
      <group resname="Form1">
      <trans-unit resname="boutSauv">
      ...
      </trans-unit>
      </group>
      </group>
    • Exemple (formulaire projet)
      Dans le cadre d’un formulaire projet, le nom de la table doit être remplacé par le libellé [ProjectForm], ce qui donne :
      <group resname="[ProjectForm]">
      <group resname="Form1">
      <trans-unit resname="boutSauv">
       ...
      </trans-unit>
      </group>
      </group>

    Note : Pour que la syntaxe NomObjet fonctionne correctement, il est nécessaire que la propriété "Titre" de l'objet ne soit pas vide dans la Liste des propriétés.

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) :

  1. 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).
  2. la langue de l’application 4D.
  3. l’anglais
  4. Si aucune de ces recherches n’aboutit, la première langue trouvée dans le dossier Resources est chargée.

La commande Get database localization 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 :

  1. 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”.
  2. ISO639-1
    Cette norme définit chaque langue sur deux lettres. Par exemple, “fr” (donc fr.lproj) désigne le français.
    Réf : http://www.loc.gov/standards/iso639-2/php/code_list.php
  3. 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 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.

Le tableau suivant liste les codes de langues pris en charge par 4D pour la gestion des fichiers XLIFF.

LanguesISO639-1“Legacy”ISO3166 / ISO15924
AFRIKAANSafafrikaans
ALBANIANsqalbanian
ARABIC_SAUDI_ARABIAararabicsa
ARABIC_IRAQararabiciq
ARABIC_EGYPTararabiceg
ARABIC_LIBYAararabicly
ARABIC_ALGERIAararabicdz
ARABIC_MOROCCOararabicma
ARABIC_TUNISIAararabictn
ARABIC_OMANararabicom
ARABIC_YEMENararabicye
ARABIC_SYRIAararabicsy
ARABIC_JORDANararabicjo
ARABIC_LEBANONararabiclb
ARABIC_KUWAITararabickw
ARABIC_UAEararabicae
ARABIC_BAHRAINararabicbh
ARABIC_QATARararabicqa
BASQUEeubasque   
BELARUSIANbebelarusian   
BULGARIANbgbulgarian   
CATALANcacatalan   
CHINESE_TRADITIONALzhchinesehant
CHINESE_SIMPLIFIEDzhchinesehans
CHINESE_HONGKONGzhchinesehk
CHINESE_SINGAPOREzhchinesesg
CROATIANhrcroatian   
CZECHcsczech   
DANISHdadanish   
DUTCHnldutch   
DUTCH_BELGIANnldutchbe
ENGLISH_USenenglish
ENGLISH_UKenenglishgb
ENGLISH_AUSTRALIAenenglishau
ENGLISH_CANADAenenglishca
ENGLISH_NEWZEALANDenenglishnz
ENGLISH_EIREenenglishie
ENGLISH_SOUTH_AFRICAenenglishza
ENGLISH_JAMAICAenenglishjm
ENGLISH_BELIZEenenglishbz
ENGLISH_TRINIDADenenglishtt
ESTONIANetestonian   
FAEROESEfofaorese   
FARSIfapersian   
FINNISHfifinnish   
FRENCHfrfrench   
FRENCH_BELGIANfrfrenchbe
FRENCH_CANADIANfrfrenchca
FRENCH_SWISSfrfrenchch
FRENCH_LUXEMBOURGfrfrenchlu
GERMANdegerman   
GERMAN_SWISSdegermanch
GERMAN_AUSTRIANdegermanat
GERMAN_LUXEMBOURGdegermanlu
GERMAN_LIECHTENSTEINdegermanli
GREEKelgreek   
HEBREWhehebrew   
HUNGARIANhuhungarian   
ICELANDICisiceland   
INDONESIANidindonesian   
ITALIANititalian   
ITALIAN_SWISSititalianch
JAPANESEjajapanese   
KOREAN_WANSUNGkokorean   
KOREAN_JOHABkokorean   
LATVIANlvlatvian   
LITHUANIANltlithuanian   
NORWEGIANnonorwegian   
NORWEGIAN_NYNORSKnnnynorskno
POLISHplpolish   
PORTUGUESEptportuguese   
PORTUGUESE_BRAZILIANptportuguesebr
ROMANIANroromanian   
RUSSIANrurussian   
SERBIAN_LATINsrserbianlatn
SERBIAN_CYRILLICsrserbiancyrl
SLOVAKskslovak   
SLOVENIANslslovenian   
SPANISH_CASTILLANesspanish   
SPANISH_MEXICANesspanishmx
SPANISH_MODERNesspanish   
SPANISH_GUATEMALAesspanishgt
SPANISH_COSTA_RICAesspanishcr
SPANISH_PANAMAesspanishpa
SPANISH_DOMINICAN_REPUBLICesspanishdo
SPANISH_VENEZUELAesspanishve
SPANISH_COLOMBIAesspanishco
SPANISH_PERUesspanishpe
SPANISH_ARGENTINAesspanishar
SPANISH_ECUADOResspanishec
SPANISH_CHILEesspanishcl
SPANISH_URUGUAYesspanishuy
SPANISH_PARAGUAYesspanishpy
SPANISH_BOLIVIAesspanishbo
SPANISH_EL_SALVADOResspanishsv
SPANISH_HONDURASesspanishhn
SPANISH_NICARAGUAesspanishni
SPANISH_PUERTO_RICOesspanishpr
SWEDISHsvswedish   
SWEDISH_FINLANDsvswedishfi
THAIththai   
TURKISHtrturkish   
UKRAINIANukukrainian   
VIETNAMESEvivietnamese

 
PROPRIÉTÉS 

Produit : 4D
Thème : Annexes

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Mode Développement ( 4D v16)
4D - Mode Développement ( 4D v16.1)
4D - Mode Développement ( 4D v16.3)