使用th:text以及外部化文本
外部化文本就是从模版文件里取出一段模版代码,放到独立的文件里(通常是.properties
文件)。这样,用其它语言写的等价文本就能很容易地代替它们。这个过程就是所谓的国际化,或者简单地称为i18n。外部化的代码片段通常称为“信息(message)”。
信息总是有一个键值,用来识别它们。Thymeleaf允许你指定:一段文本应当对应于一条特定的使用#{...}
语法的信息。如下:
我们在这儿看到的,实际上是Thymeleaf标准方言的两种不同的特性:
th:text
属性,会对其表达式求值,并把结果设置为宿主标签的主体,实际上会替换代码里的“Welcome to our grocery store!”文本。#{home.welcome}
表达式,由标准表达式语法指定,指明:th:text
属性使用的文本应当对应于键值home.welcome
的信息。而键值home.welcome
对应于我们处理模版时所在的地区。
那么,外部化的文本在哪里呢?
在Thymeleaf里,外部化的文本所在的位置完全可以配置。它取决于正在使用的指定的org.thymeleaf.messageresolver.IMessageResolver
实现。通常,会使用基于.properties
文件的实现。但是,如果想要,我们也可以创建我们自己的实现。比如,从数据库获🉐️信息。
然而,我们并没有在初始化的时候,为我们的模版引擎指定一个信息解析器。也就是说,我们的应用正在使用标准信息解析器
。它由org.thymeleaf.messageresolver.StandardMessageResolver
实现。
标准信息解析器期望在相同文件夹下的属性文件里,为/WEB-INF/templates/home.html
找到信息。而且,属性文件需要和模版同名,比如:
/WEB-INF/templates/home_en.properties
对应🇬🇧英文文本。/WEB-INF/templates/home_es.properties
对应🇪🇸西班牙文文本。/WEB-INF/templates/home_pt_BR.properties
对应🇵🇹葡萄牙文(🇧🇷巴西文)文本。/WEB-INF/templates/home.properties
对应默认文本(如果地区没有匹配项)。
让我们看一看我们的home_es.properties
文件:
这就是为了让Thymeleaf处理我们的模版,所要做的所有工作。接下来,让我们创建我们的Home controller。
Last updated