Página en dos idiomas

Estoy desarrollando un sitio web y quiero hacerlo en dos idiomas y bajo php. Había pensado en almacenar en una cookie el idioma y leerlo a partir de el. Sin embargo, no sé cual es la forma más correcta de continuar. Por favor, indícame:
-Cada script que se ejecute lee directamente el idioma de la cookie.
-Sólo lee el idioma de la cookie el primer script que se ejecute y a los siguientes se le pasa el idioma mediante variables GET.
-Sólo lee el idioma de la cookie el primer script que se ejecute y a los siguientes se les pasa mediante una variable de sesión.
Respuesta
1
La primera o tercera opciones son viables, sin embargo, ten en cuenta que mucha gente no solo borra sus cookies sino que impide su almacenamiento. Quizá sea más útil preguntar el idioma en un script y guardarlo en una variable de sesión.

6 respuestas más de otros expertos

Respuesta
1
Dependiendo de tu aplicación yo usaría una manera u otra:
Si vas a hacer un uso intensivo de variables de sesión, usaría la opción 3.
Si usas mucho las cookies, la 1.
No me decantaría por la 2 en ningún momento.
Sólo utilizaría sesiones para el idioma, no para otra cosa, porque no voy a hacer gestión de usuarios ni nada por el estilo. Por eso no sé si compensa utilizar sesiones (con los recursos que consumen) solamente para pasar la variable del idioma.
Pues si no las vas a utilizar, usa cookies...
Lee la cookie al inicio de cada script y en función de ello, carga el idioma.
Te sugiero que generes arrays que dependan del idioma (por ejemplo $textoBienvenida[$valorcookie] siend $valorcookie=0 para castellano y $textoBienvenida[$valorcookie] siendo $valorcookie=1 para Ingles.
Respuesta
1
Vamos por partes si lo que quieres es poner la página web en el mismo idioma que el que el usuario posee en su PC entonces no sería necesario hacer todo lo que dices porque PHP trae sus propias variables para determinar el idioma de la PC del usuario. Por ejemplo es si la PC del usuario está en idioma Ingles entonces la página tuya saldría en Ingles. Lo que harías sería lo siguiente. Creas varios ficheros llamados lang-spanish.php, lang-english.php, lang-french.php y así para cuantos idiomas quieras. Donde el contenido de las mismas serían variables predefinidas, por ejemplo:
******************************
define("VAR1","Variable1");
define("VAR2","Variable2");
define("VAR3","Variable3");
******************************
Luego pones este código en las paginas donde quieres que cambie el idioma:
******************************
if ($HTTP_ACCEPT_LANGUAGE != ''){ # Verificamos que el visitante haya designado algún idioma
$idiomes = explode(",",$HTTP_ACCEPT_LANGUAGE); # Convertimos HTTP_ACCEPT_LANGUAGE en array
/* Recorremos el array hasta que encontramos un idioma del visitante que coincida con los idiomas en que está disponible nuestra web */
for ($i=0; $i<count($idiomes); $i++){
if (!isset($idioma)){
if (substr($idiomes[$i], 0, 2) == "fr"){
include("lang-french.php");
}
if (substr($idiomes[$i], 0, 2) == "es"){include("lang-spanish.php");}
if (substr($idiomes[$i], 0, 2) == "en"){include("lang-english.php");}
}
}
# Si no hemos encontrado ningún idioma que nos convenga, mostramos la web en el idioma por defecto
if (!isset($idioma)){include("lang-spanish.php");}
******************************
Ahora en tu página eb lugar de poner simplemente el valor de la variable prondrías VAR1, o sea mira este código:
Original
=============================
<tr><td>Variable1</td></tr>
<tr><td>Variable2</td></tr>
<tr><td>Variable3</td></tr>
Haciendo uso de las definiciones
=============================
<tr><td>VAR1</td></tr>
<tr><td>VAR2</td></tr>
<tr><td>VAR3</td></tr>
Y ya esta ahora VAR1, VAR2 y VAR3 tomaran valores en dependencia del lenguaje del SO del usuario.
Respuesta
1
Con el php-nuke, lo de los idiomas seria mucho más sencillo.
Con crear varios ficheros para cada idioma en el que se definen todas las traducciones, y en la página llamar a estas traducciones ya bastaría.
¿Lo conoces? Sino echa un vistazo o ya te explico como va, con más detalle.
He oído hablar de él, pero nunca me he parada a mirarlo. La verdad es que agradecería más información acerca del nuke.
Si necesitas información acerca de php-nuke, lo mejor sería que busques páginas en google, que hay un montón, y vayas recogiendo información.
Pero para tu caso, te iva a venir de maravilla. Si tienes alguna duda en concreto me comentas. ¿Ok?
Es que explicártelo aquí sería tarea casi imposible, porque es un tema demasiado amplio.
Respuesta
1
Lo que podes hacer es averiguar el idioma del navegador... esto, a través de javascript y luego trabajar en base a ello...
El código que te informa del idioma es:
function idioma() {
if (navigator.userAgent.indexOf("Opera")!=-1) (language=navigator.language)
else { if (navigator.appName == "Netscape") (language=navigator.language)
else language=navigator.browserLanguage };
if(language){language=language.substring(0,2);}
else {language="zz";}
switch (language) {
case "en" : window.location="pagina_en_ingles.html"; break;
case "es" : window.location="pagina_en_espanol.html"; break;
default : window.location="pagina_en_catalan.html"; } }
Cualquier duda me consultas...
Respuesta
1
Te recomiendo el tercer punto que nombras.
El usar cookies no te lo recomiendo mucho ya que no todos los navegadores las soportan, ademas algunos usuarios desactivan la opcion de las cookies. La idea es no usar cookies si no que siempre que un usuario entre al tu sitio, tu le tires el idioma inicial que podr{ia ser el español por ejemplo, activas una session y en ella colocal una variable $_SESSION['idioma']="espanol"; y cada vez que el usuario presione el boton de cambio de idioma tu preguntas,
if ($_SESSION['idioma']=="espanol")
{ $_SESSION['idioma']=="ingles"; }
else
{$_SESSION['idioma']=="espanol"; }
Logiamente tienes que estar leyendo en todas las páginas la varieble de sesión y presentarle al usuario el idioma que en ella esta definida..
Respuesta
1
Cualquiera de las tres opciones funcionaria si se programa adecuadamente.
Lo más sencillo es hacerlo todo con cookies (aunque los navegadoes de los visitantes pueden tenerlas desactivadas)
Y el resto de los scripts leen el idioma de la cookie.
Pero lo más elegante es leer el idioma del navegador del cliente y almacenarlo en una sesión y hacer que los scripts lean la sesión al empezar.
De todas formas, a gusto del consumidor.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas