La forma más rápida de detectar el país del usuario

Necesito detectar el país del usuario y mostrar el idioma del sitio web por su país. (Turco para los turcos, inglés para todos los demás)

¿Cómo puedo hacer esto de la manera más rápida? El rendimiento es importante para mí.

Estoy buscando IPInfoDB ‘API , ¿hay alguna alternativa mejor?

(Estoy usando PHP)

Puede usar la API aquí http://www.hostip.info/use.html si está de acuerdo en confiar en un sitio externo.

También puedes usar la API GeoIP PHP

Por supuesto, la implementación de la secuencia de comandos vinculada a la órbita podría ahorrarte la molestia de pasar por la API.

Buena suerte.

La mejor forma de hacer esto que he encontrado es utilizar la biblioteca “GAE-IP-COUNTRY”: https://github.com/andris9/GAE-IP-TO-COUNTRY/tree/master/src/ip_files

Ejemplo de uso (debe copiar el directorio “ip_files” a su servidor):

function iptocountry($ip) { $numbers = preg_split( "/\./", $ip); include("./ip_files/".$numbers[0].".php"); $code=($numbers[0] * 16777216) + ($numbers[1] * 65536) + ($numbers[2] * 256) + ($numbers[3]); foreach($ranges as $key => $value){ if($key<=$code){ if($ranges[$key][0]>=$code){$country=$ranges[$key][1];break;} } } return $country; } $country=iptocountry($_SERVER['REMOTE_ADDR']); echo $country; 

Este enlace debería ser muy útil:

http://www.phptutorial.info/iptocountry/the_script.html

Podrás descargar los archivos y scripts necesarios desde allí.

Como han señalado otros, probablemente sería una mejor idea verificar el encabezado HTTP Accept-Language para el turco. Si es el idioma preferido, preséntalo. De lo contrario, sirve inglés. Aquí hay un código .

Bueno para las personas que podrían visitar en 2017 esta es una solución tan extremadamente fácil de usar

  

permítanme leer la letra A – H es la secuencia de comandos para detectar su número ISO para el país de mi país Nigeria es NG puede buscar en Google el número ISO de su país, con esta secuencia de comandos se detecta automáticamente. Luego creé una página con información que activa AJAX en esa página que devuelve el color y el nombre de la bandera del país simple y fácil. LLAME A JQUERY ANTES DE QUE AJAX EJECUTE EL AJAX A MENOS QUE NO FUNCIONE GOODLUCK

Codifiqué las siguientes cosas usando Accept-Language como señalaron otros usuarios:

 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 ) 

Después de definir una matriz como esta, puede cambiar su valor de idioma 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 eliminando los valores de la subregión

 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 ) 

Esta es la manera directa que me gusta usar

 properties[$key])) { return $this->properties[$key]; } return null; } //------------------------------------------------------ /** * request_geoip * * @access public * - @return void */ public function request_geoip($ip) { $url = sprintf($this->api, $ip); $data = $this->send_geoip_request($url); $this->properties = json_decode($data, true); //var_dump($this->properties); } //------------------------------------------------------ /** * send_geoip_request * * @access public * - @param $url string * - @return json */ public function send_geoip_request($url) { $loc_content = file_get_contents($url); return $loc_content; } } //You can access it like this: $geo = new GeoIp; $geo->request_geoip('foo'); echo $geo->country; ?> 

Visita este sitio web para más información