Hola otra vez!
Tal como lo tengo escrito hay dos cosas que fallan:
1. La cookie no se guarda. Es decir, que si elijo ver la web en inglés, luego cierro la ventana y luego la vuelvo a abrir y pico el dominio, me sale el idioma por defecto, o sea español, cuando debería haberse guardado la cookie y abrírseme en inglés.
2. Cuando abro la ventana modal me coge siempre español, esté en el idioma que esté en la web. Tendría que haber una función que le dijese a los archivos que se abran desde el index, que recojan el idioma del index. Y si no (porque desde Facebook se abre la url sin el index), entonces coger el idioma por defecto.
Esto lo tengo en index.php, arriba del todo y también en el archivo que luego se abre como ventana modal:
Código PHP:
<?php
include_once 'common.php';
?>
Esto lo tengo en el ul del menú en index.php:
Código PHP:
<?php
if($_GET['lang']=='es'){ ?>
<li class="language">
<a href="index.php?lang=en"><span class="abrev">EN</span> <span class="sin-abrev"><?php echo $lang['MENU_EN_FULL']; ?></span></a>
</li>
<?php }
if($_GET['lang']=='en'){ ?>
<li class="language">
<a href="index.php?lang=es"><span class="abrev">ES</span> <span class="sin-abrev"><?php echo $lang['MENU_ES_FULL']; ?></span></a>
</li>
<?php }
?>
Esto es lo que tengo en common.php
Código PHP:
<?php
session_start();
header('Cache-control: private'); // IE 6 FIX
if( ! isset($_GET['lang']) || empty($_GET['lang']) || ! ctype_alpha($_GET['lang']) ) // ctype validacion solo valido letras
{
// register the session and set the cookie
$_SESSION['lang'] = $lang;
setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'es';
}
switch(strtolower($_GET['lang'])){
case 'en':
$lang_file = 'lang.en.php';
break;
case 'es':
$lang_file = 'lang.es.php';
break;
default:
header('location:'.$_SERVER['PHP_SELF'].'?lang=es');
$lang_file = 'lang.es.php';
}
include_once 'languages/'.$lang_file;
?>
Las dos últimas versiones de código que me has pasado no funcionaban, saltaba el error que te comentaba anteriormente.