Perdon cain, la primera vez creo que no preste suficiente atencion a tu mensaje he hay la disculpa.
Bien para comenzar en tu codigo tienes un pequeño problema y es qu easignas el valor de las variables asi mismas mas exactamente en esta seccion:
Código PHP:
if (isset($_POST["idioma"])){[B]$idioma = $idioma[/B];setcookie ("idioma", $idioma, time()+(3600*24-30));}
Primero verificas que la variable $_* este definida y despues haces una asignacion a que puede tener dos resultados a simple vista que si ya esta definida se asigna asi misma y si no deviera lanzar un Notice diciendote que la asiganacion no esta definida. lo que puedes hacer es algo como esto.
Código PHP:
if (isset($_POST["idioma"])){[B]$idioma = $_POST['idioma'][/B];setcookie ("idioma", $idioma, time()+(3600*24-30));}
De esta forma asignas a hora si el valor que venia en el metodo POST, otra forma puede ser como te comente usando sesiones o cookies si prefieres.
ejemplo:
1.- Asignas valor a la sesion en tu archivo de inicio.
Código PHP:
session_start();
if( !isset( $_SESSION['idioma'] ) )
{
$_SESSION['idioma'] = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
}
2.- en cada una de tus paginas agrgas la siguinte funcion:
Código PHP:
function setear_idioma( &$actual )
{
if( isset( $_GET[idioma] ) )
{
$actual = $_GET[idioma];
}
elseif ( isset( $_POST[idioma] ) )
{
$actual = $_POST[idioma];
}
else
{
$actual = 'es';
}
}
3.- y por ultimo solo la mandas a llamar en cada pagina en la qu ela necesites.
Código PHP:
session_start();
setear_idioma( $_SESSION['idioma'] );
si necesitas usar la variable solo la mandas a llamar despues de la funcion donde la necesites:
Código PHP:
echo $_SESSION['idioma'];
con eso haces el cambio en forma dinamica. hmmm a un que viendolo bien si te das cuenta hace lo mismo que tus if-else, hmmmm bueno pues queda de ejemplo de como podemos hacer lo mismo de varias formas....