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.

Vous parlez français ? par ici !
[RESOLU] Forcer la langue par défaut ?
#1
Posted 19 July 2009 - 12:08 PM
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.
Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes
#2
Posted 19 July 2009 - 01:15 PM
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 :)
#3
Posted 19 July 2009 - 01:16 PM
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 :-)
Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes
#4
Posted 19 July 2009 - 01:21 PM
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 :)
Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes
#5
Posted 19 July 2009 - 01:32 PM
Du coup, effectivement, si le "bot" ne peut sauvegarder le cookie, la langue passe à l'Anglais...
C'est délicat :-s
#6
Posted 19 July 2009 - 03:38 PM
Je suis également intéressée par le sujet et très attentive à toute suggestion en ce domaine !
Ann
www.mode-des-femmes.com
#7
Posted 20 July 2009 - 06:42 AM
Pas d'idées ? La team ?
Je vais devoir installer une boutique bidon pour mes tests ?... :-(
Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes
#8
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.
#9
Posted 20 July 2009 - 08:49 AM
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.
Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes
#10
Posted 20 July 2009 - 08:57 AM
#11
Posted 20 July 2009 - 10:21 AM
Car effectivement dans ce cas précis, on a des affichages foireux si on ne le fait pas ;-)
Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes
#12
Posted 20 July 2009 - 10:23 AM
#13
Posted 20 July 2009 - 10:24 AM
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 :-/
Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes
#14
Posted 20 July 2009 - 10:30 AM
From 1248081868:
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 ?
#15
Posted 20 July 2009 - 12:33 PM
Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes
#16
Posted 20 July 2009 - 07:53 PM
À défaut, comment désactiver le message de "piratage" ? C'est vraiment pénible !!!
Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes
#17
Posted 21 July 2009 - 02:54 PM
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à ;-)
Last work : Matériel de cuisine professionnel
Actually : Matériel de cuisine et recettes
#18
Posted 22 July 2009 - 09:38 PM
Ovh 90 Plan
#19
Posted 26 July 2009 - 04:21 PM
From 1248006086:
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);
}
?>
Diseño de Tiendas Virtuales y Consultoría Web
#20
Posted 27 July 2009 - 06:09 AM
Attention toutefois, en cas de connexions simultanées, je doute que cela fonctionne ;-)
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












