Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/01/2015, 06:44
Avatar de fbedia
fbedia
 
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Sitio web multilenguaje

Hola!
Yo hace poco hice una web multiidioma... te digo como lo realice por si te sirve de ayuda:

1º: Tengo un fichero llamado "traducciones.php" con todos los textos traducidos en variables de tipo array:
Código PHP:
Ver original
  1. <?php
  2. $menu = array(
  3.     "es" => "Menu",
  4.     "en" => "Menu",
  5. );
  6. $enviar = array(
  7.     "es" => "Enviar",
  8.     "en" => "Send",
  9. );
  10. $titulo = array(
  11.     "es" => "Titulo",
  12.     "en" => "Title",
  13. );
  14. $pagina404txt = array(
  15.     "es" => "La p&aacute;gina solicitada no existe",
  16.     "en" => "The page you requested does not exist",
  17. );
  18. $pendienteDeTraducir = array(
  19.     "es" => "La p&aacute;gina solicitada estar&aacute; traducida dentro de poco",
  20.     "en" => "The page you requested will be translated coming soon",
  21. );
  22. $errorOcurrido = array(
  23.     "es" => "Se ha producido un error inesperado",
  24.     "en" => "There was an unexpected error",
  25. );
  26. ?>

2º: En otro fichero llamado por ejemplo "test_language_session.php" tengo el siguiente codigo:
Código PHP:
Ver original
  1. //comprobamos si existe la variable de sesion con el idioma
  2. if(!isset($_SESSION["lang"])) {
  3.     //inicializamos por defecto el idioma
  4.     $_SESSION["lang"]="es";
  5.     //comprobamos el idioma del navegador
  6.     $nav_lang =substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
  7.     switch ($nav_lang) {
  8.         case "es":
  9.             $_SESSION["lang"]="es";
  10.             break;
  11.         case "en":
  12.             $_SESSION["lang"]="en";
  13.             break;
  14.         default:
  15.             $_SESSION["lang"]="es";
  16.             break;
  17.     }
  18. } else {
  19.     //como mera comprobacion
  20.     switch ($_SESSION["lang"]) {
  21.         case "es":
  22.             break;
  23.         case "en":
  24.             break;
  25.         default:
  26.             $_SESSION["lang"]="es";
  27.             break;
  28.     }
  29.  
  30. }

Este fichero esta incluido al principio de cada pagina del proyecto, aunque no es necesario.

De esta forma, siempre tengo en la variable de sesion "lang" el idioma del usuario, que en este caso puede ser "es" o "en".

3º: Por ultimo, el todas las paginas del sitio web pongo los textos de la siguiente forma:
$nombre_variable[$_SESSION['lang']]; de forma que cuando la variable de sesión sea "es" o "en", muestre el texto del array correspondiente.
Ejemplos...
Código PHP:
Ver original
  1. <meta charset="UTF-8" name="description" content="<?php echo $metaDescription[$_SESSION['lang']]; ?>">
  2.     <meta charset="UTF-8" name="keywords" content="<?php echo $metaKeywords[$_SESSION['lang']]; ?>">
  3.  
  4. ....
  5.  
  6. <div class="wrapper">
  7.     <h1><?php echo $pagina_titulo[$_SESSION['lang']]; ?></h1>
  8. </div>
  9.  
  10. ....

Como veras, de esta forma es facil añadir un nuevo idioma en el futuro! Simplemente añadir el nuevo idioma con sus traducciones en los arrays... y modificar un poco la funcion del punto 2º.

En esta funcion del punto 2º, veras que por defecto coje el idioma del navegador.... y en caso de que no sea "es" o "en", deja por defecto el españor....
Esto lo puedes adaptar a tu gusto...

Espero pueda servirte de ayuda.
Un saludo.
__________________
Follow me on twitter @franbedia