网站实现多语言功能 谷歌百度翻译切换网页语种
不少网站开发需求都会要多语言功能,严格意义上完美多语言网站,需要根据访问者地区语言自动识别,然后呈现相应的相应的语种网站。这也是很多大型站点的解决方案,但是对于普通小网站而言,一个语种的网站就需要耗费大量时间去更新维护,更别说多个语言啦。那有什么方法可以比较简便的实现网站的翻译功能,答案是有的,就是使用翻译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盾等查杀工具扫一遍确认安全。
- 本站网站模板等源码提供安装服务吗?
- 本站资源收集于网络并分享出来共同学习,不提供免费安装服务,模板源码安装等需要有一定熟悉度,小白用户可以下载资源后雇人安装调试。