Jump to content
losdelsolo

PS 1.4.11.1 - Bugfix Selection auto langue navigateur.

Recommended Posts

Bonjour,

La version 1.4.11.1 de prestashop ne gère pas correctement l'affichage multi langue
lorsqu'un utilisateur étranger déboule sur l'index. Il se retrouve en général sur
la page d'index en langue par défaut, soit dans mon cas le FR.

Afin que les utilisateurs en-GB et en-US se retrouvent directement sur l'index
dans leur langue maternelle il faut corriger deux fichiers,  puis faire un test
via un proxy étranger ou via un switcher de langage sur votre navigateur en
ayant pris soin de purger ses cookies et son cache avant bien entendu.


Il faut modifier deux fichiers de la façon suivante:

Dans le répertoire classes de la version 1.4: cookies.php

        // Rustine Detection langue navigateur - Sam
        //checks if the language exists, if not choose the default language
        if (!Language::getLanguage((int)$this->id_lang))
        {
        $this->id_lang = _PS_LANG_DEFAULT_;
    $this->detect_language = true;
    }
    // Fin rustine

Toujours dans le rep classes: tools.php

        /* Automatically detect language if not already defined */
        // Rustine detection langage par naviguateur -
            //    if (!$cookie->id_lang && isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
        
        if (!$cookie->id_lang || isset($cookie->detect_language) && isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
        {
            $array = explode(',', self::strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']));
            if (self::strlen($array[0]) > 2)
            {
                $tab = explode('-', $array[0]);
                $string = $tab[0];
            }
            else
                $string = $array[0];
            if (Validate::isLanguageIsoCode($string))
            {
                $lang = new Language((int)(Language::getIdByIso($string)));
                if (Validate::isLoadedObject($lang) && $lang->active)
                    $cookie->id_lang = (int)($lang->id);
            }
        }
        // Suite Rustine language detection
        
        if (isset($cookie->detect_language))
        unset($cookie->detect_language);
        // fin Rustine - Sam

 

C'est terminé.
Cdlt,

Sam

 

Edited by losdelsolo (see edit history)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More