17 Feb 2006

Tips de Diseño Web: Sirve paginas de acuerdo al idioma del navegador

Como no tengo tiempo de escribir tutoriales en forma, he preparado esta serie de post cortitos con cosas que a mi me son muy útiles y que he ido usando religiosamente en cada nuevo diseño tanto como a los blogstars les gusta hablar de ellos mismos. Éste lo he usado sólo una vez, pero le veo mucho futuro.

Una de mis metas al liberar ZenGarage (¡700 descargas!) era no limitarme a ofrecerlo sólo a un publico hispanoparlante, de hecho, la idea fue siempre lanzarlo primero en inglés pero al final me dió pánico escénico.

Gracias a que algunos de ustedes lo seleccionaron, ZenGarage llegó a del.icio.us/popular y se quedó ahí casi un dia entero. A partír de ahí, llegó a sitios en inglés como CSSDrive y CSSBeauty y otros tantos que gentilmente lo enlazaron.

Afortunadamente había puesto en marcha esta pequeña técnica experimental que lo que hace es básicamente mostrarle una página en español a quienes la visiten con un navegador en español y una página en inglés a todos los demás:

<?php
  $a=explode(';',$GLOBALS[HTTP_ACCEPT_LANGUAGE]);
  if (preg_match('/es/',$a[0]))
  {
    include('includes/es.php');
  }
  else
  {
    include('includes/en.php');
  }
?>

La variable de entorno $GLOBALS[HTTP_ACCEPT_LANGUAGE] contiene un array con todos los lenguajes y códigos de país del navegador que accesa al script separados por un puntoycoma (;). En este caso solo checo si el lenguaje principal contiene la subcadena 'es' (puede ser 'es-es', 'es-mx', 'es-ar', etc.) y, de ser así incluyo la pagina en español, de lo contrario una en inglés.

Lo que me sorprende es que nadie se quejó de mi inglés defectuoso.

Acabas de leer «Tips de Diseño Web: Sirve paginas de acuerdo al idioma del navegador», un post escrito por sosa a medio día archivado en la categoría Diseño .

Josepzin #1 | Febrero 17, 2006 01:11 PM Josepzin dice:

El sistema es bueno, aunque se complica cuando el archivo “es.php” tiene que incluir los textos de TODO un sitio con muchos contenidos…

Digo que se complica porque tiene que leer muchas variables/datos… ¿O esto no es importante y no afecta para nada el rendimiento?

sosa #2 | Febrero 17, 2006 01:29 PM sosa dice:

Josepzin: Sinceramente no sé. Esta idea es, como dije, solo para servir una pagina en dos idiomas, proveer de internazionalización a todo un sitio es otra cosa totalmente distinta.

Federico #3 | Febrero 17, 2006 04:58 PM Federico dice:

Más alla de que, personalmente, considero que un documento en dos idiomas diferentes son distintos documentos, tu condicional tiene un falla: ¿qué pasa si el español es el idioma alternativo y el inglés el preferido? Tendrías que fijarte en qué orden aparecen en el HTTP_ACCEPT_LANGUAGE. :)

sosa #4 | Febrero 17, 2006 07:16 PM sosa dice:

Federico: No es una falla, es una característica. Asumo: si su idioma preferido es el inglés entonces preferirá leer en inglés no?

Respecto a lo otro, otra vez, es una solución para un problema muy particular. Si el usuario angloparlante entraba a ZenGarage y no entendía nada dudo mucho que se pusiera a buscar el botón que dijera “English version” y en todo caso: Cual enlazarían desde del.icio.us?

Federico #5 | Febrero 17, 2006 09:46 PM Federico dice:

Olvida lo que dije. No tomé en cuenta el explode en la primera linea. :)

stan #6 | Febrero 17, 2006 10:29 PM stan dice:

man, no habia tenido oportunidad de decirtelo, pero muchas felicidades por el proyecto ya lo estare probando y es bueno que te animes a sacar proyectos asi.

Un saludo y todo el exito del mundo en esta nueva aplicacion :)

sosa #7 | Febrero 18, 2006 12:16 AM sosa dice:

Gracias Stan, a conquistar el mundo no?

Josepzin #8 | Febrero 26, 2006 12:39 PM Josepzin dice:

Al final lo estoy probando a este sistema, a ver que tal.

Hice una modificacion: antes de detectar la variable global, pregunto si $a tiene algun valor. Si lo tiene es que ya viene como parametro en la linea url y entonces uso ese valor.

Esto quiere decir: apenas entrar a la web, toma el valor de idioma del explorador, si el usuario luego elige otro idioma para ver la página, entonces ya sigue con ese.

Supongo que esto se podría generar usando una cookie o algo asi… ya veré :)

Contribuye a la discusión

  • Si quieres puedes tener una imagen que te distinga cuando comentes utilizando el servicio de Gravatar
  • Todo post ofensívo y/o ajeno a la discusión será eliminado inmediatamente
  • El HTML no está permitido, pero puedes formatear usando la sintáxis de Textile
  • Si quieres decirme algo privado ;) puedes utilizar la forma de contacto