Hola a todos.
Tengo una web que se supone debe funcionar en varios idiomas.
Soy nuevo en php y en principio estaba intentando controlar el idioma a través de una sesión con información que he visto en el foro.
El problema que tengo es que no parece guardar la información y cunado me cambio de pagina vuelve al idioma por defecto.
Lo que tengo mas o menos es:
1. pagina inicio /
session_start($session); #inicio la sesion
header('Cache-control: private'); # IE 6 FIX
require_once('include/language.php'); # Funcion seleccion fichero de idiomas
include_once('Header.php'); # Cabecera de pagina
include_once('home.php'); # cuerpo de pagina
include_once('Footer.php'); # pie de pagina
2. fichero de selección de los lenguajes. En funcion de los valores de las variables de sesion selecciona un idioma para traducción de los textos.
La variable $language la he incluido por que la usaba anteriormente en las consultas a la b.d.
if(isSet($_GET['lang'])){
$lang = $_GET['lang'];
//registra sesion
$_SESSION['lang'] = $lang;
//define cookie
setcookie('lang', $lang, time() + (3600 * 24 * 30));
//busca en variables cookie y session
}else if(isSet($_SESSION['lang'])){
$lang = $_SESSION['lang'];
}else if(isSet($_COOKIE['lang'])){
$lang = $_COOKIE['lang'];
}else{
$lang = 'es';
}
# seleccion del fichero de idiomas.
switch ($lang) {
case 'es':
$lang_file = 'lang.es.php';
$_SESSION['language'] = 1;
break;
case 'en':
$lang_file = 'lang.en.php';
$_SESSION['language'] = 2;
break;
case 'fr':
$lang_file = 'lang.fr.php';
$_SESSION['language'] = 3;
break;
default:
$lang_file = 'lang.es.php'; #por defecto Español
$_SESSION['language'] = 1;
}
include_once ''.$lang_file;
3. una tercera pagina donde selecciono el idioma, en principio tengo un switch que mira si le paso un parametro (por defecto no) y si cambio el lenguaje en la pagina la vuelvo a llamar con el codigo del nuevo idioma y cambiaria el valor de la variable de sesion lang
if (isset($_GET["id"])) {
$newlanguage = $_GET["id"];
switch ($newlanguage) {
case 1: #español
$_SESSION['lang'] = 'es';
break;
case 2: #ingles
$_SESSION['lang'] = 'en';
break;
case 3: #frances
$_SESSION['lang'] = 'fr';
break;
case 4: #portugues
$_SESSION['lang'] = 'po';
break;
case 5: #chino
$_SESSION['lang'] = 'ch';
break;
default: #por defecto español
$_SESSION['lang'] = 'es';
break;
}
} else {
$_SESSION['lang'] = 'es';
};
?>
<?php require_once('include/language.php'); ?>
...
link para ingles
<a href="countries.php?id=2"><img src="image/home/united_kingdom.gif" />United Kingdom</a></li>
...
En la pagina de seleccion cambia perfectamente pero si vuelvo al inicio o me cambio de pagina me vuelve al idioma por defecto (español)
en cada pagina tengo
$language = $_SESSION['language']; (lo deberia cambiar la funcion de lenguaje)
$lang = $_SESSION['lang']; (se me queda vacio)
Alguien me puede echar una mano o decirme como puedo implementarlo.
Muchas gracias.