网站实现多语言功能 谷歌百度翻译切换网页语种
不少网站开发需求都会要多语言功能,严格意义上完美多语言网站,需要根据访问者地区语言自动识别,然后呈现相应的相应的语种网站。这也是很多大型站点的解决方案,但是对于普通小网站而言,一个语种的网站就需要耗费大量时间去更新维护,更别说多个语言啦。那有什么方法可以比较简便的实现网站的翻译功能,答案是有的,就是使用翻译API进行翻译,不过这类翻译API特点是不够准确,不能更具语境表达准确的意思,但是可以辅助不多的其他语种的用户需求,让他们能看到网站内容还是可以的。
第一种,使用百度翻译API
百度翻译API需要注册申请(https://fanyi-api.baidu.com/)然后拿到ID和key,百度的翻译也是有限制的,如果可以升级为企业用户可以满足大多数需求场景。这里介绍的方式使用是两种语言之间的翻译转换,原理是通过逐个内容翻译后替换为原来,代码种是获取类目“fy”的标签也就是需要翻译的文本内容,翻译后再给替换实现网页的翻译功能,这种方式确定是慢,因为要逐个去翻译后替换,需要等待时间,为了用户体验可以做个遮罩层,等待全部翻译替换完全后再隐藏遮罩层。
function fanyi_api(obj,str,newLanguage,type){
let appid = 'xxxxx'; // 百度翻译API的appid
let key = 'xxxx'; // 百度翻译API的key
let from = 'en';
let salt = (new Date).getTime();
let query = str;
let to = newLanguage;
let str1 = appid + query + salt + key;
let sign = md5(str1);
let flag = false;
$.ajax({
url: 'http://api.fanyi.baidu.com/api/trans/vip/translate',
type: 'get',
dataType: 'jsonp',
data: {
q: query,
appid: appid,
salt: salt,
from: from,
to: to,
sign: sign
},
success: function(e) {
if(type ==1){
obj.html(e.trans_result[0].dst);
}else if(type ==2){
obj.attr('placeholder',e.trans_result[0].dst);
}else{
obj.html(e.trans_result[0].dst);
}
}
});
}
定义翻译函数,在需要翻译的元素绑定即可如翻译为中文需要调用fanyi(‘zh’)
function fanyi(newLanguage){
$(".fy").each(function(){
var obj = $(this);
var str = $(this).html();
fanyi_api(obj,str,newLanguage,1);
});
}
翻译完成,即加载完全后遮罩层隐藏
//判断加载完毕
document.onreadystatechange = function(){
if(document.readyState=="complete"){
$('.loadbox').hide();
}else{
console.log('no');
}
}
第二种,谷歌翻译API
这种也是使用的比较多的,也是相对来说比较好的解决方案因为其比较准确智能,谷歌的翻译功能使用简便,不足之处就是会产生一个如下图的小按钮,对于一些网站而言不是太美观。
谷歌翻译API的使用直接在需要翻译的页面引入下面代码,其中的一些主要设置也给注释清除了。
<div id="google_translate_element"></div>
<script type="text/javascript">
function googleTranslateElementInit() {
let langname = navigator.language ? navigator.language.split('-')[0].toLowerCase() : 'en'; //动态获取用户的语种,可以动态赋值到pageLanguage
console.log(langname);
new google.translate.TranslateElement({
pageLanguage: 'en', //页面语种
includedLanguages: 'zh-CN,zh-TW,en', //期望翻译的语种,如果不设置默认全部语种
autoDisplay: false,
gaTrack: true,
layout: google.translate.TranslateElement.InlineLayout.SIMPLE
}, 'google_translate_element');
}
</script>
<script src="https://translate.google.cn/translate_a/element.js?cb=googleTranslateElementInit" type="text/javascript"></script>
ID为”google_translate_element“的div标签是就是那个小图标下拉框的实体,可以通过样式布局将其放在网页合适位置,一般都是在网页的右上角。
如果不设置includedLanguages则默认全部语种,点击下拉得到类似下面的语种选择面板
只是需要其中的几种,就需要设置为国家/地区代码,像上面种“zh-CN,zh-TW,en“,分别就是中文简体,中文繁体,英文;如果还有其他语种,而用不知道怎么表示可以百度”谷歌翻译 语种代码” 参考(https://b.julym.com/original/74.html)填写上即可。上面的代码设置好只会显示中文简体,中文繁体,英文语种。
① 本站源码模板等资源SVIP用户永久不限量免费下载
② 所有资源来源于网络收集,如有侵权,请联系站长进行删除处理。
③ 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。
④ 如果你有源码需要出售,可以联系管理详谈。
⑤ 本站提供的源码、模板、插件等等资源,都不包含技术服务请大家谅解。
⑥ 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
⑦ 在您的能力范围内,为了大环境的良性发展,请尽可能的选择正版资源。
⑧ 网站资源绝不做任何二次加密或添加后门(原版加密除外)
- 需要积分的资源怎么下载?
- 您可以注册后签到等活跃动作获得积分,积分可下载,也可充值升级等级免费下载。
- 源码模板等文件安全吗?有没有后门病毒吗?
- 站内资源标有“已测试”标签的资源源码,表示已经在本地安装测试调试过才分享出来的,可以保证一定的安全;若不放心可以自行下载模板资源后使用D盾等查杀工具扫一遍确认安全。
- 本站网站模板等源码提供安装服务吗?
- 本站资源收集于网络并分享出来共同学习,不提供免费安装服务,模板源码安装等需要有一定熟悉度,小白用户可以下载资源后雇人安装调试。

