CMS : Drupal 8 multilingue

Merci pour le partage...Share on Facebook2Share on Google+0Tweet about this on TwitterShare on LinkedIn0

Sous Drupal 8, tous les éléments sont désormais des blocs qui peuvent être placés dans plusieurs régions d’une même page.

 

Beaucoup de ces blocs et de ces pages sont aussi maintenant des vues. Ces deux nouveautés — bien que n’étant pas en soi des fonctions multilingues — offrent une grande liberté sur le choix de la langue d’affichage du contenu. En effet, les blocs possèdent à présent un paramètre de visibilité basé sur la langue. Les vues ont aussi de nombreuses options de configurations additionnelles par rapport à la langue du contenu à récupérer et dans laquelle celui-ci sera affiché.

Dans un projet multilingue, un contenu peut ne pas nécessiter d’être associé à une langue — une image par exemple — mais aussi ne pas avoir encore de langue associée. Sous Drupal 7, nous n’avions comme seul choix « Indépendant de la langue », ce qui ne s’applique pas toujours à notre situation. Drupal 8 fournit maintenant deux options de langue génériques — « Non spécifié » et «Non applicable » — et permet même d’en ajouter si celles-ci ne sont pas suffisantes. Chaque usager possède aussi davantage de liberté sur ses préférences de langue. Il peut sélectionner la langue de son profil, celle dans laquelle il préfère consulter le contenu et, s’il a accès aux pages d’administration, la langue dans laquelle celles-ci devraient lui être présentées. Ces nouvelles options permettent, par exemple, de rendre dynamique la langue d’affichage des contenus selon les préférences de chaque utilisateur.

Une expérience de traduction améliorée

Tout comme son prédécesseur, le module locale de Drupal 8, sert à la traduction de l’interface. Il incorpore maintenant les fonctionnalités de mise à jour du module communautaire i10n_update de Drupal 7. Il récupère donc les fichiers de traductions du cœur et des modules de Drupal et met à jour les traductions. Puisqu’il est souvent nécessaire, dans un projet multilingue, de modifier des traductions venant de la communauté, il est donc possible de les marquer comme étant personnalisées afin d’éviter qu’elles ne soient écrasées par la prochaine mise à jour. Il est aussi possible d’exporter nos traductions personnalisées pour les utiliser dans d’autres projets.

L’interface a été grandement retravaillée. Précédemment, la page de traduction n’offrait pas la possibilité de traduire les textes directement. Pour chaque chaîne de caractères, on nous présentait l’état des traductions dans toutes les langues disponibles et un seul lien pour les modifier. Ce lien menait au formulaire de traduction qui comportait un champ pour chaque langue — bien qu’il soit peu probable qu’une seule personne se charge de traduire toutes les langues !

Dès la première page, sous Drupal 8, on peut filtrer les traductions par langue et avoir côte à côte la source et un champ pour entrer ou modifier la traduction directement. Il est donc possible d’entrer plusieurs chaînes de traductions avant d’enregistrer. De plus, l’interface de Drupal 8 permet désormais de traduire les textes pluriels, tel que: « 1 commentaire / @count commentaires », ce que l’interface de Drupal 7 ne permettait aucunement.

Du contenu multilingue sans discrimination

Bien que portant le même nom que son homonyme en Drupal 7, le module content_translation est fondamentalement différent. Drupal 8 rend traduisibles toutes les entités de contenus, que ce soient les nœuds, les blocs, les termes de taxonomie, etc. Dans sa version précédente, ce module ne supportait que la traduction des nœuds. Si l’on souhaitait traduire les termes de taxonomie, les blocs ou les menus, il fallait utiliser des modules de la communauté.

Drupal 8 améliore grandement la traduction car tous les contenus sont maintenant des entités traduisibles à l’aide d’un système unique et configurables par type d’entité, par bundle, par champs et parfois même davantage. Pour un champ d’image, par exemple, on peut rendre traduisible le titre et le texte alternatif, tout en conservant la même image pour toutes les traductions.

Configuration dans la langue de notre choix

La configuration de Drupal 8 a été totalement repensée et utilise maintenant un système commun pour toutes ses facettes, que ce soient le nom du site, les rôles, les libellés des champs ou les textes dans les vues. Des fichiers en format YAML sont utilisés afin d’inclure la configuration dans le code, mais aussi pour son déploiement entre les différents environnements. Elle est ensuite transférée dans la base de données. De plus, tout comme pour le contenu, Drupal ne duplique pas les fichiers de configuration pour chaque traduction; il crée plutôt des fichiers avec seulement les textes supplantés.

Si Drupal 8 a été installé dans une langue autre que l’anglais, toute la configuration du site a été importée dans cette langue (grâce au module locale). Chaque traduction est ensuite effectuée depuis cette langue. Il n’est donc plus nécessaire de créer les vues en anglais et de les traduire par la suite. On peut désormais les créer dans la langue de notre choix et les traduire en anglais —ou dans toute autre langue — si nécessaire. On peut ainsi, dans un site multilingue, créer sa configuration dans n’importe quelle langue activée et le système sera capable de la traduire dans toutes les autres langues disponibles.

Toutes ces nouveautés font partie du système d’entité de configuration de Drupal 8. Ce que le module config_translation fournit, c’est une interface utilisateur pour effectuer les traductions.

La migration

Toutes ces nouvelles fonctionnalités sont très utiles pour un nouveau projet, mais qu’en est-il pour un projet en Drupal 6 ou 7 que l’on souhaiterait migrer ? Là encore, c’est une autre nouveauté. Le module communautaire migrate, bien qu’étant encore au stade expérimental, est désormais incorporé dans le cœur de Drupal 8 et propose des chemins de migration automatique.

A ce stade, bien que la migration depuis Drupal 6 soit en grande partie fonctionnelle, il n’existe aucun support concernant le contenu multilingue. Il est évident que beaucoup d’efforts sont toutefois déployés pour augmenter la couverture de ces migrations puisque cette version ne sera bientôt plus supportée… Heureusement, comme sous Drupal 7, il est possible d’utiliser l’API de migrate pour créer soi-même ses migrations multilingues.

Christian Kas

Spécialiste de la réussite et du bien-être.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *