发布时间:2024-01-06 付涛
在给客户进行网站内容开发的过程中,总会遇到一个问题,同一个域名默认为中文后,虽然有英文或者其它语言版本,但是都需要用户手工去寻找目标语言内容的入口,然后实施跳转,相对就会比较麻烦一点;
为了方便在这里经过摸索、调测,找到两个比较可靠的实际方案; 在这里汇总一下,一方面方便需要的朋友,另一个方面留个备注,以便日后使用;
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