有不少使用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服务商都支持这个功能。
以前写过的其他相关文章: