Cómo crear una web multiidioma

Cómo crear una web multiidioma

HELLO in eight different languages

Hoy en día si un negocio que tenga una web no la tiene en varios idiomas perderá un buen nicho de mercado, todas esas miles de millones de personas que no hablan español, si quieres vender por internet necesitarás que tus visitantes te entiendan y que menos que ofrezcas la opción de cambiar de idioma, aunque sea solo en inglés.

Para traducir una web hay multitud de formas, veamos distintas formas de hacerlo dependiendo de nuestras necesidades y evidentemente, como no hacerlo.

Cómo no hacer una web multiidioma – modelo 1 –

Es importante sobretodo para el mantenimiento de la web no hacer las cosas redundantes, y es que una forma de ofrecer una web es creando un archivo por página e idioma pudiendo tener un árbol de archivos del estilo de…

index_es.html – index_en.html – about_es.html – about_en.html

A la hora de hacer una modificación en la web nos podemos volver locos ya que hay que pasearse por todos y cada uno de los archivos (a más idiomas más archivos, todos duplicados exceptuando el texto), además de que nos podemos dejar página con un cambio antiguo de un idioma especifico…

 

Cómo hacer una web multiidioma – modelo 1 –A-Multilingual-Web-Site

Si nuestra web es una web principalmente estática, a excepción de alguna sección de noticias… una forma sencilla, rápida y sin hacer excesivos cambios a la web que ya tenemos creada es creando unos sencillos archivos de idiomas poniéndolos en una carpeta propia que llamaremos lang, dentro de la carpeta guardaremos archivos de idiomas que llamaremos

es.php – en.php – fr.php – ru.php

Y ahora vamos a organizar todo un poco…

Vamos a hacerlo para que conforme alguien acceda a la web nuestro script se encargue de comprobar qué idioma nos solicitan, mostrar uno por defecto si no nos han solicitado ninguno o mostrar el último idioma con el que se ha navegado por la web, para ello escribiremos en el header.php

<!--?php session_start();

/*Lo que vamos a comprobar primero es si se esta solicitando un nuevo idioma
Si se esta solicitando, verificamos que el idioma existe tambien*/

if(!empty($_REQUEST['local']) &#038;& file_exists('lang/'.$_REQUEST['local'].'.php')){

  /*Entonces lo que vamos a hacer ahora, es decir que a partir de ahora,
  nuestro idioma por defecto es este, al menos que se solicite cambiarlo de vuelta*/

  $_SESSION['local'] = $_REQUEST['local'];

  //y esto lo vamos a usar despues
  $language = $_REQUEST['local'];
}

//Sino se solicito ningun idioma, verificamos si quedo guardado en nuestra session

elseif(isset($_SESSION['local']))

  //Lo mismo que antes, esto para despues

  $language = $_SESSION['local'];

//Y por ultimo, si nada de lo anterior cumple los requisitos, cargamos el idioma, que seria el idioma por defecto

else
  $language = 'es';
require_once('lang/'.$language.'.php');

?-->

En los archivos de idiomas escribiremos los textos traducidos, veamos el es.php

    $text['reservar'] = 'RESERVAR';
    $text['index'] = 'INICIO';
    $text['index_sub'] = 'empieza aqu&amp;iacute;';
    $text['habs'] = 'HABITACIONES';
    $text['habs_sub'] = 'nuestras habitaciones';
    $text['acti'] = 'ACTIVIDADES';
    $text['acti_sub'] = 'qu&amp;eacute; puedes hacer';
    $text['galeria'] = 'GALERIA';
    $text['galeria_sub'] = 'fotos!';
    $text['noticias'] = 'NOTICIAS';
    $text['noticias_sub'] = 'qu&amp;eacute; ocurre?';
    $text['contacto'] = 'CONTACTO';
    $text['contacto_sub'] = 'te ayudamos?';
    $text['email'] = 'info@tuemail.com';

Almacenamos toda la información en arrays ya que al ser una web estática no necesitaremos nada más laborioso.

Ahora para mostrar el texto traducido según que idioma queramos…

 

Y mostramos el texto…

  • <!?php echo $text[‘index_sub’]; ?>

 

Para la siguiente os mostraré más formas de tener webs multiidioma

Javier Hernández

Related Posts
Comments ( 7 )
  1. Alex
    24/01/2014 at 2:34 am
    Reply

    Perfecto Javier, me has sacado de un apuro, no sabía como enfrentarme a una página web en varios idiomas.

  2. caro
    15/09/2014 at 3:38 am
    Reply

    Hola. Estoy teniendo problemas para hacer funcionar el ejemplo. Me sale error “undefined inde..” para todos los array. Como lo puedo solucionar? Gracias!

    • javierh
      javierh
      15/09/2014 at 7:01 pm
      Reply

      Hola Caro,
      Por lo que dices parece que estás accediendo a un array que no existe. Prueba a revisar que las comillas (” “) estén bien ya que es habitual que al cambio de navegador a editor de texto las comillas den problemas.
      Tanto a mi como a conocidos y a Alex que ha comentado aquí arriba nos funciona 😉

  3. Zorbor
    21/10/2014 at 8:44 pm
    Reply

    Hola, me llamo Zorbor;

    Tengo un problema al usar tu código para el sitio multi-idioma. Al cambiar de Site me vuelve a dar el idioma definido por el explorador. La idea es que se mantenga en el idioma. El código ha de ir sólo en index.php o en todos los Site?

    Gracias! 🙂

    • javierh
      javierh
      05/11/2014 at 7:05 pm
      Reply

      Hola Zorbor,
      Debes de consultar si ya hay un idioma asignado (seleccionado) en ese caso da prioridad al idioma seleccionado sobre el predefinido por defecto o el detectado por el navegador.
      Respecto a dónde debe ir el código te recomiendo que uses un archivo header.php donde gestiones el inicio común para todos tus archivos, lo que viene siendo lo que hay antes del o incluso si tienes algún menú sería interesante incluirlo en ese archivo, te ahorras la duplicidad de código y tan solo deberías incluir el header.php en todos tus archivos include(“header.php”);

  4. Rodrigo
    07/01/2016 at 11:42 pm
    Reply

    Hola, quisiera saber si esto se puede aplicar a un sitio hecho en html? de no ser así como podría hacer un sitio multi-lenguaje en html?

    Gracias!

    • Javier Hernández
      Javier Hernández
      09/01/2016 at 1:56 pm
      Reply

      Como poder puedes ponerlo en un html, pero deberás renombrar el archivo con un .php y no con un .html además de tener un servidor que interprete php.
      Un sistema multilenguaje en html puro solo se consigue duplicando el mismo documento tantas veces como idiomas queramos incluir, cada documento con un idioma.

      Saludos

Leave a reply