en | fr | Contact  | Imprimer  | Partager

TraducTeurk

1 La gestion des traductions dans un framework PHP

1.1 En général

Lorsqu'on développe une application web dans un framework PHP, on est amené à gérer des libellés, des messages d'erreurs, etc... qui devront être traduits dans la langue de l'internaute si celle-ci n'est pas la langue d'implémentation de l'application.

Il existe plusieurs façons de gérer la chose, les plus courantes étant:

  • Stocker tous les libellés dans une table, avec leurs traductions dans les langues gérées par le site, et utiliser dans le code PHP l'identifiant du libellé.
  • Passer le libellé en paramètre d'une fonction qui renverra sa traduction dans la langue de navigation -cette fonction utilisant simplement un tableau pour associer le libellé traduit à l'original contenu dans le code.

1.2 Dans FrameBeurk

  • A partir de la version 0.6, FrameBeurk implémente la seconde solution. Un libellé à traduire à l'éxécution figure dans le code ainsi:
    Beurk_traduit('Liste des ressources');
  • FrameBeurk est conçu pour pouvoir intégrer dans le même site différentes applications, nommées Modules. Les modules existants sont par exemples Beurk, Rhum ou Dnlod. Dans son fichier de configuration, chaque module déclare la langue dans laquelle tous ses libellés sont définis.
    Par exemple pour le module Dnlod, le fichier configDnlod.php déclare:
    $CONFIG['Module']['Dnlod'] = array( 'ChargerFonctions' => false, 'Langue' => 'fr_FR');
    Comme il est placé dans une action du module Dnlod, le libellé 'Liste des ressources' de l'instruction ci-dessus est en fr_FR.
  • Il peut être nécessaire d'utiliser un libellé d'un autre module ou d'insérer une partie variable dans le libellé (ex: numéro de page). La fonction Beurk_traduit accepte donc des paramètres optionnels:
    Beurk_traduit(' p.%d', 'Beurk', $NoPage)
    Même si l'instruction ci-dessus est rencontrée dans le module Dnlod, le libellé ' p.%d' appartient au module Beurk (et donc est déclaré dans la langue d'implémentation du module Beurk). %d sera remplacé par le contenu de $NoPage à l'éxécution.
  • Afin de ne pas alourdir le code avec trop de Beurk_traduit, il est possible de créer autant de fonctions que nécessaire acceptant en paramètre un libellé à traduire.
    Kom1_actionVueMaj('Ajouter une ressource', array('ActVue' => 'cree', 'IdVue' => 'Ressource'))
    L'instruction ci-dessus permet d'insérer dans la page html un lien vers la Vue creeRessource. Cette instruction figure dans une action du module Dnlod. Le libellé 'Ajouter une ressource' appartient donc au module Dnlod, est déclaré dans la langue de ce module (fr_FR), indépendamment du fait qu'on le passe à une fonction du module Kom1.
    C'est par ailleurs la fonction Kom1_actionVueMaj qui va se charger de traduire ce libellé en appelant Beurk_traduit.
  • Cette fonction assez triviale, pour remplacer le libellé transmis par sa traduction, va charger un tableau associatif nommé catalogue défini pour chaque module.
    Par exemple pour les traductions en en_US du module Dnlod (qui est déclaré en fr_FR), le fichier catalogueDnlod_en_US.php définit:
    $CATALOG['en_US']['Dnlod'] = array( '%d téléchargement%s' => '%d download%s', .../... 'Ajouter une ressource' => 'Add ressource', 'Ajouter une Version' => 'Add version', .../... );

La constitution et la maintenance des catalogues de traduction serait fastidieuse sans outil. C'est là qu'intervient TraducTeurk...

2 TraducTeurk: L'outil de gestion des traductions

TraducTeurk est l'application Excel-VBA qui permet de simplifier la gestion des traductions dans FrameBeurk. Elle extrait du code source du framework php les libellés à traduire et les rassemble dans une feuille Excel, en les classant par module. Si des traductions sont déjà disponibles dans les catalogues existants, TraducTeurk les ajoute sur la feuille.

Le développeur ou la personne en charge complète alors la feuille avec les traductions manquantes, puis demande à TraducTeurk de générer les nouveaux catalogues complets. Il n'y a plus qu'à les copier à l'emplacement idoine dans l'arborescence de FrameBeurk pour que les nouvelles traductions soient prises en charge à l'affichage.

2.1 La feuille de commandes

Feuille de commandes

La feuille de commandes constitue l'interface utilisateur -très simple, de TraducTeurk. On y renseigne les feuilles sur lesquelles l'application doit travailler, les paramètres qu'elle doit utiliser, les dossiers à utiliser, et on y déclenche les actions à réaliser par TraducTeurk. Feuilles et paramètres sont renseignés par défaut et n'ont pas besoin d'être modifiés.

  • Les Feuilles
    • Fonctions avec libellés (functions) : C'est la feuille où déclarer les fonctions qui acceptent des libellés à traduire
    • Liste des fichiers (Fmbk) : En bonus, TraducTeurk écrit sur cette feuille les noms des dossiers et fichiers parcourus pendant la phase d'extraction des libellés
    • Code analysé (debug) : Autre bonus, TraducTeurk écrit ici le code analysé, décomposé par token, et met en avant les libellés détectés.
    • Libellés (Libelles) : C'est là que les libellés extraits sont rassemblés et que l'utilisateur renseigne les nouvelles traductions ou corrige les existantes.
  • Les Paramètres
    • Préfixe des fichiers catalogues (catalogue) : Les noms de tous les fichiers catalogues dans l'arborescence de FrameBeurk (et uniquement eux) doivent commencer par ce préfixe.
    • Caractère saut de ligne (CrLf) : Celui qui sera utilisé lors de la génération des fichier catalogues.
    • Module par défaut (Beurk) : Si le module n'est pas précisé avec le libellé, TraducTeurk considère que le libellé est rattaché au module qu'il est en train de scanner. Mais s'il est en dehors d'un module, alors il rattache le libellé au module par défaut.
    • Dossier des modules (Module) : Dans l'arborescence de FrameBeurk, un dossier juste en dessous de celui-ci est le dossier d'un module.
    • Tableau des catalogues ($CATALOG) : Un fichier catalogue généré par TraducTeurk est simplement la déclaration d'une variable PHP de type tableau associatif. C'est le nom de cette variable.
  • Les Dossiers
    • Entrée : C'est le chemin complet du dossier où extraire les libellés (normalement, c'est le dossier d'installation de FrameBeurk).
    • Sortie : Là où les fichiers catalogues seront générés (charge à l'utilisateur de TraducTeurk de les déplacer ensuite).
  • Les Actions
    • Lancer l'extraction : TraducTeurk va charger les noms des fonctions à examiner, scanner l'arboresence en entrée (et l'écrire dans la feuille dédiée), analyser le code PHP (idem) et rassembler les libellés dans Excel.
    • Générer les catalogues : TraducTeurk va générer les fichiers catalogues à partir des libellés renseignés dans Excel.

2.2 Les fonctions recherchées

Fonctions recherchées

Cette feuille contient la liste des fonctions de FrameBeurk (en version 0.65) qui acceptent en paramètre un libellé à traduire. Sont précisés pour chacune la position du libellé dans la signature de la fonction ainsi que la position du module (si la fonction accepte ce paramètre). Seuls les paramètres de type constante chaîne de caractères sont extraits.

La liste des fonctions peut êre complétée selon vos besoins.

2.3 Les libellés à traduire

Libellés à traduire

Lorsque TraducTeurk a terminé son premier travail, tous les libellés à traduire figurent sur cette feuille (en colonne B), classés par module (colonne A). Les traductions rencontrées dans les fichiers catalogues existants sont ajoutées dans les colonnes à droite; la langue de ces libellés figure en entête de la colonne.

Libellés traduits obsolètes

Si au cours de l'examen des fichiers catalogues existants, TraducTeurk rencontre une traduction pour un libellé qui ne figure plus dans le module, il la fait figurer en bas de la feuille sur fond rouge.

Dans l'exemple ci-dessus, une fonction PHP utilisant le libellé "Style" anciennement déclarée dans le module Zenpa a été déplacé dans le module Kom1. On constate que le libellé "Style" n'a pas encore de traduction dans le module Kom1 alors que la traduction en en_US : "Style" n'a plus de raison d'être.

2.4 L'arborescence scannée

Arborescence scannée

Pas de fonction précise pour cette feuille... ça peut toujours servir d'avoir la liste des fichiers de son projet dans Excel !

2.5 Le code analysé

Code analysé

Essentiellement à des fins de debugging, TraducTeurk écrit le code analysé sur cette feuille. Les chaines de caractères détectés comme libellés à traduire sont mises sur fond bleu. Le module associé est mis en commentaire de la cellule.

A noter que TraducTeurk, un peu rustre, ne tient compte que des paramètres qui figurent sur la même ligne que la fonction... éviter les passages à la ligne !

3 Mode d'emploi

Elementaire : Il suffit de renseigner les dossiers en entrée et en sortie et de suivre les instructions qui figurent sur la feuille de commande.

4 Les catalogues

Catalogues de traduction

Les catalogues sont générés dans le dossier de sortie déclaré sur la feuille de commande. Il ne reste qu'à déplacer ou copier chaque fichier catalogue dans le répertoire _lang de son module.

5 Comment obtenir TraducTeurk ?

ToolOscope vous propose une licence Shareware :

  • Vous souhaitez essayer TraducTeurk : enregistrez-vous et téléchargez gratuitement le logiciel en version complète. Vous bénéficiez d'une licence d'évaluation.
  • "A quoi bon ?" : Détruisez vos copies du logiciel et les sous-produits générés par lui.
  • "Ce logiciel n'est pas mal, mais..." : Demandez une évolution ou une correction en décrivant précisément votre besoin.
  • "Ca marche et je vais continuer à m'en servir ou à me servir des sous-produits" : Envoyez un e-mail de remerciements à son créateur.

Pour tout cela, rendez-vous à l'Espace Utilisateurs.

Ne modifiez pas ce logiciel, ne le diffusez pas : ToolOscope s'en charge.

© ToolOscope SASU 2010-2015. © Arnaud De Rette 2016-2018. Tous droits réservés.