Ver Mensaje Individual
  #13 (permalink)  
Antiguo 30/12/2013, 04:59
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 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"$langtime() + (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.