PrestaShop Forums: [RESOLU] Forcer la langue par défaut ? - PrestaShop Forums

Jump to content


Welcome to the PrestaShop Forum! We hope you'll share your comments and suggestions with us. We ask that you please post in English to the main sections of the PrestaShop Forum. If you want to write in another language, please post in the corresponding PrestaShop Community section below.

Please note that PrestaShop Community sections are largely self-moderated. PrestaShop team members may or may not participate in non-English sections. To improve the chances of receiving feedback to your question or comment, please post it in English to the main sections of our Forum.

NYC

Vous parlez français ? par ici !


[RESOLU] Forcer la langue par défaut ?


[RESOLU] Forcer la langue par défaut ?

#1 Cédric Girard

    PrestaShop Fanatic

  • 20 Jun 2008
  • Members
  • PipPipPipPip
  • 1053 posts
  • Location:CHAUFFOUR LES BAILLY

Posted 19 July 2009 - 12:08 PM

Bonjour

Dans le cadre d'une modification pour boutique bilingue sur deux domaines (mais avec une seule BDD, un seul back-office et une seule source pour les images) j'ai le besoin de pouvoir forcer la langue par défaut.

Pour ce faire, je dois donc "forcer" la valeur de $defaultCountry dans /config/config.inc.php

Or, quand j'essaye de la forcer directement dans ce fichier, il me dit "tentative de piratage" ou un truc du genre sur le front-office !!!

Comment faire ?

C'est le SEUL truc qui ne fonctionne pas (en fait le problème ne se pose pas pour l'internaute, mais pour les bots des moteurs qui eux, vont aller utiliser la langue par défaut...) ; je n'arrive pas dans le cas des bots à forcer la langue comme je le fais pour les internautes (là ça fonctionne bien) dans le header.php...


MERCI (c'est assez urgent - je sais, on est dimanche)


voir page 2 pour solution.
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus !

Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes

#2 Julien Breux

    PrestaShop Fanatic

  • 05 Feb 2008
  • PrestaTeam
  • 1580 posts
  • Location:Paris

Posted 19 July 2009 - 01:15 PM

Voici une façon simple en fonction du nom de domaine :

Code à ajouter ligne 115 du fichier classes/Tools.php

// JBX - 19/07/2009 16:13:21
if($_SERVER['HTTP_HOST'] == 'localhost') // FR
{
$array[0] = 'EN';
}
if($_SERVER['HTTP_HOST'] == 'localhost-en') // EN
{
$array[0] = 'FR';
}
// JBX - 19/07/2009 16:13:27


Remplacer localhost par le domaine en .fr (www.google.fr)
Remplacer localhost-en par le domaine en .com (www.google.com)

Mélanger le tout, gouter, et me dire si c'est bon :)
Julien BreuxDevelopper | DéveloppeurR&DSiteTwitter

#3 Cédric Girard

    PrestaShop Fanatic

  • 20 Jun 2008
  • Members
  • PipPipPipPip
  • 1053 posts
  • Location:CHAUFFOUR LES BAILLY

Posted 19 July 2009 - 01:16 PM

MERCI Julien

En fait le soucis se pose sur l'une des boutiques (les deux utilisent la même base de données) car on ne peut évidemment spécifier qu'une seule langue par défaut dans le BO.

J'essaye ça :-)
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus !

Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes

#4 Cédric Girard

    PrestaShop Fanatic

  • 20 Jun 2008
  • Members
  • PipPipPipPip
  • 1053 posts
  • Location:CHAUFFOUR LES BAILLY

Posted 19 July 2009 - 01:21 PM

UP

Euh en fait je l'avais déjà fait :)

Mais ça ne fonctionne pas exactement comme je le voulais. En fait quand un bot de moteur de recherche passe sur la boutique, si la langue par défaut dans le BO (paramétré depuis "Outils / Langues") est par ex. sur "Anglais" MÊME avec un paramétrage forcé à FR comme tu l'as fait, ça ne fonctionne pas.

Le bot indexe la version anglaise :-(

Du coup il me faut forcer la variable équivalant au choix de la langue par défaut. Ce que j'essaye de faire... Du coup je ne suis pas sûr que ce soit au bon endroit que je cherche (je veux pouvoir forcer la valeur définie dans le BO à l'endroit que je dis, au niveau de la boutique) :roll:

J'ai évidemment essayé avec un "simulateur de bot", ça fonctionne bien comme je le dis. Quand il passe sur la boutique, fut-elle forcée via ta modif en français, lui lit les infos en anglais. Si je modifie ma langue par défaut au français, il les lit en français.

CQFD



Mais bon, ça répond pas à ma demande du coup :)
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus !

Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes

#5 Julien Breux

    PrestaShop Fanatic

  • 05 Feb 2008
  • PrestaTeam
  • 1580 posts
  • Location:Paris

Posted 19 July 2009 - 01:32 PM

