Ver Mensaje Individual
  #7 (permalink)  
Antiguo 12/12/2013, 03:16
nexj
 
Fecha de Ingreso: septiembre-2005
Mensajes: 8
Antigüedad: 18 años, 7 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