Foros del Web » Programando para Internet » PHP »

Guardar idioma cookie Gettext

Estas en el tema de Guardar idioma cookie Gettext en el foro de PHP en Foros del Web. Hola a todos! Utilizando Gettext para poder tener una web con varios idiomas me estoy volviendo loco al intentar guardar el idioma seleccionado al cambiar ...
  #1 (permalink)  
Antiguo 26/03/2012, 06:31
 
Fecha de Ingreso: abril-2010
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 0
Guardar idioma cookie Gettext

Hola a todos!

Utilizando Gettext para poder tener una web con varios idiomas me estoy volviendo loco al intentar guardar el idioma seleccionado al cambiar de página. He probado con sessions y cookies pero, la verdad, no lo he logrado. He leído y releído foros y la web de php. Pero no consigo adaptarlo. Agradecería muchísimo que me indicarais cómo hacerlo, a ser posible, con cookies.

Os adjunto el código que he hecho para trastear con gettext:

1a página
Código PHP:
<?php
$language
=(isset($_REQUEST['language']))?trim(strip_tags($_REQUEST['language'])):"es_ES";                          

putenv("LC_ALL=$language");
setlocale(LC_ALL$language);
bindtextdomain("messages""./locale");
textdomain("messages");
bind_textdomain_codeset("messages"'UTF-8'); 
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Documento sin título</title>
</head>

<body>
<?php print "<p><a href=\"".$_SERVER['PHP_SELF']."?language=en_GB\">English</a> - <a href=\"".$_SERVER['PHP_SELF']."?language=es_ES\">Español</a></p>\n";?>
<br /><br />

<?php print _("What do we say to the god of death?"); ?>
<br />

<a href="bbb.php">Next page</a>

</body>
</html>
Segunda página
Código PHP:
<?php
$language
=(isset($_REQUEST['language']))?trim(strip_tags($_REQUEST['language'])):"es_ES";

putenv("LC_ALL=$language");
setlocale(LC_ALL$language);
bindtextdomain("messages""./locale");
textdomain("messages");
bind_textdomain_codeset("messages"'UTF-8'); 
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Documento sin título</title>
</head>

<body>
<?php print "<p><a href=\"".$_SERVER['PHP_SELF']."?language=en_GB\">English</a> - <a href=\"".$_SERVER['PHP_SELF']."?language=es_ES\">Español</a></p>\n";?>
<br /><br />

<?php print _("Not today!"); ?>
<br />

<a href="aaa.php">Next page</a>

</body>
</html>
Por cierto, si alguien tiene problemas con la codificación, que añada bind_textdomain_codeset("messages", 'UTF-8'); o es_ES.UTF8 en el idioma, en el caso de tenerlo en UTF-8. Yo tardé una semana en descubrirlo!!

Muchas gracias!!!
  #2 (permalink)  
Antiguo 27/03/2012, 00:29
 
Fecha de Ingreso: abril-2010
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Guardar idioma cookie Gettext

Hola de nuevo!

He encontrado un post de Kenichi que ha colgado este script:

Código PHP:
if (isset($_GET['idioma']))
{
 
setcookie('idioma',$_GET['idioma'],time()+60*60*24*365);
 echo 
"<script> location = '?'; </script>";

Parece que funciona en Firefox pero en internet explorer se va al directorio raíz. Supongo que es a causa de:

Código PHP:
<scriptlocation '?'</script> 
Además, la URL del explorador hace cosas raras como si redirigiera casi al instante.

Alguna idea?

Muchas gracias de antemano!
  #3 (permalink)  
Antiguo 27/03/2012, 11:04
 
Fecha de Ingreso: abril-2010
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Guardar idioma cookie Gettext

Hola de nuevo!!

He conseguido que se guarde la cookie pero el problema es que debo clickar dos veces para que funcione. Es decir, si selecciono "English" la web no se ve en inglés hasta que es recargada de nuevo.

Alguna sugerencia??

Código PHP:
<?php
// $language = 'ca_ES'; 
// Si se ha seleccionado un idioma se guarda una cookie con el idioma 
if(isset($_GET['language'])){ 
    
setcookie ("language"$_GET['language'], time () + 7*24*60*60); 
    
$language $_COOKIE['language'];
    echo 
"if isset"//Texto de control

elseif(isset(
$_COOKIE['language'])){ 
// Si language no está definido se define.
    
$language 'ca_ES'
    echo 
"else"//Texto de control


//Código própio de Gettext
putenv("LC_ALL=$language");
setlocale(LC_ALL$language);
bindtextdomain("messages""./locale");
textdomain("messages");
bind_textdomain_codeset("messages"'UTF-8'); 
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Documento sin título</title>
</head>

<body>
<?php print "<p><a href=\"".$_SERVER['PHP_SELF']."?language=en_GB\">English</a> - 
<a href=\""
.$_SERVER['PHP_SELF']."?language=es_ES\">Español</a> - 
<a href=\""
.$_SERVER['PHP_SELF']."?language=ca_ES\">Català</a></p>
\n"
;?>
<br /><br />

<?php print _("Avui no!"); ?>
<br />

<a href="aaa.php">Next page</a>

</body>
</html>
Muchas gracias de antemano!!

Etiquetas: cookie, gettext, html, idiomas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:35.