Foros del Web » Programando para Internet » PHP »

Detectar idioma del navegador en PHP

Estas en el tema de Detectar idioma del navegador en PHP en el foro de PHP en Foros del Web. Estoy usando el siguiente codigo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código php: Ver original if ( empty ( $sitelang ) ) { //primero preguntamos si la variable que ...
  #1 (permalink)  
Antiguo 29/04/2009, 03:58
Avatar de juanolo  
Fecha de Ingreso: abril-2008
Mensajes: 251
Antigüedad: 16 años, 7 meses
Puntos: 5
Pregunta Detectar idioma del navegador en PHP

Estoy usando el siguiente codigo:

Código php:
Ver original
  1. if(empty($sitelang)){ //primero preguntamos si la variable que va a contener el lenguage del visitante esta vacia
  2.       $sitelang = getenv("HTTP_ACCEPT_LANGUAGE"); // si esta vacia sacamos el lenguage del visitante y lo ponemos en la variable $sitelang
  3.       }
  4. switch($sitelang){ //ahora cargamos el archivo que contiene el idioma segun la varible que sacamos antes
  5.           case "es" : //es = español
  6.              include("./lang/lang-esp.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
  7.              break;
  8.           case "en" : //en = ingles
  9.              include("./lang/lang-eng.php");
  10.              break;
  11.           default :
  12.              include("./lang/lang-esp.php"); //cargamos un idioma por defecto si no se encontro algun idioma
  13.              break;
  14.        }

El problema es que segun el navegador, la variable $sitelang adquiere diferente valor.
Por ejemplo.
En firefox toma el valor: es-es,es;q=0.8,en;q=0.5,en-us;q=0.3
En explorer toma el valor: es-ES,en-US;q=0.5

En ningun caso toma el valor "es" o "en" entonces...
¿Como podria tomar solo las dos primeras letras de la variable sitelang?
Asi, si podria comparar y segun el caso "es" o "en" mandarle a una pagina diferente.

¿Alguna idea?
  #2 (permalink)  
Antiguo 29/04/2009, 04:20
 
Fecha de Ingreso: diciembre-2007
Mensajes: 131
Antigüedad: 16 años, 11 meses
Puntos: 6
Respuesta: Detectar idioma del navegador en PHP

usa la funcion substr() a la cual le puedes indicar donde empezar y donde terminar dentro de un string.


$nuevo_sitelang = substr($sitelang, 0, 2);


(explicacion: dentro de la variable $sitelang, empieza en la posicion 0, y se extiende por 2 posiciones. Devuelve la 'sub string' dentro de esas posiciones)



Saludos
Bruno
  #3 (permalink)  
Antiguo 29/04/2009, 13:17
Avatar de juanolo  
Fecha de Ingreso: abril-2008
Mensajes: 251
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Detectar idioma del navegador en PHP

Gracias Hildegaard, funcionó perfectamente ^.^
  #4 (permalink)  
Antiguo 29/10/2010, 19:16
 
Fecha de Ingreso: febrero-2008
Mensajes: 120
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Detectar idioma del navegador en PHP

EL tema es antiguo, pero me ha llamado la atención y tengo una duda por si aun ve alguien el topic.

¿Cada vez que cambie de página deberá pasar la variable sitelang via GET?
__________________
http://www.multigestor.com - Diseño Web Lleida
  #5 (permalink)  
Antiguo 29/10/2010, 20:56
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Detectar idioma del navegador en PHP

El codigo no usa get, usa getenv("HTTP_ACCEPT_LANGUAGE");
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #6 (permalink)  
Antiguo 30/10/2010, 02:21
 
Fecha de Ingreso: febrero-2008
Mensajes: 120
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Detectar idioma del navegador en PHP

Ya, pero en algún momento, habrá algún enlace de seleccion de idioma, ¿no?
__________________
http://www.multigestor.com - Diseño Web Lleida
  #7 (permalink)  
Antiguo 30/10/2010, 15:07
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Detectar idioma del navegador en PHP

No, el idioma se selecciona automaticamente dependiendo de lo que traiga getenv("HTTP_ACCEPT_LANGUAGE")

Por ejemplo, si es 'es' (español) se incluye el archivo de la pagina que sea en español
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
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 10:49.