Website multilenguaje con PHP

Hoy día, debido a la globalización y demás artilugios que ha sido mejorada por los avances de la red. Es importante,  mas aún, necesario, que nuestros sitios o los de nuestros clientes puedan ser accedidos en diferentes idiomas para mejorar la captura de visitantes o clientes (si aplica) para facilitar la lectura de contenidos.

Son pocas las paginas web que posen la característica multilenguaje en cuanto a contenido, ya que esto implica redactar el contenido en diferentes idiomas, claro, sin mencionar los grandes portales (Goole, yahoo, Msn, etc). Sin embargo, sitios con estructura media como sitios informativos, aplicaciones, etc. que por lo general son orientadas a un idioma pueden ser rápidamente convertidas a multi-lenguage con php.

Para esto podemos hacerlo de dos formas: primero, podemos realizarlo mediante la inclusion de archivos fijos (planos) que contengan el contenido en los diferentes idiomas. o bien; segundo: utlizando base de datos.

Para esta guía utilizaremos la primera opcion “archivos fijos”.

Primero:

Para iniciar crearemos una carpeta o directorio en la que colocaremos nuestros archivos fijos por idioma. Por ejemplo, vamos a crear una archivo llamado “es.lang.php”. En este definiremos una serie de constantes la cuales seran una representacion de los textos que queremos traducir a otros idiomas.

//Contenido de “es.lang.php”:

Lo que tenemos ente los pags de <php … ?>, es la definicion de constantes que incluyen el contenido que queremos traducir. Para esto utilizamos la funcion PHP : define(‘NOMBRE’,’VALOR’);, es decir, NOMBRE representa el nombre de la constante y VALOR, por si mismo es valor o informacion contenida en la constante.

Segundo:

El proceso de inclusion de los idiomas en nuestro sitio puede hacerse por varios metodos de indicacion, es decir, podemos utilizar cookies, sessiones o simplemente variables de direccionamiento mediante la barra de direccion. Para nuestra guia utilizaremos sessiones de php; esta por que podemos interactuar con los otros dos metodos de forma lineal y sin entorpecer quizas nuestra estructura (si aplica) de nuestro sitio web.

Para inlcuir el archivo de idioma, colocaremos las lineas de código necesarias bien sea en cada un de nuestros archivos php, en caso de ser una sitio no modular, o bien en nuestro controller si se utiliza MVC o mecanismo de inludes para el contenido:

El anterior codgo php lo colocamos al inicio de nuestros archivos o bien al principio de nuestro controller, o algun archivo de inclusion que podamos cargar en las primeras lineas de nuestras paginas, claro, posterior a session_start() si ya tenemos el llamado en nuestro sitio. de lo contrario la variable de session lang no podra ser creada y al momento de cambiar de pagina (contenidos) o al hacer click perderemos el idioma seleccionado y tomara el idioma asignado por defecto.

Una vez hecho esto procedemos a crear los demas archivos de idiomas “en.lang.php” y “fr.lang.php” con la misma infromacion o codigos que “es.lang.php”,salvo que ahora el valor de cada constante sera igual a la traducion de cada uno. Ejemplo:

De esta forma podremos tener un sitio multilenguaje que “recuerda” idioma elegido durante toda nuestra visita al sitio. Esto gracias la la session de PHP.

Espero les sea de utilidad. Y como siempre, CODE IS POETRY!

  • Luis

    Hola al ejecutar el código me saca un error:

    ” Notice: Undefined variable: site_path in C:\Program Files (x86)\VertrigoServ\www\Multilenguaje\index.php on line 32″

    Me podrías ayudar por favor.

  • Hola Luis,

    Lo primero es que tienes error_reporting habilitado lo que es bueno cuando se esta desarrollando para notar estos errores. Y el error con esa variable $site_path es que es una variable que no esta declarada o bien no tiene ningun valor y por tanto php te dice que estas llamando una variable no declarada. En este ejemplo $site_path es una referencia a la ruta de tu script con relacion a la raiz de documentos de tu servidor o tu host virtual. Algo simbolico de referencia. Sustituye esta variable con ./ o bien solo eliminarla.