【多语言】网站开发过程中如何针对不同国家访客访问自己当地语言类型的官网内容呢?
在给客户进行网站内容开发的过程中,总会遇到一个问题,同一个域名默认为中文后,虽然有英文或者其它语言版本,但是都需要用户手工去寻找目标语言内容的入口,然后实施跳转,相对就会比较麻烦一点;为了方便在这里经过摸索、调测,找到两个比较可靠的实际方案; 在这里汇总一下,一方面方便需要的朋友,另一个方面留个...
扫码分享二维码
在给客户进行网站内容开发的过程中,总会遇到一个问题,同一个域名默认为中文后,虽然有英文或者其它语言版本,但是都需要用户手工去寻找目标语言内容的入口,然后实施跳转,相对就会比较麻烦一点;为了方便在这里经过摸索、调测,找到两个比较可靠的实际方案; 在这里汇总一下,一方面方便需要的朋友,另一个方面留个...
扫码分享二维码
在给客户进行网站内容开发的过程中,总会遇到一个问题,同一个域名默认为中文后,虽然有英文或者其它语言版本,但是都需要用户手工去寻找目标语言内容的入口,然后实施跳转,相对就会比较麻烦一点;
为了方便在这里经过摸索、调测,找到两个比较可靠的实际方案; 在这里汇总一下,一方面方便需要的朋友,另一个方面留个备注,以便日后使用;
1、不同语言版本根据访客ID国家不同,自动识别并跳转到对应语言网站版本里面;
<!--当网站有多个语言版本,通过当前电脑网络IP判断国家代码,实现同一域名自动跳转当地语言版本网站的效果-->
<?php
// Step 1: 获取用户的IP地址
$user_ip = $_SERVER['REMOTE_ADDR'];
// 输出当前IP
echo "当前IP地址:" . $user_ip;
// Step 2: 使用免费的IP接口查询用户所在国家或地区
$api_url = 'http://ip-api.com/php/' . $user_ip; // 替换为实际的免费IP接口地址
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo "<br><br>API返回字符串:" . $response;
$data = unserialize($response);
// Step 3: 确定用户所在国家或地区
// Step 3: 确定用户所在国家或地区
// 这里以简单的示例,只列举了部分国家或地区与语言和对应的网站URL版本,
// 你可以根据实际需求添加更多的语言和对应关系
$language = 'CN'; // 中国 - 简体中文
$redirect_url = 'https://www.baidu.com'; // 中文版网站URL
if ($data && isset($data['countryCode'])) {
$countryCode = $data['countryCode'];
if ($countryCode == 'US') {
$language = 'en'; // 英语 - 英语
$redirect_url = 'https://www.google.com/'; // 英语版网站URL
} elseif ($countryCode == 'JP') {
$language = 'ja'; // 日本 - 日语
$redirect_url = 'https://www.google.jp'; // 日语版网站URL
} elseif ($countryCode == 'FR') {
$language = 'fr'; // 法国 - 法语
$redirect_url = 'https://www.google.fr'; // 法语版网站URL
}
// 可以继续添加更多的国家或地区与语言和对应的网站URL版本
}
// Step 4: 设置网站语言版本的cookie
setcookie('language', $language, time() + (86400 * 30), '/'); // 存储用户的语言偏好,有效期为30天
// Step 5: 重定向用户到对应的语言版本URL
header('Location: ' . $redirect_url);
exit;
?>适用类型:当网站有多个语言版本的系统,并已经开发完拥有独立的入口链接;
将上述中涉及到的不同语言URL链接替换成多语言中不同语言的入口链接就可以了;
2、相同一个网站根据访客ID国家不同,自动识别并自动翻译当前网站内容为对应国家语言;
<?php
// Step 1: 获取用户的IP地址
$user_ip = $_SERVER['REMOTE_ADDR'];
// 输出当前IP
echo "当前IP地址:" . $user_ip;
// Step 2: 使用免费的IP接口查询用户所在国家或地区
$api_url = 'http://ip-api.com/php/' . $user_ip; // 替换为实际的免费IP接口地址
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = unserialize($response);
// Step 3: 确定用户所在国家或地区
// 这里以简单的示例,只列举了部分国家或地区与语言和对应的网站URL版本,
// 你可以根据实际需求添加更多的语言和对应关系
$languagemoren = 'zh-CN'; // 中国 - 简体中文
if ($data && isset($data['countryCode'])) {
$countryCode = $data['countryCode'];
if ($countryCode != 'CN') {
// 根据国家代码设置对应的语言参数
$language = '';
if ($countryCode == 'US') {
$language = 'en';
} elseif ($countryCode == 'JP') {
$language = 'ja';
}
if ($language) {
// 使用谷歌翻译的API将页面内容翻译成当地语言
$target_url = 'https://translate.google.com/translate?sl=auto&tl=' . $language . '&hl=' . $languagemoren . '&u=' . urlencode('http://www.baidu.com') . '&client=webapp';
echo $target_url;
} else {
$target_url = 'http://www.baidu.com';
}
} else {
$target_url = 'http://www.baidu.com';
}
}
// Step 5: 重定向用户到对应的语言版本URL
header('Location: ' . $target_url);
exit;
?>适用类型:当网站只有一个语言比如中文时,客户又不愿意多掏成本开发独立语言的其它语言版本,则可以使用此方案;
如果网站访客是日本,则自动将当前中文翻译成日语后展示给客户;
如果网站访客是美国,则自动将当前中文翻译成英语后展示给客户;
如果网站访客是越南,则自动将当前中文翻译成越南语后展示给客户;
三、将上述固定www.baidu.com替换成当前网页链接;
修改一:添加获取当前URL的参数
在上述代码中找到以下代码:
echo "当前IP地址:" . $user_ip;
在以下这句代码后面增加:
$localurl = $_SERVER['REQUEST_URI']; echo "当前页面链接地址:" . $localurl;
修改二:修改重新构建链接
找到以下代码:
if ($language) {
// 使用谷歌翻译的API将页面内容翻译成当地语言
$target_url = 'https://translate.google.com/translate?sl=auto&tl=' . $language . '&hl=' . $languagemoren . '&u=' . urlencode('http://www.baidu.com') . '&client=webapp';
echo $target_url;
} else {
$target_url = 'http://www.baidu.com';
}然后此上述段代码使用以下代码替换并保存
if ($language) {
// 使用谷歌翻译的API将页面内容翻译成当地语言
$target_url = 'https://translate.google.com/translate?sl=auto&tl=' . $language . '&hl=' . $languagemoren . '&u=' . urlencode($localurl) . '&client=webapp';
echo $target_url;
} else {
$target_url = $localurl;
}四、关于国家代码与国家语言参数表
下面整理了用的比较多的一些国家的代码和参数表,大家使用中可以参考:
| 国家/地区 | 国家代码 | 语言参数 |
|---|---|---|
| 美国 | US | en |
| 南非 | ZA | en |
| 香港 | HK | zh |
| 新加坡 | SG | en,zh |
| 德国 | DE | de |
| 荷兰 | NL | nl |
| 阿联酋 | AE | ar,en |
| 泰国 | TH | th |
| 英国 | GB | en |
| 日本 | JP | ja |
| 马来西亚 | MY | ms |
| 越南 | VN | vi |
| 埃及 | EG | ar |
| 法国 | FR | fr |
| 澳洲 | AU | en |
| 巴西 | BR | pt |
| 柬埔寨 | KH | km |
| 加拿大 | CA | en,fr |
| 印尼 | ID | id |
| 巴林 | BH | ar |
| 印度 | IN | hi,en |
| 加纳 | GH | en |
| 菲律宾 | PH | en,fil |
| 沙特阿拉伯 | SA | ar |
| 尼日尼亚 | NG | en |
| 俄罗斯 | RU | ru |
| 中国 | CN | zh |
| 白俄罗斯 | BY | be |
| 肯尼亚 | KE | en,sw |
| 哈萨克斯坦 | KZ | kk |
| 墨西哥 | MX | es |
| 韩国 | KR | ko |
| 瑞典 | SE | sv |
| 西班牙 | ES | es |
| 芬兰 | FI | fi |
| 波兰 | PL | pl |
| 以色列 | IL | he |
| 智利 | CL | es |
五、国际化,网页自动翻译
国际化,网页自动翻译,同谷歌浏览器自动翻译的效果,适用于网站。
v2 版本:res.zvo.cn/translate/demo.html
v1 版本:https://res.zvo.cn/translate/demo_v1.html
六、JS应用插件版
此方案支持中文简体\英文\中文繁体切换,而且比如切换成英文之后,再跳转到其它页面的时候,也依然会保持是英文状态;
<ul class="sec_down">
<a href="javascript:translate.changeLanguage('chinese_simplified');">
<li>中文</li>
</a>
<a href="javascript:translate.changeLanguage('english');">
<li>English</li>
</a>
<a href="javascript:translate.changeLanguage('chinese_traditional');">
<li>繁体</li>
</a>
</ul>将上面这段放在需要显示语言版本选择的位置;涉及到的适配文件如下:
<script language="javascript" src="https://www.suxia.cn/theme/suxia/static/js/JianFan.js"></script> <script> translate.selectLanguageTag.show=false; translate.selectLanguageTag.languages='chinese_simplified,english,chinese_traditional'; </script> <script language="javascript" src="https://www.suxia.cn/theme/suxia/static/js/config.js"></script>
可以自行将两个JS下载至本地保存。
Copyright Notice
当前文章由【付涛】本人原创开发与文案内容写作,内容版权归当前平台所有,如需转载,请务必注明来源及链接,谢谢合作!
本文最后更新发布于【2024-01-06】,某些文章具有时效性,若有错误或已失效,请联系客服
争议处理:针对本站内容若有异义,亦可直接与【法律顾问:易兴俊,律师联系电话:13825799821】直接联系沟通