我想用javascript構建我自己的翻譯功能。 我已經有一個函數language.lookup(鍵),轉換一個字或詞:使用javascript正則表達式來翻譯html
var frenchHello = language.lookup('hello') //'bonjour'
現在我想編寫一個函數,它接受一個HTML字符串和我的查找功能將其翻譯。在html字符串中,我將有一個特殊的語法,例如#[translationkey],它將指出這個詞應該被翻譯。
這是結果我想:
var html = '<div><span>#[hello]</span><span>#[sir]</span>'
language.translate(html) //'<div><span>bonjour</span><span>monsieur</span>
我怎麼會寫language.translate? 我的想法是用正則表達式過濾掉我的特殊語法,然後在每個鍵上運行language.lookup。也許用字符串替換什麼的。
當談到正則表達式,我只是想出了一個非常不完整的例子,但我總是把它包括在內,所以也許有人會想到我正在嘗試做什麼。然後,如果有更好的但完全不同的解決方案,那就更值得歡迎了。
var value = "#[hello], nice to see you.";
lookup = function(word){
return "bonjour";
};
var res = new RegExp("\\b(hello)\\b", "gi").exec(value)
for (var c1 = 0; c1 < res.length; c1++){
value = value.replace(res[c1], lookup(res[c1]))
}
alert(value) //#[bonjour], nice to see you.
當然,正則表達式不應該過濾掉hello這個詞,而是過濾出語法,然後通過分組或類似的方式收集關鍵字。
任何人都可以幫忙嗎?
是的,最好是做這個服務器端。否則你會讓客戶端加載兩種語言,一種將被替換。 – Spoike 2012-04-25 08:26:07
您可以編輯完整的可運行示例的答案,因爲我無法使其與您的建議一起工作。 – John 2012-04-25 08:27:59
人,用?修改。每次我看到「不包括」範圍,而不是簡單的節約調節劑,我的眼睛流血的疼痛。 – 2012-04-25 09:00:39