Hola a tod@s!!
No se, tal vez sea porque llevo ya mas de 16 horas programando, que no logro ver el error en este codigo.
Practicamente, tengo una pagina en 5 idiomas, una parte de la traduccion esta en la base de datos, digamos la parte dinamica mientras que la parte estatica esta en files, con define('','')
Este es el script:
Código PHP:
if(isset($_GET['lang'])){
$elidiomamanual = $_GET['lang'];
switch($elidiomamanual){
case "es" : //es = español
$elidioma = "es";
setcookie('md4s_idioma', $elidioma);
include("lang/es.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
break;
case "en" : //en = ingles
$elidioma = "en";
setcookie('md4s_idioma', $elidioma);
include("lang/eng.php");
break;
case "it" : //it = italiano
setcookie('md4s_idioma', $elidioma);
$elidioma = "it";
include("lang/it.php");
break;
case "fr" : //it = italiano
$elidioma = "fr";
setcookie('md4s_idioma', $elidioma);
include("lang/fr.php");
break;
case "pt" : //pt = portugues
setcookie('md4s_idioma', $elidioma);
$elidioma = "pt";
include("lang/pt.php");
break;
default :
$elidioma = "en";
setcookie('md4s_idioma', $elidioma);
include("lang/eng.php"); //cargamos un idioma por defecto si no se encontro algun idioma
break;
}
//define lenguaje
if(isset($_COOKIE['md4s_idioma'])){
$elidiomita = $_COOKIE['md4s_idioma'];
switch($elidiomita){
case "es" : //es = español
$elidioma = "es";
include("lang/es.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
break;
case "en" : //en = ingles
$elidioma = "en";
include("lang/eng.php");
break;
case "it" : //it = italiano
$elidioma = "it";
include("lang/it.php");
break;
case "fr" : //it = italiano
$elidioma = "fr";
include("lang/fr.php");
break;
case "pt" : //pt = portugues
$elidioma = "pt";
include("lang/pt.php");
break;
default :
$elidioma = "en";
include("lang/eng.php"); //cargamos un idioma por defecto si no se encontro algun idioma
break;
}
}else{
if(empty($elidiomita)){
$sitelang = getenv("HTTP_ACCEPT_LANGUAGE"); // si esta vacia sacamos el lenguage del visitante y lo ponemos en la variable $sitelang
$sitelang = substr($sitelang, 0, 2);
session_start(setcookie('md4s_idioma', $sitelang));//guarda la cookie automaticamente con el idioma
switch($sitelang){
case "es" : //es = español
$elidioma = "es";
include("lang/es.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
break;
case "en" : //en = ingles
$elidioma = "en";
include("lang/eng.php");
break;
case "it" : //it = italiano
$elidioma = "it";
include("lang/it.php");
break;
case "fr" : //it = italiano
$elidioma = "fr";
include("lang/fr.php");
break;
case "pt" : //pt = portugues
$elidioma = "pt";
include("lang/pt.php");
break;
default :
$elidioma = "en";
include("lang/eng.php"); //cargamos un idioma por defecto si no se encontro algun idioma
break;
}
}
}
//guarda la cookie segun selecciona el usuario con el idioma
}
Entonces que hace este script?
-Si llega el lenguaje por GET, crea una cookie, incluye el file del idioma que se y le da el valor a una variable con el idioma ejemplo es, it, fr,en o pt.
-Si el cookie existe toma el valor del cookie y incluye el file del idioma y le da el valor a la variable.
-Encambio si no llega por GET y la cookie no existe, lo toma automaticamente seleccionando los dos primeros caracteres del idioma del navegador, agrega el file y crea la cookie.
Entonces el problema: al iniciar la web no carga nada, si clicko y envio por get se carga el idioma pero al cambiar de pagina en las siguientes no hay ningun idioma definido. No se si el problema seran los if, o la creacion de la cookie.
Alguien tiene idea de que puede ser?
Desde ya muchas gracias por cualquier ayuda!