Faire un site multilingue impeccable avec Drupal 7

Drupal 7 a introduit de nouvelles fonctionnalitées qui rendent les sites multiligues beaucoup plus simples à gérer. Mais Drupal lui même n'est pas trivial et vous pouvez vous perdre au moment de diviser votre site en plusieurs langues. Dans ce tutoriel je vais essayer aussi bien que possible de rendre un processus pas à pas et de donner quelques explications et idées sur chaque aspect d'un site multilingüe de façon à vous aider à choisir les meilleures options selon vos besoins. A la fin de ce tutoriel vous devriez avoir un site multilingüe impeccable sous Drupal 7.

 

Nous allons voir ici:
1 - Les fonctions de base de Drupal 7 pour les sites multilingues.
    -Ajouter des langues.
    -Détection et sélection.
    -Traduire l'interface.
2 - Les modules supplémentaires pour faire des traductions dans Drupal 7.
    -Localization Update
    -i18n
    -Localization client
    -Global redirect
    -Translation Management Tool
3 – Réglages fins.
    -Sélectionner la langue.
    -Traductions automatiques.

 

1 - Fonctions de base

 

Les options de base pour les sites multilingues sont "Content translation" et "Locale". Avec ces deux modules activés vous aurez déjà un site multilingue fonctionnel.

 

Ajouter des langues

 

Pour ajouter de nouvelles langues allez à .../admin/config/regional/language et cliquez sur "Ajouter une langue" (ou Add language). Vous pouvez aussi décider quelle sera la langue par défaut, quel sera le préfixe de l'URL (ex: www.exemple.com/fr pour la version française) ou le domaine de la langue (ex: fr.exemple.com pour la version française).

 

Avec un préfixe de chemin vous aurez un site avec plusieurs langues, avec un domaine de la langue vous aurez plusieurs sites, un pour chaque langue. Si votre but est d'avoir le même contenu traduit en plusieurs langues je vous conseille de choisir le préfixe de chemin, mais si chaque langue a un contenu différent, un administrateur différent et des utilisateurs différents alors le domaine de la langue peut être la meilleure option. Pensez bien avant de choisir parce que ce serait pénible de changer cette option une fois que votre site est en ligne (vous casseriez tous vos liens...).

 

Si vous voulez que vos visiteurs aillent d'abord à la langue par défaut et qu'ils choisissent en suite leur langue préférée, laissez le préfixe de chemin ou le domaine de la langue vide pour la langue par défaut. Si vous trouvez qu'il convient d'essayer de deviner la langue de l'utilisateur, ajoutez un préfixe ou un domaine pour toutes les langues, y compris la langue par défaut.

Quelques personnes semblent aimer mélanger les langues, avoir des pages en "langue neutre" ou encore d'afficher la page originale si la traduction n'est pas disponible. Je déconseille fortement de mélanger les langues dans un site public. Si vous le faites, votre site sera indexé par les moteurs de recherche avec un certain contenu et certains mots clés. Pendant que votre page n'est pas traduite vous serez en train d'afficher un contenu dupliqué et, une fois que votre page est traduite, certains utilisateurs seront dirigés vers des pages qui ne sont pas dans leur langue.

 

Détection et sélection

 

Drupal offre plusieurs façons de gérer la langue préférée de l'utilisateur. Vous pouvez utiliser une méthode ou plusieurs méthodes avec un ordre de priorité (si une méthode échoue la prochaine méthode sera appliquée). Cette option se trouve à .../admin/config/regional/language/configure. Voici comme chaque'une de ces méthodes fonctionne:

 

