Foros del Web » Programando para Internet » PHP »

PHP OO Sitio web multilenguaje

Estas en el tema de Sitio web multilenguaje en el foro de PHP en Foros del Web. Hola Amigos del foro, necesito de su ayuda. Les explico: Estoy haciendo una pequeña web en PHP la cual debe tener opción a cambiar a ...
  #1 (permalink)  
Antiguo 07/01/2015, 23:02
 
Fecha de Ingreso: enero-2015
Mensajes: 2
Antigüedad: 9 años, 3 meses
Puntos: 0
Pregunta Sitio web multilenguaje

Hola Amigos del foro, necesito de su ayuda. Les explico:

Estoy haciendo una pequeña web en PHP la cual debe tener opción a cambiar a 2 idiomas distintos y el método que quiero usar es el siguiente:

Crear un archivo en PHP para cada idioma, ejemplo: es.php y en.php y dentro de cada archivo tener todas las cadenas de texto de la siguiente manera:

es.php
$_LANG['search'] = "Buscar";

en.php
$_LANG['search'] = "Search";

Luego en el sitio web tener una especie de shortcode similar a este:

{$LANG.search}

De tal manera que al seleccionar un idioma determinado me muestre la traducción correspondiente.

Alguien que pueda o sepa como hacerlo y pueda ayudarme, le estaré eternamente agradecido.

Gracias
  #2 (permalink)  
Antiguo 08/01/2015, 06:44
Avatar de 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
  #3 (permalink)  
Antiguo 08/01/2015, 10:00
 
Fecha de Ingreso: enero-2015
Mensajes: 2
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Sitio web multilenguaje

Hola fbedia

Gracias por tu ayuda, me parece muy buena tu sugerencia solo cambiaría la opción de detectar el idioma del navegador, por un modo manual, un select donde estén las opciones de los idiomas disponibles y sea el usuario que seleccione el idioma de su preferencia y le añadiría la posibilidad de guardar el valor de la sesión en una cookie, así cuando el usuario regrese el sitio web recuerde el idioma de su preferencia.

Gracias de nuevo por tu ayuda, espero esta información le pueda ser de utilidad a alguien mas.

Saludes.

Etiquetas: multilenguaje
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:30.