Skip to main content

Cómo identificar la lengua del visitante a nuestro sitio web

Cuando queremos que el visitante sea recibido en su propio idioma cuando llega a nuestro sitio web tenemos a nuestra disposición varias aproximaciones.
Una de las aproximaciones que se suele usar en la internacionalización de un sitio web es mediante la identificación de la ip se busca la localización geográfica de la misma, y en base al lugar de origen se presenta la web en un idioma u otro.
El problema de este enfoque además de se complejo y costoso en recursos es que en lugares donde se usa más de una lengua no nos resuelve ningún problema.
Más fácil es identificar la lengua del visitante mediante la lengua preferida propia del navegador. Php dispone de una variable que almacena esta información. De hecho almacena un array con todos los idiomas preferidos del visitante por orden.

El formato que identifica cada lenguaje se forma mediante un código de dos caracteres que identifica a la lengua y separada mediante un guion bajo el código que identifica al ámbito político al que esta adscrito. Por ejemplo, es_ES corresponde a español de España. Otro ejemplo puede ser eu_FR que corresponde a euskera de Francia.

Como regla general nos bastará en la mayoría de los casos identificar solamente el lenguaje.

Lo siguiente es un ejemplo de código que devuelve el código de lenguaje a partir de la información que transmite el navegador al servidor.

<?PHP

 //EXTRACT LANGUAGE CODE FROM BROWSER
 $language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

?>

Cómo instalar LAMP en Debian 6 Squeeze

El servidor LAMP es la suma de las aplicaciones Apache, MySql y PHP sobre Linux. Es la forma más sencilla de disponer de un servidor de aplicaciones web basadas en el lenguaje PHP. Es muy común ya que PHP se usa para desarrollar aplicaciones como el CMS WordPress, o foros como Phpbb.
Si bien ya disponemos de Debian 7 Wheezy, durante mucho tiempo seguiremos usando Debian 6 y por eso tener el apunte de como instalar LAMP en él nos puede resultar muy útil.

Para instalar LAMP en Debian 6 Squeeze abrimos un terminal y ejecutamos las siguientes ordenes:

apt-get install apache2
apt-get install mysql-server
apt-get install php5 php-pear php5-suhosin php5-mysql

Si queremos activar el modulo rewrite tras instalar Apache usaremos la siguiente orden:

a2enmod rewrite

Después de instalar el servidor de bases de datos MySQL podemos necesitar configurarlo. Esto lo podemos hacer con la siguiente orden:

mysql_secure_installation

Posteriormente podemos instalar phpmyadmin ya que es una utilidad casi imprescindible para gestionar fácilmente el servidor de bases de datos MySQL. Usaremos la siguiente orden:

apt-get install phpmyadmin

Después todo esto reiniciamos el servidor con:

service apache2 restart

Así quedará listo para usar

Symfony 2 requiere configurar la zona horaria en php.ini

Tras instalar Symfony 2 deberemos proceder a comprobar si el servidor cumple los requisitos necesarios para su ejecución. Esto lo podemos hacer con el comando:

php app/check.php

Muy probablemente nos aparezca el error siguiente:

ERROR    date.timezone setting must be set

El error se debe a que Symfony 2 necesita saber la zona horaria en la que se ejecuta el servidor. Para hacer esto tan solo debemos modificar los archivos de configuración de php editando la clave date.timezone. Modificaremos el que usa el servidor Apache y el que usa php en la línea de comandos. Estos ficheros se pueden abrir usando los siguientes comandos.

nano /etc/php5/apache2/php.ini
nano /etc/php5/cli/php.ini

En cada uno de los ficheros php.ini buscaremos la clave que configura la zona y la cambiaremos por la que nos corresponda. Por ejemplo buscamos la cadena de texto en cada php.ini:

;date.timezone =

Y para la zona horaria de Europa/Madrid  lo cambiamos por:

date.timezone = "Europe/Madrid"

Prestad atención a retirar el punto y coma al inicio de línea. Si en la busqueda no aparecierá la clave simplemente a la añadimos al final del  fichero de configuraón. El cambio lo haremos en los dos php.ini. Después reiniciamos el servidor con:

service apache2 restart

Como paso final probamos de nuevo la configuracion de Symfony 2 para ver si el  problema se resolvió, usando el comando:

php app/check.php

Si nuestra zona no corresponde a Europa/Madrid podemos usar el siguiente comando para orientarnos sobre las posibles zonas disponibles:

ls /usr/share/zoneinfo/