不同语言跳转到不同网址

WordPress根据浏览器语言自动跳转网址的方法

有不少使用WordPress搭建外贸站的公司都会做多个语言的网站,例如英文和中文。同时有些外贸站站长不希望自己的网站被国内用户访问,想要国内用户跳转到不同的网址,我们可以利用浏览器语言来判断用户环境,然后自动跳转到不同的网址上面,具体方法如下:

在你的网站主题头部文件(header.php)里面插入下面的代码

<?php
// 定义变量 lc
$lc = ""; 
// 检查是否已经设置过 HTTP头Accept-Language信息变量
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
$lc = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
// 这里截取语言编码前两位来判断,如果是中文,转向百度
if($lc == "zh"){
header("location: https://www.baidu.com"); 
exit();
}
?>

考虑到很多是新手朋友,不会修改代码,所以建议安装一个Code Snippets插件,安装后启用插件,编辑Example JavaScript snippet这个片段,把上面的代码插入到/* write your JavaScript code here */的下方。

然后保存就可以激活启用代码了。

上面的代码中,你可以添加更多的语言,例如巴西、法语、葡萄牙语,然后对应跳转到不同的网址,多种语言跳转代码如下:

<?php
$lc = ""; 
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
$lc = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if($lc == "pt"){
header("location: https://blog.naibabiji.com/"); 
}
else if($lc == "fr"){
header("location: https://blog.naibabiji.com/skill/language-redirection.html"); 
exit();
}
?>

以上方法参考料神文章,下面是常见的浏览器语言代码。

af 南非公用荷兰语 sq 阿尔巴尼亚语
ar-sa 阿拉伯语(沙特阿拉伯) ar-iq 阿拉伯语(伊拉克)
ar-eg 阿拉伯语(埃及) ar-ly 阿拉伯文(利比亚)
ar-dz 阿拉伯文(阿尔及利亚) ar-ma 阿拉伯语(摩洛哥)
ar-tn 阿拉伯语(突尼斯) ar-om 阿拉伯文(阿曼)
ar-ye 阿拉伯文(也门) ar-sy 阿拉伯文(叙利亚)
ar-jo 阿拉伯文(约旦) ar-lb 阿拉伯语(黎巴嫩)
ar-kw 阿拉伯文(科威特) ar-ae 阿拉伯语(阿联酋)
ar-bh 阿拉伯语(巴林) ar-qa 阿拉伯文(卡塔尔)
eu 巴斯克语 bg 保加利亚语
be 白俄罗斯语 ca 加泰罗尼亚语
zh-tw 中文(台湾) zh-cn 中文(中华人民共和国)
zh-hk 中文(香港特区) zh-sg 中文(新加坡)
hr 克罗地亚语 cs 捷克语
da 丹麦语 nl 荷兰语(标准)
nl-be 荷兰语(比利时) en 英语
en-us 英语(美国) en-gb 英语(英国)
en-au 英语(澳大利亚) en-ca 英语(加拿大)
en-nz 英语(新西兰) en-ie 英国(爱尔兰)
en-za 英语(南非) en-jm 英语(牙买加)
en 英语(加勒比海) en-bz 英语(伯利兹)
en-tt 英语(特立尼达和多巴哥) et 爱沙尼亚语
fo 法罗语 fa 波斯语
fi 芬兰语 fr 法语(标准)
fr-be 法语(比利时) fr-ca 法语(加拿大)
fr-ch 法语(瑞士) fr-lu 法语(卢森堡)
gd 盖尔语(苏格兰) ga 爱尔兰语
de 德语(标准) de-ch 德语(瑞士)
de-at 德语(奥地利) de-lu 德语(卢森堡)
de-li 德语(列支敦士登) el 希腊
he 希伯来语 hi 印地文
hu 匈牙利语 is 冰岛语
id 印度尼西亚语 it 意大利语(标准)
it-ch 意大利语(瑞士) ja 日语
ko 韩语 ko 韩文(韓文)
lv 拉脱维亚语 lt 立陶宛语
mk 马其顿语(前南马其顿) ms 马来西亚语
mt 马耳他语 no 挪威文(巴克摩)
no 挪威文(耐诺斯克) pl 波兰语
pt-br 葡萄牙语(巴西) pt 葡萄牙语(葡萄牙)
rm 里托罗曼斯文 ro 罗马尼亚语
ro-mo 罗马尼亚语(摩尔多瓦共和国) ru 俄语
ru-mo 俄罗斯(摩尔多瓦共和国) sz 萨米语(拉普语)
sr 塞尔维亚语(西里尔文) sr 塞尔维亚语(拉丁)
sk 斯洛伐克语 sl 斯洛文尼亚语
sb 索布语 es 西班牙语(西班牙)
es-mx 西班牙语(墨西哥) es-gt 西班牙语(危地马拉)
es-cr 西班牙语(哥​​斯达黎加) es-pa 西班牙语(巴拿马)
es-do 西班牙文(多米尼加共和国) es-ve 西班牙语(委内瑞拉)
es-co 西班牙语(哥​​伦比亚) es-pe 西班牙语(秘鲁)
es-ar 西班牙语(阿根廷) es-ec 西班牙语(厄瓜多尔)
es-cl 西班牙语(智利) es-uy 西班牙语(乌拉圭)
es-py 西班牙语(巴拉圭) es-bo 西班牙语(玻利维亚)
es-sv 西班牙语(萨尔瓦多) es-hn 西班牙语(洪都拉斯)
es-ni 西班牙语(尼加拉瓜) es-pr 西班牙语(波多黎各)
sx 苏图语 sv 瑞典语
sv-fi 瑞典语(芬兰) th 泰国语
ts 特松加语 tn 茨瓦纳语
tr 土耳其语 uk 乌克兰语
ur 乌尔都语 ve 文达语
vi 越南语 xh 科萨语
ji 意第绪语 zu 祖鲁语

多个语言判断是使用的PHP – if…elseif….else 语句

if (条件)
{
    if 条件成立时执行的代码;
}
elseif (条件)
{
    elseif 条件成立时执行的代码;
}
else
{
    条件不成立时执行的代码;
}

除了上面的方法外,还可以插入下面这个代码,同样也可以实现不同语言的跳转。

<?php
$lan = substr( $HTTP_ACCEPT_LANGUAGE,0,5);
if ($lan == "zh-cn")
print("<meta http-equiv='refresh' content = '0;URL = gb/index.htm'>");
else
print("<meta http-equiv='refresh' content = '0;URL = eng/index.htm'>");

而如果你是使用的一些翻译插件做的多语言网站,通常插件设置里面可以直接开启跳转功能。

除了修改代码外,也可以通过域名解析,直接使用ip地址定位来直接跳转,一些高级点的DNS服务商都支持这个功能。

以前写过的其他相关文章:

Scroll to Top