Étrange, le problème, c'est que Prestashop utilise les cookies pour le stockage de poursuite ...
Du coup, effectivement, si le "bot" ne peut sauvegarder le cookie, la langue passe à l'Anglais...

C'est délicat :-s
Julien BreuxDevelopper | DéveloppeurR&DSiteTwitter

#6 Ann

    PrestaShop Apprentice

  • 02 Jul 2008
  • Members
  • PipPip
  • 363 posts

Posted 19 July 2009 - 03:38 PM

Bonjour,

Je suis également intéressée par le sujet et très attentive à toute suggestion en ce domaine !

Ann
www.ann-secrets.com
www.mode-des-femmes.com

#7 Cédric Girard

    PrestaShop Fanatic

  • 20 Jun 2008
  • Members
  • PipPipPipPip
  • 1053 posts
  • Location:CHAUFFOUR LES BAILLY

Posted 20 July 2009 - 06:42 AM

Bonjour

Pas d'idées ? La team ?

Je vais devoir installer une boutique bidon pour mes tests ?... :-(
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus !

Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes

#8 Philippe

    PrestaShop Apprentice

  • 27 Jan 2008
  • Members
  • PipPip
  • 306 posts

Posted 20 July 2009 - 07:09 AM

From 1248006760:


Du coup, effectivement, si le "bot" ne peut sauvegarder le cookie, la langue passe à l'Anglais...

Ce qui pose un problème pour les sites qui n'ont pas de version anglaise car, en se connectant notamment depuis l'étranger, le site affiche des pages sans texte plutôt que de proposer la langue par défaut.
1.3.7 sur OVH - En production

#9 Cédric Girard

    PrestaShop Fanatic

  • 20 Jun 2008
  • Members
  • PipPipPipPip
  • 1053 posts
  • Location:CHAUFFOUR LES BAILLY

Posted 20 July 2009 - 08:49 AM

Bonjour Philippe

Je n'ai pas ce phénomène sur mes boutiques françaises. S'il n'y a qu'une seule langue, c'est la seule affichée.
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus !

Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes

#10 Philippe

    PrestaShop Apprentice

  • 27 Jan 2008
  • Members
  • PipPip
  • 306 posts

Posted 20 July 2009 - 08:57 AM

C'est le cas effectivement en France. Mais j'ai constaté à plusieurs reprise que, notamment depuis l'étranger, la version française n'est pas toujours prise en compte.
1.3.7 sur OVH - En production

#11 Cédric Girard

    PrestaShop Fanatic

  • 20 Jun 2008
  • Members
  • PipPipPipPip
  • 1053 posts
  • Location:CHAUFFOUR LES BAILLY

Posted 20 July 2009 - 10:21 AM

As-tu bien pensé à désactiver (j'ai pas dit "supprimer") les autres langues ?

Car effectivement dans ce cas précis, on a des affichages foireux si on ne le fait pas ;-)
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus !

Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes

#12 Philippe

    PrestaShop Apprentice

  • 27 Jan 2008
  • Members
  • PipPip
  • 306 posts

Posted 20 July 2009 - 10:23 AM

Je confirme : toutes les autres langues sont bien désactivées.
1.3.7 sur OVH - En production

#13 Cédric Girard

    PrestaShop Fanatic

  • 20 Jun 2008
  • Members
  • PipPipPipPip
  • 1053 posts
  • Location:CHAUFFOUR LES BAILLY

Posted 20 July 2009 - 10:24 AM

Étrange alors car moi j'ai pas le soucis ???


Quoi qu'il en soit, je DOIS absolument pouvoir forcer en dur la langue par défaut. Et j'ai pas la réponse à ma question :-/
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus !

Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes

#14 Philippe

    PrestaShop Apprentice

  • 27 Jan 2008
  • Members
  • PipPip
  • 306 posts

Posted 20 July 2009 - 10:30 AM

From 1248081868:

Étrange alors car moi j'ai pas le soucis ???

Tu n'as pas le souci... mais comment simuler ce problème alors que je n'ai pu le remarquer que lors de connexions depuis l'étranger ?
1.3.7 sur OVH - En production

#15 Cédric Girard

    PrestaShop Fanatic

  • 20 Jun 2008
  • Members
  • PipPipPipPip
  • 1053 posts
  • Location:CHAUFFOUR LES BAILLY

Posted 20 July 2009 - 12:33 PM

Via des simulateurs de bots (basés aux USA par exemple) :)
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus !

Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes

#16 Cédric Girard

    PrestaShop Fanatic

  • 20 Jun 2008
  • Members
  • PipPipPipPip
  • 1053 posts
  • Location:CHAUFFOUR LES BAILLY

Posted 20 July 2009 - 07:53 PM

Up

À défaut, comment désactiver le message de "piratage" ? C'est vraiment pénible !!!
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus !

Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes

#17 Cédric Girard

    PrestaShop Fanatic

  • 20 Jun 2008
  • Members
  • PipPipPipPip
  • 1053 posts
  • Location:CHAUFFOUR LES BAILLY

Posted 21 July 2009 - 02:54 PM

