Foros del Web » Programando para Internet » PHP »

Detectar idioma y hacer un include personalizado

Estas en el tema de Detectar idioma y hacer un include personalizado en el foro de PHP en Foros del Web. Hola saludos a todos los del foro pues aqui me tienen de nuevo, mi problema es de que estoy haciendo un sitio multilenguaje y me ...
  #1 (permalink)  
Antiguo 10/07/2009, 03:08
Avatar de JesusCruz88  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/baja-california/?city=tijuana&action=addmeFriend
Mensajes: 53
Antigüedad: 15 años, 10 meses
Puntos: 1
Detectar idioma y hacer un include personalizado

Hola saludos a todos los del foro pues aqui me tienen de nuevo, mi problema es de que estoy haciendo un sitio multilenguaje y me gustaria que cuando el usuario entre al sitio se muestre dependiendo del idioma del navegador (solo tengo 6 idiomas), y ya que si el usuario quiere cambiar de idioma se pueda hacer manual sin que esto tenga conflicto con el que detecta el idioma y que el usuario que haya escojido un idioma se guarde en una cookie actualmente yo utilizo este script pero no me detecta solo pone el idioma por default y el usuario tiene que cambiar manualmente, este es el script...

Código PHP:
<?
$currentLang 
'es';

if(isset(
$_GET['lang'])){
  
$currentLang $_GET['lang'];
}
elseif(isset(
$_COOKIE['lang'])){
  if(
file_exists("library/langs/".$_COOKIE['lang'].".inc.php")){
    
$currentLang $_COOKIE['lang'];
  }
}

include 
"library/langs/".$currentLang.".inc.php";
?>
Espero que alguien pueda ayudarme.

PD:
Tambien que cuando la URL la variable este vacia sitio.com/?lang= que muestre el idioma por default o el que esta predefinido en la cookie...

Gracias espero sus respuestas....

Última edición por JesusCruz88; 10/07/2009 a las 03:15
  #2 (permalink)  
Antiguo 10/07/2009, 15:42
Avatar de actibands  
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Detectar idioma y hacer un include personalizado

Hola adjcp, creo que tengo una solución que te puede ayudar a encontrar el idioma del visitante y en caso de que sea algun idioma que no tengas definido siempre puedes asignar por defecto uno..


Código PHP:
// Con esto miramos si hay definido un idioma por defecto en el navegador
if ($HTTP_ACCEPT_LANGUAGE != ''){

// Convertimos HTTP_ACCEPT_LANGUAGE en array
    
$languages explode(","$HTTP_ACCEPT_LANGUAGE); 
   
// Luego se recorres el array hasta encontrar un idioma que coincida con 
// los idiomas que hemos definido en nuestra web
    
for ($i=0$i<count($languages); $i++){

// Si aún no hemos definido la variable $idioma seguimos buscando
        
if (!isset($currentLang)){

// Miramos si tiene algún idioma de los disponibles

            
if (substr($languages[$i], 02) == "es"){$currentLang "es";}
            elseif (
substr($languages[$i], 02) == "en"){$currentLang "en";}
        }
    }
}

// Si no hemos encontrado ningún idioma le asignamos uno por defecto
if (!isset($currentLang)){$currentLang "es";}

// Finalmente llamamos a la hoja de idiomas que corresponda
include "library/langs/".$currentLang.".inc.php";
?> 
Combinado con tu codigo tal vez ya lo puedas resolver. Si tienes muchos idiomas tal vez puedas substituir el if/elseif por un switch.

Espero que te sirva, un saludo!
  #3 (permalink)  
Antiguo 11/07/2009, 11:35
Avatar de JesusCruz88  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/baja-california/?city=tijuana&action=addmeFriend
Mensajes: 53
Antigüedad: 15 años, 10 meses
Puntos: 1
De acuerdo Respuesta: Detectar idioma y hacer un include personalizado

Gracias actibands pero la verdad ando algo novato todavia en esto de PHP no se si no seria mucha molesta ayudarme....


Gracias de todos modos por tu ayuda se te agradece...
  #4 (permalink)  
Antiguo 13/07/2009, 14:37
Avatar de actibands  
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Detectar idioma y hacer un include personalizado

Bueno, yo tampoco es que sea un experto.. ¿En que mas necesitas ayuda?

Disculpa por tardar en contestar, es que ando muy liado estos dias...
  #5 (permalink)  
Antiguo 13/07/2009, 15:22
Avatar de JesusCruz88  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/baja-california/?city=tijuana&action=addmeFriend
Mensajes: 53
Antigüedad: 15 años, 10 meses
Puntos: 1
De acuerdo Respuesta: Detectar idioma y hacer un include personalizado

Es que la verdad no soy experto pero ya probe el codigo que me dejaste y le agregue los demas idiomas y solo me lo deja en el default osea no me los detecta y como dice en el mensaje principal me gustaria que los detectara y que hiciera el include dependiendo del idioma y que cuando la variable lang= este vacio muestre el idioma por default... crees que se pueda hacer esto?


Gracias de todos modos por tu ayuda...
  #6 (permalink)  
Antiguo 13/07/2009, 15:31
Avatar de actibands  
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Detectar idioma y hacer un include personalizado

para saber si lo esta haciendo bien, tal vez deberías "enseñar" el valor de $HTTP_ACCEPT_LANGUAGE a ver si es correcto y tienes otro idioma que no sea "es" definido en el navegador..

o también podrias quitar momentaneamente la opcion por defecto a ver cual escoge..

El codigo que te puse lo he usado en alguno de mis proyectos y siempre me ha funcionado bien..

Para que te coja "es" por defecto si lang= es decir, si viene vacio, tal vez podrias comprobar
Código PHP:
isset($_GET['lang']) &&  $_GET['lang'] != '' 
aunque quizás deberias limitar un poco mas esta comprobacion por motivos de seguridad
  #7 (permalink)  
Antiguo 13/07/2009, 18:17
Avatar de JesusCruz88  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/baja-california/?city=tijuana&action=addmeFriend
Mensajes: 53
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Detectar idioma y hacer un include personalizado

Pues de hecho como te decia mi page tiene 6 idiomas de, en, es, fr, it, pt
YA hice el cambio del explorardor del idioma ya lo puse en aleman pero me lo sigue mostrando en español...
  #8 (permalink)  
Antiguo 13/07/2009, 22:25
Avatar de actibands  
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Detectar idioma y hacer un include personalizado

Buenas,

pues ahora si que no te queda otra que pintar el valor de $HTTP_ACCEPT_LANGUAGE para ver que te esta retornando..

Código PHP:
echo $HTTP_ACCEPT_LANGUAGE 
lo que puedes hacer en vez de recorrer el array es coger directamente el primer valor

Código PHP:
$currentLang substr($languages[$i], 02
y luego comprobar si el archivo de idioma existe grabas ese idioma en la session ( o cookie ) y si no, le pones "es" por defecto..

Código PHP:
if(file_exists("library/langs/".$currentLang .".inc.php")){
            
$_COOKIE['lang'] = $currentLang;
            include 
"library/langs/".$currentLang.".inc.php";
} else {
             
$currentLang 'es';
             
$_COOKIE['lang'] = $currentLang;
             include 
"library/langs/".$currentLang.".inc.php";
            } 
Espero que al final lo consigas.. un saludo!
  #9 (permalink)  
Antiguo 13/07/2009, 22:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Detectar idioma y hacer un include personalizado

por cierto....

a todo esto, ¿que tiene que ver con la encuesta??

(además , cabe mencionar que la forma correcta de "la variable" es $_SERVER['HTTP_ACCEPT_LANGUAGE'])
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 16:24.