Tips de Diseño Web: Sirve paginas de acuerdo al idioma del navegador
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.
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?
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.
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. :)
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?
Olvida lo que dije. No tomé en cuenta el explode en la primera linea. :)
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 :)
Gracias Stan, a conquistar el mundo no?
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