我不知道如何使用JQuery處理本地化。我想用德文文本設置innerHTML
,但是如果瀏覽器配置爲使用英文,那麼我想設置英文文本。使用JQuery進行本地化?
在PHP中,我使用gettext這樣的東西,但如何在JavaScript/jQuery中做到這一點?
我不知道如何使用JQuery處理本地化。我想用德文文本設置innerHTML
,但是如果瀏覽器配置爲使用英文,那麼我想設置英文文本。使用JQuery進行本地化?
在PHP中,我使用gettext這樣的東西,但如何在JavaScript/jQuery中做到這一點?
有沒有簡單的解決方案。我可能會做的是爲每種語言創建幾種帶有語言文本的腳本,並在PHP中包含適當的腳本。所以,如果有人使用您的網站的英文版本,你會只包括英文文件,如果有人使用德語版本,將包括德國語言文件等
例子:
// your script logic
myscript.js
// language texts
myscript.en.js
myscript.de.js
myscript.it.js
...
您可以定義所有語言文件這樣的:
LANG = {
txt1: 'English text1',
txt2: 'English text2'
...
};
確保你只包括那些在HTML中的一個,並確保包括語言文件第一即
<script type="text/javascript" src="myscript.de.js"></script>
<script type="text/javascript" src="myscript.js"></script>
然後你就可以使用這些本地化的文本在主腳本,例如:
$(document).ready(function() {
alert(LANG.txt1);
});
什麼是最好的它是你的邏輯(myscript.js
在這個例子中)不擔心本地化和你贏了」如果你想添加一個新的語言文件,你不得不改變它。
實際上你根本不需要JQuery。
javascript中的導航器對象(http://www.comptechdoc.org/independent/web/cgi/javamanual/javanavigator.html)包含由瀏覽器的當前語言環境設置的用戶語言(IE)和語言(Netscape/Firefox)屬性。
爲了解決你的例子,你可以使用類似的東西;
var textToSet = null; var userLang = null; /* -if userLanguage exists they're in IE, else firefox -get the first two letters in lowercase to guarantee an easily evaluated base language */ if(navigator.userLanguage) baseLang = substring(navigator.userLanguage,0,2).toLowerCase(); else baseLang = substring(navigator.language,0,2).toLowerCase(); //check languages switch(baseLang) { case "de": //German textToSet = "german text"; break; default: textToSet = "english text"; } document.getElementById('elementToSetTextInto').innerHTML = textToSet;
請記住,您可能要基於關閉基地的語言和區域設置不同的文本。在這種情況下,尋找「EN-US」,「去德」。文化代碼網站很容易搜索到(僅在第一篇文章中有1個鏈接;))
希望能爲你工作。
試試這個。 TranslateThis Button是一個輕量級的Javascript翻譯部件。它使用AJAX和Google Language API快速翻譯任何頁面。
我沒有使用它,但我想使用jquery-localize的一個項目。如果您不介意將翻譯基於定義在您的元素上的'rel'屬性,那麼它看起來是一個不錯的選擇。從自述
實施例:
HTML
<p rel="localize[title]">Tracker Pro XT Deluxe</p>
<p rel="localize[search.placeholder]">Search...</p>
<p rel="localize[search.button]">Go!</p>
<p rel="localize[footer.disclaimer]">Use at your own risk.</p>
<p rel="localize[menu.dashboard]">Dashboard</p>
<p rel="localize[menu.list]">Bug List</p>
<p rel="localize[menu.logout]">Logout</p>
應用-ES。JSON
{
title: "Tracker Pro XT Deluxo",
search: {
placeholder: "Searcho...",
button: "Vamos!"
},
footer: {
disclaimer: "Bewaro."
},
menu: {
dashboard: "Dashboardo",
list: "Bug Listo",
logout: "Exito"
}
}
本地化吧!
$("rel*=localize").localize("application", { language: "es" })
你可以看看另一種選擇是微軟提出jquery-global plugin。它仍處於beta測試階段。
既然你已經和你的PHP應用程序中使用gettext的,你應該考慮使用這種javascript implementation of gettext
它不使用編譯的.mo文件,但它會使用你已經擁有你的.po文件。
此方法的優點是可以在一個位置管理所有翻譯。