Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/04/2009, 03:58
Avatar de juanolo
juanolo
 
Fecha de Ingreso: abril-2008
Mensajes: 251
Antigüedad: 16 años, 8 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?