This question already has an answer here:
I'm trying to set a multilungal website using cookie. Everything's fine but I'm having trouble setting a default language. I'm getting an error "undefined index" in php when i get to the root website without parameter.
<?php
if (isset ($_COOKIE['CHOIXlang']) && $_GET['langue'] != 'fr' && $_GET['langue'] != 'en' && $_GET['langue'] != 'es')
{
$langue = $_COOKIE['CHOIXlang'];
}
else if ($_GET['langue'] == 'en' || $_GET['langue'] == 'fr' || $_GET['langue'] == 'es')
{
$langue = $_GET['langue'];
set_cookie($langue);
}
else
{
$langue = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);
set_cookie($langue);
}
?>
<?php
function set_cookie($langue)
{
$expire = 365*24*3600;
if (setcookie("CHOIXlang", $langue, time() + $expire) != TRUE)
{
}
else
{
setcookie("CHOIXlang", $langue, time() + $expire);
}
}
?>
And in the body :
<?php
if ($_GET['langue'] == "fr" || $langue == "fr")
{
include('lang/fr-lang.php');
}
elseif ($_GET['langue'] == "en" || $langue == "en")
{
include('lang/en-lang.php');
}
elseif ($_GET['langue'] == "es" || $langue == "es")
{
include('lang/es-lang.php');
}
?>
What did I miss to set default language when the website opens ?
Thank you
Set Default Lan may should be like this
Use $_GET for it:
This is a little long winded but might be a slightly better approach:
You need to check if your get parameter langue is set:
isset($_GET['langue'])
Also in you need to change this line :
$langue = $_GET['langue'];
to this:UPDATE
You cannot access any GET value that does not exist. First you need to check if it was set.
isset($_GET['langue'])
returns true if the parameter was set, so just use this check once at the beginning of your code. I'd suggest this:then use only
$langue
instead of$_GET['langue']
.