支持英语
一、简述
公司最近做的一个官网项目,要求把页面成国际化,实现中英文切换,为此,我在网上找了一些中英文切换的解决方案,大概为如下两种:
1、使用谷歌整站翻译Api
2、自己编写中英文对照表,用js控制
- 优点:一对一翻译,所以准确度最高。
- 缺点:需要编写大量中英文对照表,只适合于少量的固定翻译。
- 参考文章:html页面如何实现中英文切换?
由于公司的要求是把整站进行翻译,且官网中存在新闻,即存在大量不可预料的数据,同时考虑到富文本数据不好翻译。所以,总的来说,第一种方案最为合适,不过可惜,需要梯子,没办法,只能别寻出路。好在微软也有一个类似谷歌整站翻译的Api:
The Translator Web Widget API
其实,微软提供的Demo实现上也很简单,分如下几步:
- 引入The Translator Web Widget API
- 监听dom加载完毕,调用Microsoft.Translator.Widget.Translate()整站翻译。
二、实现
1、封装language.js
根据上面的对微软提供的Demo的研究,我们对此进一步封装,因为中英文切换一般都是一次点击后,往后的统一每个页面都需要或不需要翻译,这就需要记录一个状态值,这里选用html5提供的storage来储存这个状态,并向外提供一个修改该状态并刷新页面的方法。故,该js(language.js)编写如下:
$(function(){
// do something
var script=document.createElement("script");
script.type="text/javascript";
script.src="http://www.microsoftTranslator.com/ajax/v3/WidgetV3.ashx?siteData=ueOIGRSKkd965FeEGM5JtQ**";
document.getElementsByTagName('head')[0].APPendChild(script);
var value = sessionStorage.getItem("language");
document.onreadystatechange = function () {
if (document.readyState == 'complete') {
if(value==="1"){
Microsoft.Translator.Widget.Translate('zh-CHS', 'en', onprogress, onERROR, onComplete, onRestoreOriginal, 2000);
}
}
}
function onProgress(value) {
}
function onError(error) {
}
function onComplete() {
$("#WidgetFloaterPanels").hide();
}
function onRestoreOriginal() {
}
});
function translate(){
var value = sessionStorage.getItem("language");
if(value==="1"){
sessionStorage.setItem("language", "0");
}else{
sessionStorage.setItem("language", "1");
}
window.location.reload();//刷新当前页面.
}复制代码
2、编写测试页面
编写一个测试页面(test.html)。要使用上面的language.js,必须进行以下三步:
<!DOCTYPE html>
<head>
<title>Microsoft Widget API Sample</title>
<meta charset="UTF-8"/>
<script type="text/JavaScript" src="jquery-1.11.3.js"></script>
<script type="text/javascript" src="language.js"></script>
</head>
<body>
<button id="change">中英文切换</button
</br></br></br></br></br></br></br></br></br></br></br></br></br></br></br>
<p style="text-align: center" >
你好
</p>
</body>
<script type="text/javascript">
$("#change").click(function(){
translate();
})
</script>
</html>复制代码
试试看效果吧,反正我觉得还行~
三、其他
上面编写的language.js中写死了中文转英文(zh-CHS转en),如果项目需要其他语言的转换,对language.js进行自定义扩展即可。
相关阅读
在使用win10过程中,不同软件的窗口经常习惯性的使用alt + tab切换,但是在编程的时候有时候需要打开很多网页进行查看,用鼠标又太麻烦
重新回头看VB课本,在看过C#的视频之后,老师们经常说计算机的语言有很大的相似性,只要你学会精通一门计算机高级语言其他的高级语言就
都是表格的元素:<th> 定义表格的表头。 <tr> 定义表格的行。 <td> 定义表格单元。 例如:<tabl
操作方法 1 ESC 2.连续两次EsC 3全部删除 尾行模式的操作 :q //quit退出 :w //write 对修改后的内容进行 保存 :wq //wr
谈到malloc函数相信学过c语言的人都很熟悉,但是malloc底层到底做了什么又有多少人知道。 1、关于malloc相关的几个函数 关于malloc