Aller au contenu

Charles-Edouard Coste

xml:lang et eZ publish

Ca n'aura pas échappé aux 2~3 potes que j'embête à longueur de temps à ce sujet : je fais mon site en xhtml+rdfa. A ce titre, les pages sont servies en tant que fichiers XML et parsés en tant que tels par les navigateurs dignes de ce nom comme Firefox, et Lynx  ( celui en console :D )

Il y a donc des passages obligés si on veut faire du bon boulot. Comme, par exemple, la définition de la langue par défaut. Or, petit problème : fre-FR ou eng-GB c'est pas valide! A la poubelle donc le traditionnel $site.http_equiv.Content-Language mais heureusement il y a... (non.. pas Findus!) la fonction fetch!

Si on regarde la documentation de plus près, on pourra tomber sur cette petite fonction bien sympathique : fetch('content','locale')

Cette fonction retourne un objet de type ezlocale  relatif à la page. Ce dernier contient moults attributs dont la liste exhaustive est disponible dans la documentation.

Celui qui nous intéresse particulièrement, c'est l'attribut language_code. A partir de là, rien de bien sorcier, pour afficher la langue, le code suivant suffit :

{def $ma_locale = fetch( 'content', 'locale' )}
{$ma_locale.language_code|wash}

On pourra donc insérer sans mauvaise conscience le code suivant en tête de notre fichier pagelayout.tpl et ainsi espérer atteindre la validation tant convoitée du WCAG 2.0 :

{def $locale = fetch('content','locale')}
<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.0" xml:lang="{$locale.language_code|wash}" >

lundi 09 août 2010

Charles-Edouard Coste

Commentaires