28

May


Web multilingüe con PHP

Autor: David

En esta ocasión vamos a ver lo sencillo que es tener un sistema multilingüe para nuestra web. Sólo debemos incorporar el siguiente código al inicio de todas las páginas.

PHP:
  1. //si no existe la variable lang:
  2. //comprobamos si existe la cookie
  3. //en caso contrario asignamos idioma del navegador
  4. $lang=$_GET['lang'];
  5. if($lang==false){
  6.     if($_COOKIE["lang_cookie"]){$idioma=$_COOKIE["lang_cookie"];}
  7.     else{
  8.         $navegador=substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
  9.         if($navegador=='en'){$idioma='en';}
  10.         elseif($navegador=='fr'){$idioma='fr';}
  11.         else{$idioma='es';}
  12.     }
  13. }
  14. else{
  15.         if($lang=='en'){$idioma='en';}
  16.         elseif($lang=='fr'){$idioma='fr';}
  17.         else{$idioma='es';}
  18. }
  19. //enviamos cookie para mantener la selección del usuario
  20. setcookie("lang_cookie",$idioma,time()+3600);
  21.  
  22. echo $idioma;

Este código lo que hará en primer lugar es asignar un idioma a los usuarios nuevos, que será el idioma principal que tenga su navegador. Esto supongo que ya sabréis donde se cambia, pero por si acaso, sólo es necesario ir a Herramientas -> Opciones de Internet -> Idiomas, en nuestro navegador.

Luego podemos poner las típicas banderitas de idiomas con un enlace a cualquier página o $PHP_SELF, incluyendo la variable "lang" con el idioma que proceda. Por ejemplo:

HTML:
  1. <a href="index.php?lang=es">Español</a><br>
  2. <a href="index.php?lang=fr">Français</a><br>
  3. <a href="index.php?lang=en">English</a>

 

Con la variable $idioma que retorna el script, podemos hacer después un include al archivo de idioma en cuestión, que contrendrá las traducciones de los contenidos:

PHP:
  1. include("languages/".$idioma.".php");

Ejemplo de archivo de idioma español, es.php:

PHP:
  1. define('HEADER_TITLE', 'Inicio');
  2. define('CONTENT', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua<br><br>');
  3. define('FOOTER', '&copy; 2008 bitacoraweb.com');
  4. ...

Salu2



3 Comments Send your comment

  1.   devy

    Hola, me parece excelente este tutorial, pero me queda una gran dudad, exactamente como va el html de index.php? es decir, etamos definiendo HEADER_TITLE, CONTENT y FOOTER, pero estos cómo se sitúan en index.php si solo llamamos el include con las definiciones?… ojalá que me puedar responder ;) apenas estoy comenzando con php.

  2.   David

    Hola Devy,

    Pues simplemente incorporas la variable definida dentro de tu HTML.

    Por ejemplo

    < ?php echo CONTENT;?>

    Salu2

  3.   devy

    Perfecto, gracias David! :D


Leave a Reply