Fork me on GitHub

Rendre un site multilingue avec EMLH

200802
Mai
  nicripeur Modules 6459
Modules

Récemment, j'ai été amené à réaliser un site multilingue français / anglais. J'ai donc cherché la meilleure méthode parmi celles existantes, et mon choix s'est porté sur EMLH de GiJoe. Elle permet avec un seule ligne de code dans le mainfile.php d'activer la traduction du contenu du site à la volée.

Je veux ainsi dans cet article rassembler les éléments glânés sur le net et qui m'ont permis d'arriver à cette solution.

Téléchargement

Téléchargez sur le site de GiJoe le fichier easiestml.php et copiez le dans le dossier racine_xoops/include.

Modification du fichier mainfile.php

Editer le mainfile.php et rajouter la ligne

require XOOPS_ROOT_PATH.'/include/easiestml.php' //


juste avant
// Database
    // Choose the database to be used
    
define('XOOPS_DB_TYPE''mysql');

Editer le fichier easiestml.php

Corriger les premières lignes de la façon suivante afin de définir l'anglais et le francais comme langues disponibles :

//define('EASIESTML_LANGS','xlang:en,xlang:fr'); // This is a sample of long pattern against tag misunderstanding [xlang:fr]english[/xlang:fr]
define('EASIESTML_LANGS','en,fr'); // [en]english[/en]  [fr]français[/fr] common

// list the language images separated with comma
define('EASIESTML_LANGIMAGES','images/english.png,images/french.png');

// list the language names separated with comma (these will be alt of <img>)
define('EASIESTML_LANGNAMES','in english,in french');

// list language - accept_chaset patterns (perl regex) separated with comma
define('EASIESTML_ACCEPT_CHARSET_REGEXES',',/shift_jis/i');

// list language - accept_language patterns (perl regex) separated with comma
define('EASIESTML_ACCEPT_LANGUAGE_REGEXES','/^en/,/^fr/');

// charset in Content-Type separated with comma (only for fastestcache)
define('EASIESTML_CHARSETS','ISO-8859-1,ISO-8859-1');

// tag name for language image  (default [mlimg]. don't include specialchars)
define('EASIESTML_IMAGETAG','mlimg');

// make regular expression which disallows language tags to cross it
define('EASIESTML_NEVERCROSSREGEX','/</table>/');

// the life time of language selection stored in cookie
define('EASIESTML_COOKIELIFETIME',365*86400);

// default language
define('EASIESTML_DEFAULT_LANG',1);

Edition du fichier theme.html

Editer son fichier thème et rajouter le tag [mlimg] à l'endroit où l'on souhaite faire apparaitre les petits drapeaux de changement de langue. (dans language.html pour ceux qui utilisent morphogenesis 2.0


<div id="xo-language">
[
mlimg]
</
div>

Et le tour est joué.

Et vous pouvez saisir votre contenu (articles, titres de blocs ...) avec les balises

  • [en]Ce qui doit apparaitre en anglais[/en]
  • [fr]Et en langue de molière[/fr]

La partie commune

Petite cerise sur le gâteau

Avec la méthode précédente, il reste le contenu des modules à traduire. On peut faire appel dans ce cas là aux fichiers de langue présents à la livraison des modules.

Ajouter le contenu suivant dans le fichier common.php présent dans le répertoire xoops_path/include (juste après les appels à la config du CMS) :

// ################# Load Config Settings ##############
    
$config_handler =& xoops_gethandler('config');
    
$xoopsConfig =& $config_handler->getConfigsByCat(XOOPS_CONF);
// #################### Easiest ML by Gijoe #################
$langs=array('fr'=>'french','en' =>'english');

    if (isset( 
$_GET['easiestml_lang'] ) && isset($_COOKIE['easiestml_lang'])){
        if (
in_array($_GET['easiestml_lang'],$easiestml_langs)){
            
$xoopsConfig['language'] = $langs[$_GET['easiestml_lang']];
        }
    }elseif(isset(
$_COOKIE['easiestml_lang'])){
        if (
in_array($_COOKIE['easiestml_lang'],$easiestml_langs)){
            
$xoopsConfig['language'] = $langs[$_COOKIE['easiestml_lang']];
        }
    }elseif(isset(
$_GET['easiestml_lang'])){
        if (
in_array($_GET['easiestml_lang'],$easiestml_langs)){
            
$xoopsConfig['language'] = $langs[$_GET['easiestml_lang']];
        }
    }

Ce code fonctionne très bien quand on n'utilise pas le cache des modules.
En espérant vous avoir aidé

Note: 9.00 (2 votes) - Noter cet article -

Partager Twitter Partagez cette article sur GG+
Format imprimable Envoyer cet article à un ami
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.

Xoops accro
Inscrit le: 15/07/2004
De:
Contributions: 4763
blueteen Posté le: 14/05/2008 08:20  Mis à jour: 14/05/2008 08:20
 Re: Rendre un site multilingue avec EMLH
Merci pour le temps pris pour la rédaction de cette explication !

Régulier
Inscrit le: 29/03/2007
De:
Contributions: 343
flaggada Posté le: 15/05/2008 14:57  Mis à jour: 15/05/2008 14:57
 Re: Rendre un site multilingue avec EMLH
Merci pour le mode d'emploi :)
Il y a juste la cerise sur le gateau qui me plante le site.
Donc à défaut ce sera sans la cerise

Répons(s) Auteur Posté le
 Re: Rendre un site multilingue avec EMLH nicripeur 15/05/2008 15:55

Régulier
Inscrit le: 29/03/2007
De:
Contributions: 343
flaggada Posté le: 15/05/2008 22:11  Mis à jour: 15/05/2008 22:11
 Re: Rendre un site multilingue avec EMLH
Merci la cerise marche :)
C'était un module (yogurt) dont les fichiers de traduction ne marchaient pas bien. (vu en debug mode).
Maintenant au travail pour changer les titres des blocs (je croyais que ça se faisait aussi automatiquement)

