Je suis en train de mettre en place un second langage sur notre site web. Le langage est déterminé par l'extension du nom de domaine, les deux domaines pointent sur le même dossier sur le serveur, mais les pages sont générés en français si l'accès se fais via le .fr, et en anglais si l'accès se fait via le .com
Pour éviter que la langue bascule du français vers l'anglais si jamais il y a un lien vers le .com qui traine quelque part alors que l'internaute est sur le .fr, j'aimerais que la langue soit sauvegardée en session. Ainsi si la première page affichée est en .fr, l'internaute restera toujours en français.
Bon, pour cela, en entête de toutes mes pages j'ai mis le code suivant, qui utilise des fonctions du système oscommerce, leur nom est assez explicite, vous devriez comprendre :
$domain_name=explode('.',$_SERVER['HTTP_HOST']);
$extension_domain=$domain_name[sizeof($domain_name)-1];
if ($extension_domain=="com" && !tep_session_is_registered('language')) {
tep_session_unregister('language');
tep_session_unregister('languages_id');
tep_session_register('language');
tep_session_register('languages_id');
$language = 'english';
$languages_id = '2';
} elseif (!tep_session_is_registered('language')){
tep_session_unregister('language');
tep_session_unregister('languages_id');
tep_session_register('language');
tep_session_register('languages_id');
$language = 'french';
$languages_id = '2';
}
Qui ne fonctionne pas totalement comme il faut : Lorsqu'on est sur le .fr, c'est bien en français, et en anglais lorsqu'on est sur le .com. Mais ce n'est pas sauvegardé, si je change de domaine la langue change aussi.J'ai assez peu de doute pourtant sur le bon fonctionnement des fonctions oscommerce, elles sont utilisés partout sur mon site et je n'ai pas rencontré de problème jusqu'a maintenant.
Bizarrement, lorsque j'utilise le code suivant pour choisir la langue en passant une variable par url :
if (isset($_GET['anglais']) && tep_not_null($_GET['anglais'])) {
tep_session_unregister('language');
tep_session_unregister('languages_id');
tep_session_register('language');
tep_session_register('languages_id');
$language = 'english';
$languages_id = '2';
}
if (isset($_GET['francais']) && tep_not_null($_GET['francais'])) {
tep_session_unregister('language');
tep_session_unregister('languages_id');
tep_session_register('language');
tep_session_register('languages_id');
$language = 'french';
$languages_id = '1';
}
Ca fonctionne ! Si je vais par exemple sur la page 3w.monsite.fr/?anglais=d, mon site est bien en anglais, et la langue est alors correctement sauvegardée pour toute ma navigation. Vous auriez une piste ? Je n'arrive pas à voir pourquoi le premier code ne fonctionne pas comme il faut, contrairement au deuxième qui marche nickel.
Merci ! Merci !
------------------
Ok ok, j'ai trouvé le problème, une session est liée à un domaine, donc je ne peut pas conserver les mêmes variables de session d'un domaine à l'autre ! Je vais essayer de passer via un cookie.