I codificados usando el siguiente material Accept-Language otros usuarios señalaron:
function GetAcceptedLangs()
{
$res=array();
$a=getallheaders();
if(isset($a["Accept-Language"]))
{
$aceptlangs=explode(",",str_replace(array(';','0','1','2','3','4','5','6','7','8','9','.',"q="),array(',','','','','','','','','','','','',""),$a["Accept-Language"]));
foreach($aceptlangs as $i=>$v)
{
if(trim($v)!="")
$res[]=trim($v);
}
}
return $res;
}
Un simple
print_r(GetAcceptedLangs());
regreso en mi caso:
Array ([0] => es-ES [1] => es [2] => en)
Puede después de definir una matriz como ésta para cambiar al valor de su lenguaje interno, por ejemplo:
$al={"ES-es"=>"es","es"=>"es","en"=>"en"......}
Ya están ordenados por preferencias de usuario.
Si no existen todos los idiomas en la matriz, puede ir al idioma predeterminado de su sitio web. Esto también es válido si el navegador no envía el encabezado Aceptar idioma.
Otra versión de retirar la subregión valores
function GetAcceptedLangs2()
{
$res=array();
$a=getallheaders();
if(isset($a["Accept-Language"]))
{
$aceptlangs=explode(",",str_replace(array(';','0','1','2','3','4','5','6','7','8','9','.',"q="),array(',','','','','','','','','','','','',""),$a["Accept-Language"]));
foreach($aceptlangs as $i=>$v)
{
$va=trim($v);
if(($pos=strpos($va,"-"))!==false)
$l=substr($va,0,$pos);
else
$l=$va;
if($l!="" && !isset($check[$l]))
{
$check[$l]=1;
$res[]=$l;
}
}
}
return $res;
}
volvería en mi caso
Array ([0] => es [1] => en)
es casi seguro que desea utilizar la configuración de idioma preferida del navegador en lugar de tratar de averiguar dónde se encuentra el usuario. – geoffspear
Al igual que el comentario de @ Wooble: esta no es una buena idea. Vivo en Canadá, ¿cuál es mi idioma preferido? Si soy de Quebec podría ser francés, o podría ser italiano o alemán ... donde vivo no determina mi idioma preferido. Si lo desea, puede agregar un enlace que le permita al usuario cambiar al idioma que "cree" que desea. por ejemplo: Préférez français? – scunliffe
"¿Cómo puedo hacer esto de la manera más rápida?" Es incorrecto. Debería hacer esto * una vez * por visita y establecer una cookie. Y permita que las personas anulen su configuración predeterminada. – bart