Jump to content

Détection de la langue du visiteur ?


Recommended Posts

Bonjour,

Je passe actuellement ma boutique sous plusieurs langue ( FR, DE , EN )

Y a t il une détection de la langue automatique sur la langue configuré dans le navigateur ? (style Google) ?

Je ne trouve pas ce paramètre et ça n'a pas l'air de fonctionner.

merci

Link to comment
Share on other sites

  • 4 months later...

ci joint ma contribution :

Je pense qu'il faut relire ce post : http://www.prestashop.com/forums/viewthread/24082/#115274
ainsi que ce bout de code :http://urbanoalvarez.es/blog/2008/04/01/language-detection-php/

Ensuite en fonction des modules utilisés et leurs capacités multilangues et du travail déjà effectué pour rendre son site multilangue utiliser une des 2 techniques:
un site par langue, donc dedoublement de la BDD, BO, ect..
www.mondomain.fr, www.mondomain.co.uk, ect..
ou encore www.mondomain.com/fr, www.mondomaine.com/en, ect..

ou un seul site www.mondomain.com mais avec détection de la langue dans l'index.php qui renvoi vers le bon liens www.mondomain.com/fr ect... à l'aide de la commande php header();

la 1er solution me parait plus pertinente car je ne sais pas si les bots des moteurs de recherche indiquent leur langue. ils risques donc de n'avoir qu'une version du site remontée dans les index de moteur de recherche.

ceci n'est qu'une approche grossière car je n'ai jamais mis cela en place.
appel aux plus expérimentés !

Link to comment
Share on other sites

  • 7 months later...

Dans 1.2.5 ca existe. Mais ne marche pas bien. Il faut modifier la fonction setCookieLanguage dans Tools.php :

        /* Automatically detect language if not already defined */
       if (!$cookie->id_lang AND isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
       {
           $array = explode(',', Tools::strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']));
           foreach ($array as $accept) {
             // Deal with codes like 'en-US'
             $accept = preg_replace('/(^\w+).*/','${1}', $accept);
             if (Validate::isLanguageIsoCode($accept)) {
               $lang = new Language(intval(Language::getIdByIso(strval($accept))));
               if (Validate::isLoadedObject($lang) AND $lang->active) {
                 $cookie->id_lang = intval($lang->id);
                 break;
               }
             }
           }
       }

Link to comment
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...