12/12/2013, 03:16
|
| | Fecha de Ingreso: septiembre-2005
Mensajes: 8
Antigüedad: 19 años, 2 meses Puntos: 0 | |
Respuesta: php idioma: cómo ocultar/mostrar botón de idioma Hola webankenovi:
Gracias por tu respuesta!
He probado a coger tu código y aplicarlo pero esta vez lo que pasa es que salta el error.
Primero he cogido tu código tal cual y luego he añadido lo de la cookie que planteaba Phoneval y en ambos casos me da error. El error creo que debe estar en la parte de los <li> porque el idioma por defecto lo carga y va a la url index.php?lang=es
Igual es porque hay que cambiar algo cuando la parte de vista se escribe en index.php y no en mi common.php?
Finalmente he hecho una mezcla del código de Phoneval con el tuyo y... funciona!
Esto es lo que finalmente he escrito:
En common.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
{
header('location:index.php?lang=es');
exit();
// 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:
$lang_file = 'lang.es.php';
header('location:index.php?lang=es');
}
include_once 'languages/'.$lang_file;
?>
En index.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 }
?>
Al final en los <li> me funciona lo de $_GET, no lo de $_SESSION... no tengo ni idea de porqué, pero funciona :)
Ahora me pondré a leer lo de htacces... me imagino que tendría que hacer algo que sustituya el string index.php?lang=es por "es" o algo así, no?
Gracias a todos! Es una pasada, qué majos :D. Hasta hace 4 días pensaba que no lo iba a reseolver jamás!
****Edito por tercera vez: Ahora lo que estoy comprobando es si se guarda la cookie... y la cookie no se guarda. si dejo puesto el idioma en inglés, cierro la ventana y la vuelvo a abrir, me abre siempre el idioma "es". Por qué pasa si la url está dentro de un if?
Última edición por nexj; 12/12/2013 a las 03:49
Razón: he seguido probando cosas y parece que se ha resuelto. Vuelvo a editar porque no está resuelto del todo
|