JavaScript、Thymeleaf和本地化文本

JavaScript、Thymeleaf和本地化文本,javascript,html,thymeleaf,Javascript,Html,Thymeleaf,我们的网页是使用大量JavaScript构建的。用本地化文本替换生成的标记中的文本时遇到问题。JavaScript不是内联到web页面的,而是与一个指令一起引入的。JavaScript中有如下内容: $("#Dynamic-Modal-Content").empty(); $("#Dynamic-Modal-Content").append("<div class='dynamic_model' id='dynamic_id'>"+ "<p>Done?&

我们的网页是使用大量JavaScript构建的。用本地化文本替换生成的标记中的文本时遇到问题。JavaScript不是内联到web页面的,而是与一个指令一起引入的。JavaScript中有如下内容:

$("#Dynamic-Modal-Content").empty();     
$("#Dynamic-Modal-Content").append("<div class='dynamic_model' id='dynamic_id'>"+
    "<p>Done?</p></div>");
$(“#动态模式内容”).empty();
$(“#动态模式内容”).append(”+
“完成?

”;
网页中有一个

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

我需要用本地化文本替换“完成”,但不知道如何替换。我试过这个建议,但没用

这是真实代码的简化版本,但具有问题的要点


有来自广阔世界的人们的建议吗?

有两种解决方法:

  • 您可以在每个语言环境的文本中使用附加的js文件,并根据需要使用javascript选择适当的js文件。一些ui小部件库在某种程度上使用了这种方法。然而,它有两大缺点。Javascript afaik只能从浏览器解析语言环境,所以如果您在会话中保留语言环境首选项,您仍然需要与服务器进行一些通信(传递参数)。第二,也是更重要的一点,您无法避免将i18n文本拆分到不同的位置,一个用于服务器端,另一个用于js

  • 使用html5数据属性。我相信使用html5数据属性是服务器端和js之间进行数据通信的最干净的方式,而不仅仅是i18n

例如,您的div变为:

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