Tutoriel : Mise en place de l’UTF-8 sous Modx
Ce tutoriel a pour but d’utiliser Modx en UTF-8.
Je vais essayer d’être le plus générique possible afin de pouvoir traduire ce tutoriel ultérieurement.
Les exemples seront donnés en français mais devraient pouvoir s’appliquer à toutes les langues.
Toute petite introduction
L’UTF-8 permet d’afficher tout type de caractère accentué ou non ou spécifique à chaque langue (je pense ici au "ç" français, aux caractères grecs, japonais...).
La configuration de MySQL
Il est important de bien configurer MySQL pour l’UTF-8 (mal configuré, la longueur des champs semble "rétrécir").
L’idéal est de créer une base de données en UTF-8 mais les hébergeurs le permettent rarement.
Je reviendrai sur la meilleur méthode pour contourner ce point dès que possible.
Note :
A partir de la version 5 de MySQL, il n’y a aucun soucis si la base de données est en UTF-8. En revanche, les versions précédentes semblent poser quelques soucis. Utilisez donc la version 5 si vous le pouvez.
Les fichiers de langues
Pour utiliser UTF-8 dans l’interface de Modx, il faut au préalable convertir le fichier de langue à l’aide d’un éditeur de texte gérant l’UTF-8.
Note:
Voir en fin du tutoriel les fichiers de langue français en UTF-8. Ces fichiers sont à renommer en "francais.inc.php".
Note :
Wordpad sous Windows le gère mais mal. En l’utilisant vous aurez des erreurs à l’affichage. Personnellement, j’utilise l’éditeur de texte gratuit
PSPad.
Ouvrez le fichier de traduction
/manager/includes/lang/francais.inc.php
Modifiez l’encodage en UTF-8. Avec PSPad : Menu "
Format, cocher UTF-8.
Pour que l’UTF-8 soit localisé en français, insérez
setlocale (LC_ALL, 'fr_FR');
juste après les commentaires de l’entête (juste après la ligne "**/").
Enregistrez le
Fermez le fichier
Si cela ne semble pas fonctionner, vous pouvez également essayer de remplacer la ligne de code précédente par celle ci dessous. Cependant, elle peut ne pas fonctionner car "fr_FR.utf-8" n’est pas normalisée. Attention donc si vous changez d’hébergeur.
setlocale (LC_ALL, 'fr_FR.utf-8');
L’application Modx
Maintenant, il faut configurer Modx pour utiliser l’UTF-8. Tout d’abord, il faut se connecter au manager en tant qu’administrateur. Puis, dans "
Administration" > "i]Configuration[/i]", sous l’onglet "
Réglage du site", sélectionnez à l’aide de la liste déroulante "
Unicode (UTF-8) - utf-8" au niveau du paramètre "
Encodage des caractères". Validez et vous verrez alors Modx utiliser l’UTF-8.
Les modèles
Le modèle par défaut utilisé pour le site (côté utilisateur) est "
Default template". Il utilise l’ISO-8859-1. Nous allons le modifier.
Tout d’abord, il faut l’éditer à partir de "
Ressources" > "
Gestion ressources" et ensuite l’onglet "
Gestion modèles". Ensuite, sélectionnez le modèle.
Dans le code html, il faut chercher la ligne
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
et la remplacer par
<meta http-equiv="Content-Type" content="text/html; charset=[(etomite_charset)]" />
La variable de modèle
[(etomite_charset)] est remplacée, lors l’affichage de la page, par l’encodage paramétré côté administration. Voir le point précédent.
Note :
Modx est à l’origine basé sur Etomite, ce qui explique le nom de la variable de modèle
[(etomite_charset)]. Pour
en savoir plus sur les variables de modèle, la documentation a été traduite.
Ressources, fonctions PHP et UTF-8
Certaines ressources posent quelques problèmes avec l’UTF-8. Actuellement, je n’ai recensé qu’un seul problème, lié au formatage des dates, lors de l’affichage des noms de jours et de mois contenant des accents. Ce problème est lié à une fonction PHP.
Snippets fonctionnant mal avec l’UTF-8:
- NewsListing : jusqu’à la version 6.3.3 (dernière en date). Le problème concerne le formatage des noms des dates comportant des accents. Il sera résolu dans la prochaine version.
NewsListing 6.4.x (actuellement en béta) ne pose plus ce problème.
- MaxiGallery : jusqu’à la version 0.3 : problèmes sur les titres et les descriptions. Résolue à partir de la version 0.4.
Note :
Pour les ressources, je vais contacter au fur et à mesure les développeurs afin de régler les divers problèmes rencontrés et pouvoir utiliser l’UTF-8 sans soucis.
Note :
Toutes informations complémentaires sur l’UTF-8, les fonctions PHP et les ressources ne fonctionnant pas en UTF-8 seront appréciables.
Ce tutoriel sera mis à jour en fonction de vos remarques.
Merci à
nissai pour la relecture, à
xeres pour son "tip" et à
grunt_lord pour les précisions sur MySQL.