Página en varios idiomas. Fallan las variables
Tengo una web programada para mostrar en 3 idiomas.
El caso es que funciona de maravilla cuando son los 3 idiomas que hay en la web: español, francés e ingles. Pero si el sistema operartivo es en italiano, polaco, cualquier idioma distinto al de los 3 idiomas de la web las variables no funcionan aunque sí funciona bien el archivo idiomas.php es decir todo se va al idioma default menos las variables.
Me explico mejor mostrando el código:
Tengo el include idiomas.php que es el siguiente:
<!--p <br-->if( GET['lg']){
$HTTP_SESSION_VARS['idioma_s']= GET['lg'];
}
$lg=$HTTP_SESSION_VARS['idioma_s'];
if(empty($lg)){ //primero preguntamos si la variable que va a contener el lenguage del visitante esta vacia
$lg=substr($HTTP_ACCEPT_LANGUAGE,0,2); // si esta vacia sacamos el lenguage del visitante y lo ponemos en la variable $lg
}
switch($lg){ //ahora cargamos el archivo que contiene el idioma segun la varible que sacamos antes
case "es" : //es = español
include("lang_esp.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
break;
case "en" : //en = ingles
include("lang_en.php");
break;
case "fr" : //fr = frances
include("lang_fr.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
break;
default :
include("lang_en.php"); //cargamos un idioma por defecto si no se encontro algun idioma
break;
}
?>
Como digo esto muestra bien el contenido en la web del archivo lang_en.php que es el default si el sistema operativo no es ninguno de los 3 idiomas del "case" y muestra las variables del archivo
Pero con las variables procedentes de la base de datos que las muestro así no aparecen y destroza la web
este es un ejemplo de como muestro las variables:
<!--p <br-->if($lg=="es"){
echo utf8_encode ($row['distancia_es']);
}
if($lg=="en"){
echo utf8_encode($row['distancia_en']);
}
if($lg=="fr"){
echo utf8_encode ($row['distancia_fr']);
}
?>
En el header de cada página tengo este código
<?php
session_start();
session_register('idioma_s');
include("includes/idiomas.php");
?>
¿Qué estoy haciendo mal?
El caso es que funciona de maravilla cuando son los 3 idiomas que hay en la web: español, francés e ingles. Pero si el sistema operartivo es en italiano, polaco, cualquier idioma distinto al de los 3 idiomas de la web las variables no funcionan aunque sí funciona bien el archivo idiomas.php es decir todo se va al idioma default menos las variables.
Me explico mejor mostrando el código:
Tengo el include idiomas.php que es el siguiente:
<!--p <br-->if( GET['lg']){
$HTTP_SESSION_VARS['idioma_s']= GET['lg'];
}
$lg=$HTTP_SESSION_VARS['idioma_s'];
if(empty($lg)){ //primero preguntamos si la variable que va a contener el lenguage del visitante esta vacia
$lg=substr($HTTP_ACCEPT_LANGUAGE,0,2); // si esta vacia sacamos el lenguage del visitante y lo ponemos en la variable $lg
}
switch($lg){ //ahora cargamos el archivo que contiene el idioma segun la varible que sacamos antes
case "es" : //es = español
include("lang_esp.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
break;
case "en" : //en = ingles
include("lang_en.php");
break;
case "fr" : //fr = frances
include("lang_fr.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
break;
default :
include("lang_en.php"); //cargamos un idioma por defecto si no se encontro algun idioma
break;
}
?>
Como digo esto muestra bien el contenido en la web del archivo lang_en.php que es el default si el sistema operativo no es ninguno de los 3 idiomas del "case" y muestra las variables del archivo
Pero con las variables procedentes de la base de datos que las muestro así no aparecen y destroza la web
este es un ejemplo de como muestro las variables:
<!--p <br-->if($lg=="es"){
echo utf8_encode ($row['distancia_es']);
}
if($lg=="en"){
echo utf8_encode($row['distancia_en']);
}
if($lg=="fr"){
echo utf8_encode ($row['distancia_fr']);
}
?>
En el header de cada página tengo este código
<?php
session_start();
session_register('idioma_s');
include("includes/idiomas.php");
?>
¿Qué estoy haciendo mal?
Respuesta de davidcortesb
1