Thymeleaf可以像Freemarker一样进行本地化的模板查找吗?

时间:2016-03-29 21:45:57

标签: spring spring-mvc spring-boot freemarker thymeleaf

加载和包含模板时,

Freemarker(默认情况下)uses the locale to build the file names it looks for。例如,使用tos.ftl区域设置加载en_US(模板)会查找:

  1. tos_en_US.ftl
  2. tos_en.ftl
  3. tos.ftl
  4. 当页面在不同语言之间完全不同时,这对于翻译整个页面非常有用。例如,“服务条款”页面可能主要是静态的,因此不同的语言将具有完全不同的内容。在这种情况下,将整个内容外部化为从消息包加载的消息是一件麻烦事。

    我现在正在学习Thymeleaf,无法找到有关类似功能的任何信息。我知道Thymeleaf使用localized message bundles来填充th:text元素,但是它可以加载模板文件的本地化版本吗?

    注意:我正在使用Spring Boot

1 个答案:

答案 0 :(得分:1)

Thymeleaf的行为与Spring 4 MVC Internationalization相同(我猜你使用Thymeleaf和Spring?),它使用messages.properties来实现这一点。 例如,您有一个带有#{hello}消息的模板:

<html xmlns="http://www.w3.org/1999/xhtml" 
  xmlns:th="http://www.thymeleaf.org">
<head>
    <title></title>
</head>
<body>
    <span th:text="#{hello}">
</body>

#{hello}文字将绑定到messages.propertieshello

如果您locale是另一个,例如ru_RU您只需添加messages_ru_RU.properties并更改应用的locale即可。

之后,您的消息将从本地化的属性文件中获取。 请注意,如果您使用本地化消息文件,则必须才能拥有messages.properties文件。