我想知道如何添加一些脚本(javascript 或者可能在 PHP 中)来查找 ip 地址,如果 ip 用于瑞典,请将网站的语言更改为瑞典语,也许将位置 example.com/en 更改为 example.com /se 或类似的东西,谢谢
问问题
3597 次
4 回答
2
你想做所谓的 GeoLocation
您可以使用MaxMind的数据库执行此操作,然后在您的 PHP 应用程序中或作为 Apache 模块进行处理。
我建议您在用户访问该站点时向他们推荐语言/区域设置选项,但最终允许他们覆盖此选项。
于 2013-03-03T18:56:56.727 回答
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>
于 2013-03-03T19:55:32.533 回答
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 ?");
}
});
});
如果没有 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>
还是在 PHP 中?
<?php
$json = json_decode( file_get_contents('http://smart-ip.net/geoip-json') );
if ($json->countryCode == 'SE') {
//swedish
}else{
//not swedish
}
?>
于 2013-03-03T19:06:09.787 回答
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);
}
于 2013-03-03T18:57:20.363 回答