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
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:
Et pour chaque site on précise la langue et l'élément de menu principal:
Il faut activer la traduction des labels par langue au niveau de SEBLOD:
Pour chaque site on a un domaine et pour chaque domaine, selon la logique SEBLOD, on a un jeu d'ACL:
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:
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:
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.
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.
Le plugin Filtre de langue NE DOIT PAS être activé dans un projet multi site SEBLOD.
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.
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:
On crée aussi autant de module de menu que de sites par 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:
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.
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.
On duplique ou on crée des contenus spécifiques par langue:
Si on veut dupliquer on utilise le bouton TRAITEMENT (bien s'assurer que le plugin DX batch SEBLOD est installé et activé)
Note: s'assurer que les catégories qui contiennent les articles sont bien marquéées avec la langue TOUTES et l'ACL 'public'
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.
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:
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
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 :
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.
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.
Il faudra ensuite, par élément de menu venir surcharger le champ Article_language pour chaque langue:
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.