Projets multi langues et multi sites avec Seblod

6777 vues
26 juillet 2016
Cyril
multilangues-multisites-joomla
 

 Ce tutoriel Joomla!, issu de nos formations SEBLOD, explique comment avec Joomla! et SEBLOD on gère un projet multi sites et multi langues. Dans un billet précédent je brossais le paysage des solutions multi sites pour Joomla! Dans ce billet nous nous intéressons au projet multi sites et multi langues avec le couple Joomla! + SEBLOD.  Par cette appellation on entend un projet multi sites où chaque site possède plusieurs versions, une pour chaque langue.


Dans la suite de ce tutoriel on aura donc les domaines suivants: site1-fr.com et  site2-fr.com


Pourquoi est-ce particulier ?

On ne peut fonctionner dans un projet multi sites comme dans un projet simple par rapport au multi langues. Ainsi le plugin de filtrage de langues Joomla! ne peut plus être utilisé ici car il n'est pas compatible avec la gestion des langues dans un projet multi sites.

La raison en est qu'un projet Joomla! ne peut avoir qu'une seule page d'accueil par langue. Dans un projet multi sites multi langues on a naturellement une page d'accueil par langue par site.

La solution est d'utiliser des domaines différents par langues. Ainsi dans notre exemple, si on veut des versions françaises (FR) et anglaises (EN) on aura donc 4 domaines:

site1-fr.com site1-en.com site2-fr.com et site2-en.com


Ce qui se traduit dans le gestionnaire de sites SEBLOD de la façon suivante:

multisites multilangues seblod

Et pour chaque site on précise la langue et l'élément de menu principal:

multisites multilangues site1 language

Traductions Jtext Seblod

Il faut activer la traduction des labels par langue au niveau de SEBLOD:

Multisites multilangues seblod jtext

 

Sites et ACLs

Pour chaque site on a un domaine et pour chaque domaine, selon la logique SEBLOD, on a un jeu d'ACL:

multisites multilangues acls

On ajoute autant d'acls transverses aux langues qu'on a de sites. Ces acls seront utilisées pour les ressources qui devront s'afficher quelque soit la langue:

multisites multilangues acls sites

Chacun de ces niveaux d'accès transverses est affecté à tous les groupes correspondants à toutes les langues d'un même site. Par exemple pour l'acl 'site1' on a:

multisites multilangues acls site1

Conserver le menu principal par défaut

Il faut, comme dans tout projet multi langues, conserver le menu principal avec un élément de menu marqué de l'étoile, même si on ne l'utilise pas. multisites multilangues menu defaut

Désactivation du module de menu principal

Par défaut Joomla! s'installe avec un module de menu qui affiche le menu par défaut. Ce menu ne sera pas utilisé et donc il faut désactiver le module de menu principal par défaut.

multisites multilangues module menu principal

 

Filtre de langue

Le plugin Filtre de langue NE DOIT PAS être activé dans un projet multi site SEBLOD.

Multisites multilangues filtre langues

Pages d'accueil

Il faut que chaque site dispose de son menu principal et de sa page d'accueil. Pour cela on crée autant de menus que sites. Chaque menu doit avoir un élément de menu principal (quelqu'en soit le type : lien vers un article ou blog des articles d'un catégorie...) marqué par la langue.

multisites multilangues menus

Important: Tous les éléments de menu d'un même menu doivent être marqués de la bonne langue et du bon niveau d'accès.

L'élément de menu principal pour chaque menu n'a pas besoin d'avoir l'étoile activée:

multisites multilangues elements menu site1


On crée aussi autant de module de menu que de sites par langue:

multisites multilangues modules menus

Changement de langue

Le module classique Joomla! de changement de langue ne peut être utilisé ici. On doit créer un module (type 'personnalisé') pour chaque site qui renverra vers les versions FR et EN.

On pourra écrire par exemple dans le module de changement de langue pour le site 1:

multisites multilangues code chang langues

Dans l'exemple suivant pour le module de changement de langue du site1, la langue de ce module est positionnée à TOUTES et son ACL (niveau d'accès) est 'site1' pour qu'il s'affiche sur les versions FR et EN du site. Idem pour le module de changement de langue du site2.

Multisites multilangues module langues

Principes généraux pour la suite

Comme pour un projet multi langues classique (avec un seul site) le principe est de dupliquer les contenus, les modules et les menus pour chaque version linguistique du site.

Chaque élément doit etre marqué de la langue et de son niveau d'accès. Ce qui correspond au niveau d'accès PUBLIC par défaut dans un projet simple correspond ici au niveau d'accès site1-fr, site1-en, site2-fr ou site2-en.

Duplication des contenus

On duplique ou on crée des contenus spécifiques par langue:

multisites multilangues articles

Si on veut dupliquer on utilise le bouton TRAITEMENT (bien s'assurer que le plugin DX batch SEBLOD est installé et activé)

multisites multilangues traitement article Note: s'assurer que les catégories qui contiennent les articles sont bien marquéées avec la langue TOUTES et l'ACL 'public'

Duplication des menus

Comme pour le menu principal tout menu spécifique à un site dans une langue doit être dupliqué dans une autre langue avec l'acl correspondant. Il est quelques fois plus rapide de refaire le menu pour la nouvelle langue à zéro.

Duplication des modules

Tous les modules doivent aussi être dupliqués pour avoir la bonne langue et acl. On utilisera le bouton TRAITEMENT dans le gestionnaire de modules pour dupliquer le module en précisant:

  • la position
  • qu'on fait une copie et non un déplacement
  • la nouvelle ACL

Dans l'exemple suivant on copie un module français en position 7 et avec l'acl site1-fr en un nouveau module anglais dans la même position mais avec l'acl site1-en

multisites multilangues traitement module

multisites multilangues copie module

Traduction des labels

Au delà des contenus, menus et modules qui doivent être dupliqués dans la bonne langue, les labels des champs doivent être traduits avec le gestionnaire de substitution dans le menu back office Extensions / Langues :

multisites multilangues substitutions

Attention: il faut nommer les champs seblod sans accents ou caracteres spéciaux. Ainsi au lieu de nommer un champ Ville d'admission on le nommera villeadmission qui sera transformé par COM_CCK_VILLEADMISSION et qu'on viendra traduire dans le gestionnaire de substitutions.

On fera attention de choisir l'emplacement ADMINISTRATION qui permet, en cochant la case, de traduire la chaîne de caractères pour le front ET pour le back office.

multisites multilangues substitution admin

Listes SEBLOD multilangues

Les listes SEBLOD peuvent traiter plusieurs langues en même temps pour peu qu'on ajoute le filtre de langue dans l'onglet recherche. Ainsi une même liste affichera les actualités françaises ou anglaises selon la langue du site actuel.


Multisites multilangues liste seblod


Il faudra ensuite, par élément de menu venir surcharger le champ Article_language pour chaque langue:

Multisites multilangues element menu filtre langue

Associations

Par rapport à la gestion multilangues classique de Joomla! on perd ici l'association des éléments de menus et d'articles: quand on change de langue on est redirigé vers la page d'accueil.

 

Résultat final

Multisites multilangues resultat