Régulier
Inscrit le: 22/05/2008
De:
Contributions: 173
habib66 Posté le: 28/05/2008 19:42  Mis à jour: 28/05/2008 19:42
 Re: Rendre un site multilingue avec EMLH
J'ai fait exactement comme le super tuto (tres bien expliqué);Mais ca ne marche pas...pourtant j'ai tout verifié.

Régulier
Inscrit le: 22/08/2006
De:
Contributions: 186
nicripeur Posté le: 30/05/2008 10:55  Mis à jour: 30/05/2008 10:55
 Re: Rendre un site multilingue avec EMLH
Qu'est ce qui ne marche pas ? le remplacement des balises de langue , ou le changement de langue de chaque module (la cerise ...) ?

ouvre un post sur le forum

Régulier
Inscrit le: 10/10/2007
De: Yaoundé - CAMEROUN
Contributions: 261
leozald Posté le: 04/10/2008 15:07  Mis à jour: 04/10/2008 15:07
 Re: Rendre un site multilingue avec EMLH
Salut les gars!

Merci pour le hack EMLH de GIJOE et la cerise sur le gâteau.
Je suis entrain d'utiliser EMLH dans un site fait avec xoops 2.3 et j'ai juste un problème, les caractères avec accents é è à ' n'apparaissent pas convenablement.
Par exemple: j'obtient ceci:
électrique au lieu de ceci électrique
Comment corriger celà??

Merci

Répons(s) Auteur Posté le
 Re: Rendre un site multilingue avec EMLH leozald 04/10/2008 15:26
    Re: Rendre un site multilingue avec EMLH rallierst 25/11/2008 11:25
      Re: Rendre un site multilingue avec EMLH xmouse 25/11/2008 13:47
        Re: Rendre un site multilingue avec EMLH olico 02/09/2009 17:48
          Re: Rendre un site multilingue avec EMLH Ghia 04/09/2009 13:53
            Re: Rendre un site multilingue avec EMLH olico 09/09/2009 10:14
              Re: Rendre un site multilingue avec EMLH olico 22/10/2009 14:57
              Re: Rendre un site multilingue avec EMLH olico 23/10/2009 08:37
                Re: Rendre un site multilingue avec EMLH olico 23/10/2009 09:46
                  Re: Rendre un site multilingue avec EMLH malipalo 20/08/2011 12:35
                    Re: Rendre un site multilingue avec EMLH Kris 20/08/2011 12:42

Newbie
Inscrit le: 01/03/2010
De: Montréal (Qc), Canada
Contributions: 16
vpgriac Posté le: 01/09/2011 19:53  Mis à jour: 01/09/2011 19:53
 Re: Rendre un site multilingue avec EMLH
Bonjour,

Etant novice dans le domaine, j'ai pu ajouter les codes cités ci-haut pour traduire le site.

J'ai deux questions:

1) Les drapeaux ne s'affichent pas, je vois simplemement french, english là où je veux les voir s'afficher. Est-ce qu'il y a une manipulation spéciale pour cela?

2) Comment faire maintenant pour que la traduction anglaise s'affiche par exemple? Mon site est en français, je veux le rendre billingue.

3) Merci d'avance

Répons(s) Auteur Posté le
 Re: Rendre un site multilingue avec EMLH Kris 01/09/2011 23:41

Régulier
Inscrit le: 22/08/2006
De:
Contributions: 186
nicripeur Posté le: 14/02/2013 16:14  Mis à jour: 14/02/2013 16:14
 Re: Rendre un site multilingue avec EMLH
Hello,

Je ne peux plus éditer mon article ;)

Je voulais ajouter une précision, que certains contenus sont retors vis a vis du balisage EMLH, à une inclusion dans les balises [fr][/fr]

Par exemple, du contenu youtube placé entre ces balises va faire planter le parseur syntaxique et provoquer l'affichage de l'ensemble des langues en même temps.

il faut donc construire ses blocs de texte pour chaque langue autour du contenu video et non pas essayer de gérer une section [][/] par langue avec le contneu youtube au milieu

Nota : ca peut plante aussi avec des caractères accentués non échappés :)
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

90 Personne(s) en ligne (1 Personne(s) connectée(s) sur Articles) | Utilisateur(s): 0 | Invité(s): 90 | Plus ...