2016-01-26 234 views
0

我需要創建一個網頁作爲我的大學學位項目,它必須支持至少2種語言。多語言網站(HTML/javascript)

所以我想創建一個XML文件,並確定所有文本字段值對於每一種語言,這樣的事情:

<Login-en> 
     <login-header-text>Login</login-header-text> 
     <username-text>Username:</username-text> 
     <password-text>Password:</password-text> 
     <remember-me-text>Remember me</remember-me-text> 
    </Login-en> 

然後在一個小的JavaScript的HTML模板底部加載XML文件環路節點和替換HTML的內容,這樣

<div id="container"> 
<form name="loginForm" id="loginForm" onsubmit="return validate();" method="post"> 
    <div class="login" id="login-header-text"></div> 
    <div class="username-text" id="username-text"></div> 
    <div class="password-text" id="password-text"></div> 
    <div class="username-field" id="username-field-div"> 
     <input type="text" name="username" id="usernameInput" value="" /> 
    </div> 
    <div class="password-field" id="password-field-div"> 
     <input type="password" name="password" id="passwordInput" value=""/> 
    </div> 
    <div class="remember-checkbox"> 
     <input type="checkbox" name="remember-me" id="remember-me" /> 
     <label for="remember-me" id="remember-me-text"></label> 
    </div> 
    <input type="submit" name="submit" value="" /> 
</form> 

<script type="text/javascript"> 
xmlhttp = new XMLHttpRequest(); 
xmlhttp.open("GET",'language/lang.xml',false); 
xmlhttp.send(); 
xmlDoc = xmlhttp.responseXML; 
var selectedLanguageElements = xmlDoc.getElementsByTagName("Login-" + "en")[0].childNodes; 
for(var i=0;i<selectedLanguageElements.length;i++) 
{ 
    if(selectedLanguageElements[i].nodeType == Node.ELEMENT_NODE) { 
     document.getElementById(selectedLanguageElements[i].nodeName).innerHTML = selectedLanguageElements[i].firstChild.nodeValue; 
    } 
} 

這是夠好還是有一些更優雅的方式呢?

謝謝你的任何建議。

+1

我會定義兩種語言是什麼意思,如果Javascript計數和HTML沒有,那麼我會說XML也不應該算作一種語言。 –

+1

http://stackoverflow.com/questions/228835/best-practice-javascript-and-multilanguage – Drone

+1

這樣做不是很好,因爲很多搜索引擎都不接受js轉換。所以就像你的網站是空的。在服務器網站上進行翻譯(使用php或其他更現代的東西,比如node.js)。使用{translate12312321321}之類的一些鉤子,並在輸出之前將其替換爲html蒸汽 – Pete

回答

0

對於您的大學學位項目,我認爲這已經足夠好了。但在我看來,我認爲JSON會比XML更好,但如果您想使用XML,那就沒問題。其他更好的方法是對每種語言使用一個文件,例如lang-en.xml,lang-de.xml ...因此,當您請求僅接收特定語言的語言文件時,您可以通過這種方式正在避免接收不必要的數據。

如果你想知道更多,我建議你研究一些源代碼,如http://i18njs.com/,看看這個工作,以及他們是如何做的。

+0

thx這個國際化插件看起來不錯,很容易,我會嘗試。 –