Thymeleaf 教程

消息外部化和占位符

知识点

介绍国际化表达式 #{},将模板中的消息定义到外部的 properties 属性文件。以及使用参数,替换 properties 属性文件中消息的占位符。

正如前面 “多语言 welcome” 章节介绍的那样,#{...} 消息表达式允许我们根据本地语言环境将其链接到某个消息(支持国际化)。如下:

<p th:utext="#{home.welcome}">Welcome to our grocery store!</p>

对于不同的语言环境会单独创建一个 properties 文件,下面是西班牙语言环境消息(home_es.properties)。如下:

home.welcome=¡Bienvenido a nuestra tienda de comestibles!

但有一个方面我们仍然没有想到:如果消息文本不完全是静态的,会发生什么?例如,如果我们的应用程序在任何时候都知道谁是访问该站点的用户,并且我们想用名字向他们打招呼,那该怎么办?

如下:

<p>¡Bienvenido a nuestra tienda de comestibles, John Apricot!</p>

注意:John Apricot 是用户名,它是动态的,每个用户登录均不一样。

这意味着我们需要在消息中添加一个参数,就像这样:

home.welcome=¡Bienvenido a nuestra tienda de comestibles, {0}!

上面的参数({0})是根据 java.text.MessageFormat 标准语法指定的,这意味着您可以将参数格式化为 java.text.* 包中类的 API 文档中指定的数字和日期。

为了给我们的参数指定一个值,并给定一个名为 user 的 HTTP 会话属性,我们可以这样做:

<p th:utext="#{home.welcome(${session.user.name})}">
    Welcome to our grocery store, Sebastian Pepper!
</p>
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号