Foros del Web » Programando para Internet » PHP »

Hacer sitio web multiidioma

Estas en el tema de Hacer sitio web multiidioma en el foro de PHP en Foros del Web. Muy buenas a todo el mundo, soy nuevo en el foro así que disculpadme si cometo algún error a la hora de explicarme. Estoy trabajando ...
  #1 (permalink)  
Antiguo 02/02/2016, 11:22
 
Fecha de Ingreso: febrero-2016
Mensajes: 2
Antigüedad: 8 años, 9 meses
Puntos: 0
Exclamación Hacer sitio web multiidioma

Muy buenas a todo el mundo, soy nuevo en el foro así que disculpadme si cometo algún error a la hora de explicarme.

Estoy trabajando con una web (básica, solamente cuenta con PHP y JS). El caso es que dicha web ya estaba hecha cuando yo he entrado a tocarla... La cuestión es que estoy intentando arreglar un problema con las traducciones del sitio, el problema me viene cuando hago click sobre algún enlace que me lleve a otra página del sitio (por ejemplo a inicio), el enlace me debería de llevar a la dirección por ejemplo:

http://misitio.com/es/index

Sin embargo esto no funciona, me devuelve un 404. Cuando intento acceder al fichero individualmente tal que así:

http://misitio.com/index.php

Si se muestran los datos correctamente, pero obviamente esto no interesa, porque lo que necesito es que la web sea multilenguaje.

Esta web está hecha desde hace bastante tiempo, por lo que puede ser un problema con la versión del PHP, pero quiero saber si esto le ha pasado a más gente o si me pueden ayudar de alguna manera porque ando muy perdido

Un saludo y gracias por leer.
  #2 (permalink)  
Antiguo 02/02/2016, 11:32
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Hacer sitio web multiidioma

bueno para que sea multiidioma no es necesaario crear directorios por cada idioma a utilizar, solo necesitas de una cookie y un archivo php por cada idioma a utilizar, sria algo asi mas o menos:

idioma ingles (ejemplo):
Código PHP:
Ver original
  1. //idioma ingles
  2. define('cabecera','header');
  3. define('casa','house');
  4. define('puerta','door');
  5. //y así sucesivamente

lo siguiente lo puedes colocar en un archivo externo y integrarlo con un include en las paginas a traducir:

Código PHP:
Ver original
  1. session_start(); //iniciamos una sesion en el navegador
  2. header('Cache-control: private'); // IE 6 FIX
  3.  
  4. if(isset($_GET['lang'])){
  5.     $lang = $_GET['lang']; //verificamos si se envío el idioma
  6.  
  7.     //registra sesion
  8.     $_SESSION['lang'] = $lang; registramos la sesion basada en el idioma enviado
  9.    
  10.     //define cookie
  11.     setcookie('lang', $lang, time() + (3600 * 24 * 30)); definimos una cookie con el idioma
  12.    
  13.     //busca en variables cookie y session
  14. }else if(isset($_SESSION['lang'])){
  15.     $lang = $_SESSION['lang'];
  16. }else if(isset($_COOKIE['lang'])){
  17.     $lang = $_COOKIE['lang'];
  18. }else{
  19.     $lang = 'es';
  20. }
  21.  
  22. //cargamos el archivo de traduccion correspondiente al idioma seleccionado y si no se ha seleccionado uno, cargamos uno por defecto
  23. switch ($lang) {
  24.   case 'en':
  25.   $lang_file = 'lang/lang.en.php';
  26.   break;
  27.  
  28.   case 'es':
  29.   $lang_file = 'lang/lang.es.php';
  30.   break;
  31.  
  32.   case 'po':
  33.   $lang_file = 'lang/lang.po.php';
  34.   break;
  35.  
  36.   default:
  37.   $lang_file = 'lang/lang.es.php';
  38.  
  39. }
  40.  
  41. include_once $lang_file;

y donde vas a traducir va esto:


Código PHP:
Ver original
  1. <?php echo CASA; //traduce casa si es ingles se visualiza house ?>


podrias configurar un par de enlaces o select de esta manera:

Código HTML:
Ver original
  1. <a href="testb.php?lang=es">Español</a>
  2. <br>
  3. <a href="testb.php?lang=en">Ingles</a>
  4. <br>

y el php que cambia el idioma (crea la cookie):
Código PHP:
Ver original
  1. if($_GET['lang']=="es"){
  2. setcookie('lang','es');
  3. }else{
  4.     setcookie('lang','en');
  5. }
  6.  
  7. header('location:'.$_SERVER['HTTP_REFERER']);

de esa manera cambias el idioma con un enlace y este te devuelve a la pagina en la que estabas al momento de solicitar el cambio.

podrias utilizar js para creaer las variables de sesion y cookie de idioma cuando el visitante le haga clic a un enlace o un select por ejemplo. Saludos
__________________
[email protected]
HITCEL

Última edición por xfxstudios; 02/02/2016 a las 11:53
  #3 (permalink)  
Antiguo 03/02/2016, 03:26
 
Fecha de Ingreso: febrero-2016
Mensajes: 2
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: Hacer sitio web multiidioma

Muchas gracias por la rápida contestación.

Esa forma de hacerlo me parece mucho más óptima, de hecho cuando yo tengo que hacer traducciones de un sitio web lo hago de una forma parecida.

El caso es que este sitio web ya viene con un sistema de traducción, y es el que he comentado en el primer mensaje. El cambiar dicho sistema no es una opción, así que tengo que solucionar el problema que tengo con el sistema que hay...

¿A alguien se le ocurre algo?

Un saludo y gracias por leer.
  #4 (permalink)  
Antiguo 03/02/2016, 04:43
 
Fecha de Ingreso: abril-2015
Mensajes: 189
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: Hacer sitio web multiidioma

Creo que has dado poca información , la función de multilenguaje alguna vez ha funcionado en esa web ?

Por lo que dices ahi puede ser algo tan tonto como que los enlaces href esten señalando a una ruta que no existe.

Como esta implementada la función de multiidioma ?

Etiquetas: idiomas, multiidioma, multilenguaje, traduccion
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 08:52.