Forum CMS Made Simple FR

Version complète : [Fermé] Trouver la langue courante d'un site...
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.10.1
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

J'ai une question qui me parait simple mais sur laquelle je sèche depuis hier soir...

J'ai un site en dev avec CMSMS 1.10.1, MleCMS dernière version, et j'aimerais pouvoir filtrer sur la langue courante dans un module perso.

Et je trouve pas comment je peux récupérer la langue... J'ai même forcé le paramètre en mettant un paramèter "lang" à l'appel du module, mais rien n'y fait... je ne sais pas le récupérer avec un $params['lang'].

Est-ce que j'ai loupé quelque chose ? Je n'ai pas trouvé dans la doc sur le .org, ni dans Google...

D'avance merci de me sortir de ce pétrin !

Heriquet
Salut Eric,

As-tu regardé à tout hasard dans les variables de session ?
Je sais pas si c'est la bonne partie du forum pour ca d'ailleurs...
Salut airelibre,

Petite précision, je ne cherche pas la variable "mle" mais bien la locale : fr-FR par ex.
Et avec {get_template_vars} ?
J'avais déjà tenté avec le get_template_vars :


Code :
[== PHP ==]
$smarty=$gCms->GetSmarty();
$lang = $smarty->get_template_vars('lang_parent');

Mais il me retourne également "fr" pour le français au lieu de fr-FR.

Je peux m'en sortir avec ca mais j'aurais été curieux de retrouver mon "fr-FR" initial... Manière de pouvoir le distinguer d'un fr-CA par exemple.
D'autant que j'ai fais un {MonBeauModule lang='fr-FR'} et que je ne retrouve pas le fr-FR.

Pourtant j'ai déjà réalisé un module qui reçoit des paramètres et cela passait sans souci dans l'array $params...
Quand je fais {get_template_vars} dans une page, je peux voir que la variable lang contient fr_FR (pas lang_parent).
Ok merci je vais regarder à ca dès que possible.

Je vous tiens au courant et je ferme dès que c'est ok...
Voilà ou j'en suis... mais la fonction me retourne nl-NL même quand je suis dans le français...

Code :
[== PHP ==]
    function getCurrentLanguageId($separator='_')
    {
        global $gCms;
        
        $lang = $gCms->GetSmarty()->get_template_vars('lang');
        
        return str_replace('_', $separator, $lang['locale']);
    }
Bon alors j'ai trouvé le topic suivant : Creating a Multilingual CMSMS Site Using MleCMS Module (Goran Ilic)

Je vois que notre ami Goran a procédé comme suit :

Citation :if ($root_alias == 'de') {
setlocale(LC_ALL, array('de_DE.UTF-8','de_DE@euro','de_DE','german'));
} else {
setlocale(LC_ALL, array('en_US.UTF-8','en_US','english'));
}


Ma fonction est donc ceci :

Code :
[== PHP ==]
    function getCurrentLanguageId($separator='_')
    {
        global $gCms;
        
        $lang = $gCms->GetSmarty()->get_template_vars('lang_parent');
        
        switch($lang)
        {
            case "de":
                return 'de'.$separator.'DE';
            case "fr":
                return 'fr'.$separator.'FR';
            case "nl":
                return 'nl'.$separator.'BE';
            default:
                return 'fr'.$separator.'FR';
        }
    }

Pas hyper flexible mais on fait avec les moyens du bord...

Seule optimisation à laquelle je penserai, c'est de créer un string dans les paramètres du module avec la conversion entre chaque préfixe et chaque langue mais pour le moment ca fait ce que ca doit.