javascript
  • html
  • thymeleaf
  • 2014-11-03 48 views 0 likes 
    0

    我們的網頁使用很多的JavaScript。我無法用本地化文本替換生成的標記中的文本。 JavaScript 不是內嵌於網頁的,而是帶有指令。在JavaScript是類似以下內容:JavaScript,Thymeleaf和本地化文本

    $("#Dynamic-Modal-Content").empty();  
    $("#Dynamic-Modal-Content").append("<div class='dynamic_model' id='dynamic_id'>"+ 
        "<p>Done?</p></div>"); 
    

    內的網頁是

    <div id="Dynamic-Modal-Content"></div> 
    

    我需要更換「做什麼?」與本地化的文字,但無法弄清楚如何。我嘗試了關於http://blog.florentlim.com/how-to-write-javascript-including-thymeleaf/#comment-7224的建議,但那不起作用。

    這是真實代碼的簡化版本,但具有問題的要點。

    任何人來自大的世界?

    回答

    0

    這有2個解決方法:

    • 您可以使用額外的js文件與文本的每個區域,並挑選與需求的javascript正確的一個。一些ui widget庫在某種程度上使用這種方法。但它有兩個主要缺點。如果您在會話中保留語言環境首選項,那麼Javascript afaik只能從瀏覽器解析語言環境,因此您仍然需要一些通信參數 - 傳遞給服務器。其次,更重要的是,你不能避免在每個地區的不同位置分割你的i18n文本 - 一個用於服務器端,一個用於js。

    • 使用html5數據屬性。我相信使用html5數據屬性是在服務器端和js之間進行數據通信的最簡單方式,不僅適用於i18n。

    例如您的DIV變爲:

    <div id="Dynamic-Modal-Content" th:attr="data-txt=#{label.done}"></div> 
    

    然後使用jQuery,你可以輕鬆地檢索所有的HTML5數據屬性,如果他們是jQuery的數據:

    $("#Dynamic-Modal-Content").data("txt"); 
    
    相關問題