URL (préfixe ou domaine) est probablement la meilleure solution pour la plupart des sites. Soyez prévenu que vous pourrez avoir un petit problème avec le préfixe de chemin mais la solution est facile. Le problème est qu'il se peut qu'il y ait des inconsistances entre le contenu du site et l'interface du site. Si vous avez, par exemple, une page "à propos" traduite en espagnol "sobre" vous pouvez accéder à la page www.exemple.com/fr/apropos (le contenu et l'interface sont en français), ou la page www.exemple.com/fr/sobre (le contenu est en espagnol mais l'interface est en français à cause du préfixe), ou encore www.exemple.com/es/apropos (...vous avez compris). Lorsque les moteurs de recherche explorent votre site ils vont mélanger toutes les langues et vous perdrez des visiteurs. Pour résoudre ce problème vous devez installer le module Global Redirect pour rendre votre interface et votre contenu consistants. Nous aborderons Global Redirect plus tard dans ce tutoriel.

 

Navigateur peut être utile mais ne doit pas être la première méthode de détection parce que l'utilisateur ne pourrait pas changer de langue manuellement (ils devraient changer les préférences de leur navigateur). Si vous essayer de changer le contenu manuellement, seulement le contenu sera affiché dans la langue sélectionnée alors que l'interface sera dans la langue du navigateur. La sélection manuelle ne marcherait pas du tout si Global Redirect est activé. J'utilise la détection par le navigateur seulement si toutes les langues ont un préfixe et la méthode URL est sélectionnée en priorité. De cette façon les utilisateurs qui tapent une adresse avec un préfixe seront redirigées vers la langue spécifiée (www.exemple.com/it = italien) mais si une personne tape l'adresse sans le préfixe www.exemple.com il/elle sera redirigée à la version italienne si son navigateur est italien, à la version allemande si son navigateur est allemand et ainsi de suite.

 

J'ai trouvé que URL comme première méthode de sélection et Navigateur comme deuxième méthode avec un préfixe pour toutes les langues (y compris celle par défaut) est la meilleure méthode de détection et sélection que je pouvais choisir.

 

Session va ajouter une variable de session a l'URL (www.exemple.com?language=es). Ce n'est pas une très bonne idée de choisir cette méthode car elle empêche que les pages soient mises en cache (le site sera plus lent) et les session peuvent être un problème car elles fournissent des contenus différents pour une même adresse URL. Google peut gérer les informations de session mais vous devez configurer ceci dans votre Google Webmaster Tools. Dans tous les cas, les sessions sont moins simples que les préfixes ou domaines. Si vous utilisez URL et Session vous verrez que parfois les sessions ne vont pas forcer un changement d'URL et la négociation de langage sera très inconsistante. Je ne recommande dans aucun cas d'utiliser URL et Session ensemble. Il y a une discussion sur Drupal.org contre l'utilisation des Sessions.

 

Langue préférée de l'utilisateur est une mauvaise idée parce que cela signifierait que les utilisateurs ne pourront pas changer de langue aisément et provisoirement une fois qu'ils sont connectés. Quand l'utilisateur est connecté, il/elle devra changer la langue dans son profil au lieu d'utiliser le sélecteur de langues standard. Ceci pourra être contre-intuitif et agaçant pour les utilisateurs bilingues.

 

Traduire l'interface

 

Drupal offre une façon de traduire l'interface de votre site en important les traductions de localize.drupal.org. Cette option se trouve dans /admin/config/regional/translate. Bien que cela fonctionne bien, il y a quelques modules supplémentaires qui peuvent améliorer considérablement les fonctionnalités de base.

Pages


Commentaires

j'ai suit cette exemple mais lors de l'installation du module Language switcher dropdown il m'affiche cette erreur Parse error: syntax error, unexpected T_DOUBLE_ARROW in sites/all/modules/lang_dropdown/lang_dropdown.module on line 47

Je dirai que le mieux serai de soumettre ce bug aux developpeurs pour qu'ils puissent le réparer. Il s'agit d'une erreur de syntaxe PHP et ça peut dépndre des autres modules ou thèmes du site. C'est difficile à dire. Puis ça pourra aussi aider d'autres personnes qui éventuellement rencontrent le même problème!

Ton problème ne vient pas de la méthode décrite dans cette page mais du module "Lanquage Icons" que tu utilises. Il s'agit d'un bug connu qui peut être contourné aisément (en attendant un patch officiel). Je te conseille d'aller voir ici : http://drupal.org/node/1328728 Sinon, je trouve cet article bien fait et assez complet même si l'aspect synchronisation lors de la traduction des champs n'est pas abordé. Peut être l'objet du prochain billet ? :)

toutes mes excuses, je n'avais pas lu la page 2 ('-_-). Très très bon billet en fait !!

@Julien effectivement, il semble que ce problème ait déjà été abordé par la communauté Drupal. Merci pour le lien et pour ton intérêt pour le site! ;)

Bonjour,

Juste envie d'updater un peu ton billet ;)

Si j'ai bien lu, je ne crois pas que tu parle de la différence entre Node Translation et Field Translation.

Je viens de finir de lire Drupal 7 Multilingual Sites de Kristen Pol et j'ai trouvé ce livre super alors j'avais envie de partager cette trouvaille ;)

Si vous êtes débutant et que vous chercher à faire un site Drupal 7 multilingue tout sera vraiment plus claire une fois que vous aurez lu ce livre. Malheureusement encore uniquement en anglais mais vous pourrez avoir une première impression en lisant le petit résumé que j'en ai fait. ( http://learning-drupal.com/livres/chronique-drupal-7-multilingual-sites )

Je pense aussi que tu pourrais le rajouter dans tes ressources.
Amicalement, Adrien.

Bonjour, J'ai une petite question concernant les redirections, en effet, pour éviter la duplication des contenus il faudrait rediriger monsite.com/test vers monsite.com/fr/test Je n'ai pas trouvé comment faire même en bidouillant avec redirect..

Normalement la redirection vers préfixe de la langue est automatique, si ce n'est pas le cas, il serait bien de vérifier: -le choix des préfixes et configurations dans /admin/config/regional/language (vérifier tous les onglets!) -cocher le module Translation redirect de i18n (Redirige vers la page traduite si elle existe. Optimise les sites multilingues pour les moteurs de recherche (SEO).) -vérifier dans global redirect que "Contrôle du chemin de langue" est coché et que les pages ont une langue! (les pages crées ne doivent pas être marquées comme "Langage neutre") Sans savoir plus sur le problème voilà mes suggestions, j'espère que ça poura aider à résoudre le problème!

Pages

Ajouter un commentaire