Pour les besoins d’un client, nous avons du ajouter la gestion des traductions dans playground.
Besoins fonctionnels
Notre client nous a demandé de pouvoir facilement gérer les traductions de son site multi-langue. A partir d’une matrice excel, l’application devra ingérer les traductions et l’outil d’administration devra facilement les modifier.
Problématique
Comment gérer les traductions depuis Zend Framwork 2 et les rendre facilement administrables depuis un back office ?
Solutions
Nous allons utiliser les classes de traductions natives à Zend Framework. Pour cela, nous allons configuré notre module de la manière suivante :
'translator' => array( 'locale' => 'fr_FR', 'translation_file_patterns' => array( array( 'type' => 'phpArray', 'base_dir' => __DIR__ . '/../language', 'pattern' => '%s.php', 'text_domain' => 'domain' ), ), ),
Cela va signifier à Zend que les fichiers de traductions se trouveront dans le dossier language. Dans ce cas prévis, nous avons besoin de langue régionalisé, ainsi les fichiers seront du type suivant : fr_FR.php ou en_US.php. Dans le module.php de notre module, nous allons donner la langue au translator de Zend afin qu’il connaisse quel fichier il devra lire.
$translator = $serviceManager->get('translator') $translator->setLocale('fr_FR'); $translate = $serviceManager->get('viewhelpermanager')->get('translate'); $translate->getTranslator()->setLocale('fr_FR');
En plus de cela, nous avons fait un backoffice qui permet de faire 3 choses :
- import d’une matrice de traductions pour une langue donnée au format XLS ou CSV
L’import d’une matrice de traductions permet de mettre à jour le fichier de traduction sur le filer depuis un fichier XLS ou CSV. Le fichier doit avoir comme première colonne la clé de traduction et comme seconde colonne la valeur de la traduction.
- export de la matrice de traductions pour une langue donnée
L’export de la matrice permet de récupérer les traductions pour une langue donnée. Cet export se fait au format XLS.
- modification depuis le backoffice pour modifier une valeur de traduction
Dans le backoffice, nous récupérons les traductions d’une langue sélectionnée pour pouvoir éditer directement les valeurs de traductions. Lors de l’édition des traductions, nous mettons à jour le fichier de traduction de la langue concernée. Ce module a été créé dans le cadre d’ajout de composant de notre framework basé sur Zend Framework : Playground. https://github.com/gregorybesson/PlaygroundTranslate