2013-03-03 109 views
-2

我想知道如何添加一些腳本(JavaScript或可能在PHP中)查找IP地址,如果ip是瑞典語,則將網站的語言更改爲瑞典語,也許改變位置example.com/en到example.com/se或類似的東西, 感謝尋找IP地址並更改網站的語言

+7

不要那樣做!基於IP的語言選擇是非常錯誤的。解析瀏覽器發送的「Accept-Language」頭並使用它來選擇默認語言。 – ThiefMaster 2013-03-03 18:54:43

+0

@ThiefMaster關心一些實際的例子,爲什麼它是可怕的想法?一個鏈接也許是 – samayo 2013-03-03 18:56:12

+2

常識。就因爲我是在X國度假時,這並不意味着我會說這個國家的語言。如果我的瀏覽器告訴網站我比較喜歡一個英文網站,這比我的IP是來自X國的事實強得多。 – ThiefMaster 2013-03-03 18:57:19

回答

2

你想要做什麼的被稱爲GeoLocation中

您可以用MaxMind的數據庫,然後過程做到這一點這在你的PHP應用程序或作爲一個Apache模塊。

建議您在用戶訪問網站時向用戶推薦語言/區域設置選項,但最終允許用戶覆蓋此選項。

0

先看瀏覽器接受的語言標題,然後查看可能包含操作系統語言的瀏覽器標識字符串。

function getDefaultLanguage() { 
    if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) 
     return parseDefaultLanguage($_SERVER["HTTP_ACCEPT_LANGUAGE"]); 
    else 
     return parseDefaultLanguage(NULL); 
    } 

function parseDefaultLanguage($http_accept, $deflang = "en") { 
    if(isset($http_accept) && strlen($http_accept) > 1) { 
     # Split possible languages into array 
     $x = explode(",",$http_accept); 
     foreach ($x as $val) { 
     #check for q-value and create associative array. No q-value means 1 by rule 
     if(preg_match("/(.*);q=([0-1]{0,1}\.\d{0,4})/i",$val,$matches)) 
      $lang[$matches[1]] = (float)$matches[2]; 
     else 
      $lang[$val] = 1.0; 
     } 

     #return default language (highest q-value) 
     $qval = 0.0; 
     foreach ($lang as $key => $value) { 
     if ($value > $qval) { 
      $qval = (float)$value; 
      $deflang = $key; 
     } 
     } 
    } 
    return strtolower($deflang); 
} 
0

不知道這是一個好主意或沒有,但繼承人你會怎麼做:

$(function() { 
    $.getJSON('http://smart-ip.net/geoip-json?callback=?', function(data) { 
     if (data.countryCode == 'SE') { 
      $('body').text('Välkommen till Sverige'); 
     }else{ 
      $('body').text("You're not Swedish ?"); 
     } 
    }); 
}); 

FIDDLE

沒有jQuery的,我想最簡單的也只是:

<script type="text/javascript"> 
    var lang = function(data) { 
     if (data.countryCode == 'SE') { 
      //swedish 
     } else { 
      //not swedish 
     } 
    } 
</script> 
<script type="text/javascript" src="http://smart-ip.net/geoip-json?callback=lang"></script>​ 

or in PHP?

<?php 
    $json = json_decode(file_get_contents('http://smart-ip.net/geoip-json')); 
    if ($json->countryCode == 'SE') { 
     //swedish 
    }else{ 
     //not swedish 
    } 
?> 
0

不久,基於純JavaScript,你可以做...

<html> 
<head> 
    <title>...</title> 
    <script language="JavaScript"> 
    var lang = navigator.language || navigator.userLanguage; 
    //alert(lang); 
    if(lang == "en" || lang == "eng" || lang == "engs") { 
     window.location = "en/index.html"; //English 
    } 
    if(lang == "sv" || lang == "swe") { 
     window.location = "se/index.html"; //Swedish 
    } 
    </script> 
</head> 
<body> 

</body> 
</html>