TYPO3 Fluid : le View Helper de traduction

Publié le Mis à jour le

Les aides de vue ou View Helpers sont des aides à l’affichage. Ces View Helpers sont situés dans typo3/sysext/fluid/Classes/ViewHelpers/.

Nous allons voir aujourd’hui l’aide de vue pour les traductions. Ce View Helper est situé ici : typo3/sysext/fluid/Classes/ViewHelpers/TranslateViewHelper.php

Pourquoi l’utiliser ?

Le view helper (ou aide de vue) de traduction dans Fluid évite de coder en dur les différents messages dans les gabarits HTML.
Lorsque l’on souhaite mettre à jour une traduction, il est plus simple de passer par un seul fichier XML contenant l’intégralité des traductions, plutôt que de retoucher les fichiers HTML. De plus, et c’est là le plus important, un fichier XML est obligatoire si votre site est en plusieurs langues.
Néanmoins, on peut affirmer que même si votre site n’est traduit qu’en une seule langue, on ne dois jamais se passer d’un fichier XML. Il suffit juste de déclarer la langue du site comme langue par défaut.

<languageKey index= »default » type= »array »> […] </languageKey>

Comment utiliser ce view helper ?

Avec tslib_pibase, on n’utilisait $this->pi_getLL(‘the.key’) où « the.key » est l’entrée correspondante dans le fichier locallang.xml.
Pour Fluid, la syntaxe du fichier XML est la même mais on le code différement dans le fichier HTML.

Tout d’abord, petit rappel sur l’emplacement du fichier html. Celui-ci doit se situer dans le répertoire Resources/Private/Templates de votre extension.
Ensuite, on le place dans un dossier portant le nom du contrôleur appelé en front office.

Pour reprendre l’extension MVC blog_example, les contrôleurs identifiés sont : blog et post. On a donc deux dossiers dans Resources/Private/Templates :
– Blog
– Post
(Notez la première lettre en majuscule… c’est une règle).
On a ensuite un fichier HTML pour chaque action, le nom du fichier portant le nom de l’action, toujours avec une lettre majuscule au début.

# Voici l’appel du view helper dans un template (fonctionne également dans un partiel) :
<f:translate key= »the.key » htmlEscape= »false » />

Ce view helper va aller cherche la traduction de la clé « the.key » dans le fichier locallang.xml, situé dans le dossier Resources/Private/Language/.

C’est un appel basique mais d’autres appels sont également possibles :

# Référence à un fichier : <f:translate key= »LLL:EXT:myext/Resources/Private/Language/locallang.xml:the.key » />
L’intérêt ici c’est que vous pouvez spécifier un autre fichier que celui appelé par défaut.

# Ajout d’un texte par défaut si la clé n’est pas trouvée : <f:translate key= »the.key » htmlEscape= »false » default= »Texte par défaut » />

# Autre notation et passage d’arguments :

Si on a le label suivant :
<label index= »the.key »>TYPO3 has a large and growing %s of users %s.</label>

%s et %s seront remplacés respectivement par community et worldwide, ‘default value’ est une valeur par défaut.

Vous pouvez bien évidemment utiliser des fonctions fournies par Fluid pour rendre dynamique les paramètres passés :

<f:translate key= »post.list » arguments= »{numberOfBosts: ‘{posts -> f:count()}’} »>

Ou encore (extension perso) :

<f:translate key= »tx_simplefaq_domain_model_category.selectedcat » arguments= »{0: ‘{singleCategory.title}’} » htmlEscape= »false » default= »Texte par défaut » />

Ci-dessus, on a fait appel à deux View Helpers :
– f:translate
– f:count

L’objet « posts » contient tous les posts retournés par le contrôleur avec les lignes suivantes :
$this->postRepository->findByBlog($blog);
$this->view->assign(‘posts’, $posts);

Au final : « This blog contains 5 posts »

Je vous encourage à inspecter les autres view helpers dans typo3/sysext/fluid/Classes/ViewHelpers/. Des exemples sont commentés dans le code PHP des classes 🙂

Publicités