不少時候,咱們須要作一個多語言的站點,cosbeta認爲目前多語言網站的解決方案比較多,好比:javascript
上面4種方法的優缺點我這裏就很少描述了,相信你們都很清楚了。應客戶的要求,再加上翻譯方便和翻譯的通用性的需求,cosbeta決定用第4種方法爲客戶解決多語言的問題。php
最開始cosbeta的解決辦法是想經過程序模擬客戶端去直接讀取google對當前頁面翻譯的內容,從而實現頁面的多語言版本。好比用戶訪問http://storyday.com?p=1,當用戶須要訪問日語版時,cosbeta就將此頁面經過php發送給google的網頁翻譯接口,而後將翻譯的結果讀取出來,顯示在當前的頁面上。然然後來cosbeta發現這種方式是不可取的,一方面google對客戶端的限制比較嚴格,用php模擬客戶端可能會致使數據獲取的失敗,另一方面,google並無推薦這種方式,因此很容易致使翻譯失效。css
後來cosbeta就轉向了google的翻譯API,配上jquery對Dom靈活的操做,很容易就解決了這個問題。html
首先製做頁面的時候,我將全部須要翻譯的tag都添加了一個css,名爲multilang,好比<a href=」#」 class=」multilang」>關於咱們</a>,在網頁的末尾用jquery遍歷dom,逐一翻譯而後替代原來的文本,按照下面的步驟操做,展現一個例子給你們:java
-
<script src="http://www.google.com/jsapi?key=GOOGLEAPI" type="text/javascript"></script>
-
<script language="Javascript" type="text/javascript">
-
//<![CDATA[
-
google.load("jquery", "1.2.6");
-
google.load("language", "1");
-
//]]>
-
</script>
這段代碼同時將google的翻譯接口和jquery js庫引入了網頁當中。代碼中的GOOGLEAPI須要在這裏申請。
-
var aCookie = document.cookie.split("; ");
-
function createCookie(name,value,days) {
-
if (days) {
-
var date = new Date();
-
date.setTime(date.getTime()+(days*24*60*60*1000));
-
var expires = "; expires="+date.toGMTString();
-
}
-
else var expires = "";
-
document.cookie = name+"="+value+expires+"; path=/";
-
}
-
function readCookie(CookieEleName)
-
{
-
var cookieValue = "";
-
if( aCookie ==null ) return cookieValue;
-
for (var i=0; i < aCookie.length; i++){
-
var CookieArray = aCookie[i].split("=");
-
if (CookieEleName == CookieArray[0]){
-
cookieValue = unescape(decodeURI(CookieArray[1]));
-
}
-
}
-
return cookieValue;
-
}
-
-
function trans(obj,lang){//調用google 翻譯
-
google.language.translate(obj.html(), "", lang, function(result) {
-
if (!result.error) {
-
var container = document.getElementById("translation");
-
obj.html( result.translation );
-
}
-
});
-
}
-
function transMe(lang){//遍歷dom,翻譯整個頁面
-
$(".multilang").each(function(i){
-
trans($(this),lang); });
-
}
-
function initLang(){//定義初始化翻譯,在頁面調用的時候翻譯
-
var lang=readCookie('lang');
-
if( lang.length > 1){
-
transMe(lang);
-
}}
-
function Sl(l){createCookie('lang',l,1000);transMe(l);}//定義函數sl=switchlanguage翻譯本頁,在須要翻譯的地方調用這個js函數便可
-
-
<script>window.onload=initLang;</script>
下面的iframe是案例:jquery