我不知道這是否是你在尋找什麼,但是當我看到你想要什麼我腦子裏浮現的第一件事就是handlebars expressions:
<script id="myTemplate" type="text/x-handlebars-template">
<div>{{welcome}}</div>
<div>{{name}}</div>
<div>{{time}}</div>
</script>
<div id="generated"></div>
你最好還是需要一點點代碼將語言從一個變爲另一個,但沒有什麼困難。你可以看到一個例子運行在這裏:http://jsfiddle.net/gj9hbhwj/1/
function changeLanguage(lang) {
var templateSource = document.getElementById('myTemplate').innerHTML;
var template = Handlebars.compile(templateSource);
var generatedHolder = document.getElementById('generated');
generatedHolder.innerHTML = template(int[lang]);
}
在個人和小型項目/應用程序,我用一個簡單的jQuery/JSON的組合,需要的代碼,只需幾行和工程就像一個魅力:
/** ON A SEPARATE FILE **/
int = {
"en": {
"#welcome": "Welcome to my site",
"#name": "My name is...",
"#time": "It's 8 o'clock"
},
"es": {
"#welcome": "Bienvenido a mi web",
"#name": "Mi nombre es...",
"#time": "Son las 8 en punto"
}
}
/** ON MAIN SCRIPT **/
function changeLanguage(target_lang) {
if (int[target_lang]) {
$.each(int[target_lang], function (index, value) {
$(index).text(value);
});
}
}
鍵是我想要修改的元素的CSS選擇器,值是不同語言中的文本。使用$.each()
我可以很快修改所有字符串,只需3行代碼(與要替換的短語數量無關)。你可以看到它在這裏運行:http://jsfiddle.net/4y5j0gr7/
@AlvaroMontoro,是的,抱歉的錯字 – Jaskey 2015-03-31 13:35:47
我不知道是否有一個真正的非程序化的解決方案。正如你所說,HTML是靜態的,所以總會有一些代碼/程序底層的做法,並取代值 – 2015-03-31 13:50:43
我不確定這個問題是否適合於stackoverflow。 – Sumurai8 2015-03-31 15:29:00