UP !

La solution :-)


Modifier la fonction suivante comme ceci dans le fichier /classes/configuration.php :


static public function get($key, $id_lang = NULL)
{
if (!is_array(self::$_CONF) OR !is_array(self::$_CONF_LANG) OR !Validate::isConfigName($key))
die(Tools::displayError());

if ($id_lang)
{
if (key_exists(intval($id_lang), self::$_CONF_LANG) AND key_exists($key, self::$_CONF_LANG[intval($id_lang)]))
return self::$_CONF_LANG[intval($id_lang)][$key];
}
elseif (key_exists($key, self::$_CONF))
{
// MODIFICATION LANGUE PAR DEFAUT POUR LES ROBOTS
if($key=='PS_LANG_DEFAULT')
{
// Variable langue => on force l'anglais
return '1';
}
else
{
return self::$_CONF[$key];
}
// FIN DE MODIFICATION
}

$result = Db::getInstance()->GetRow('
SELECT IFNULL('.($id_lang ? 'cl' : 'c').'.`value`, c.`value`) AS value
FROM `'._DB_PREFIX_.'configuration` c
'.($id_lang ? ('LEFT JOIN `'._DB_PREFIX_.'configuration_lang` cl ON (c.`id_configuration` = cl.`id_configuration` AND cl.`id_lang` = '.intval($id_lang).')') : '').'
WHERE `name` = ''.pSQL($key).''');

return ($result ? $result['value'] : false);
}


En fait, je "surclasse" la valeur de la langue par défaut telle que définie dans le back-office (ici pour la partie anglophone, alors que la langue par défaut est le français). Permet d'avoir la bonne langue pour les bots de Google et compagnie quand ils passent sur le site ;-)


OUF !


Je vais voir pour faire un article complet sur les modifications à réaliser pour faire fonctionner une boutique en bilingue sur deux URL (une URL = une langue), ça pourrait intéresser du monde.

La boutique que je viens de finaliser fonctionne sur le principe suivant :
* boutique francophone : y sont stockées les images et l'accès back-office. Le français est la langue par défaut.
* boutique anglophone : modifications pour utilisation de la base de données de la version française + hotlink sur les images stockées côté français + modifications pour forcer la langue à l'anglais

Petite modif finale sur le module "blocklanguages" pour pouvoir passer d'une boutique à l'autre, et voilà ;-)
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus !

Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes

#18 Maxime.

    PrestaShop Apprentice

  • 27 Nov 2008
  • Members
  • PipPip
  • 314 posts

Posted 22 July 2009 - 09:38 PM

beau travail Cedric !
Presta 1.1.0.5 > 1.2.0.5
Ovh 90 Plan

#19 toitos

    PrestaShop Newbie

  • 29 Jun 2008
  • Members
  • Pip
  • 13 posts

Posted 26 July 2009 - 04:21 PM

From 1248006086:

UP

Euh en fait je l'avais déjà fait :)

Mais ça ne fonctionne pas exactement comme je le voulais. En fait quand un bot de moteur de recherche passe sur la boutique, si la langue par défaut dans le BO (paramétré depuis "Outils / Langues") est par ex. sur "Anglais" MÊME avec un paramétrage forcé à FR comme tu l'as fait, ça ne fonctionne pas.

Le bot indexe la version anglaise :-(

Du coup il me faut forcer la variable équivalant au choix de la langue par défaut. Ce que j'essaye de faire... Du coup je ne suis pas sûr que ce soit au bon endroit que je cherche (je veux pouvoir forcer la valeur définie dans le BO à l'endroit que je dis, au niveau de la boutique) :roll:

J'ai évidemment essayé avec un "simulateur de bot", ça fonctionne bien comme je le dis. Quand il passe sur la boutique, fut-elle forcée via ta modif en français, lui lit les infos en anglais. Si je modifie ma langue par défaut au français, il les lit en français.

CQFD



Mais bon, ça répond pas à ma demande du coup :)




<?php

// Conecta a la base de datos
include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/config/settings.inc.php');

// Comprueba procedencia nombre dominio
If($_SERVER['HTTP_HOST'] == "www.dominioingles.com"){
$q = "UPDATE ps_configuration p SET value=1
WHERE p.`id_configuration`=1";
$r = @mysql_query($q);
}

Elseif($_SERVER['HTTP_HOST'] == "www.dominioespanol.com"){
$q = "UPDATE ps_configuration p SET value=4
WHERE p.`id_configuration`=1";
$r = @mysql_query($q);

}
?>

www.ConsultorWeb.es
Diseño de Tiendas Virtuales y Consultoría Web

#20 Cédric Girard

    PrestaShop Fanatic

  • 20 Jun 2008
  • Members
  • PipPipPipPip
  • 1053 posts
  • Location:CHAUFFOUR LES BAILLY

Posted 27 July 2009 - 06:09 AM

Merci pour cette solution

Attention toutefois, en cas de connexions simultanées, je doute que cela fonctionne ;-)
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus !

Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users