Thymeleaf - 填充 ang 获取语言 属性 值

Thymeleaf - Populate ang get language property values

情况

我正在使用 Spring Boot with Thymeleaf 来填充我的 HTML 模板文件并以字符串形式返回结果。为此,我使用了 SpringTemplateEngine.

代码如下所示

    Context context = new Context();
    context.setVariables(myProperties);
    return templateEngine.process(htmlTemplateName, context);

问题 我想实现类似的东西,但是有 language.property 个文件

我有两个语言 属性 文件:language.properties 和 language_en.properties 看起来像这样

my.value = This a string containing a dummy name = {name}

我想达到什么目的?

  1. 我想使用 thymeleaf 来达到正确的语言 属性 文件
  2. 用定义的变量填充 {name} 变量。模板应基于 HTMLs 中的变量名称,例如:hashmap: <"name", "FooName">
  3. 以字符串形式返回填充的文本。我没有 HTML 文件,我只想使用 thymeleaf 的模板机制。

问题

这可能吗?我该怎么做? 如果可能,language.properties 中的正确格式是什么?

是的,你可以!

您需要为资源目录中的消息文件配置一个具有正确基名的 MessageSource bean,例如: spring.messages.basename=path/to/language,假设您的属性文件位于 path/to/language(_en).properties 给定这个 bean,在任何需要翻译字符串的地方,您都可以注入 MessageSource 的实例并使用它来获取给定消息 key:

的翻译字符串
public class I18NHelper {

    private final MessageSource messageSource;

    public I18NHelper(final MessageSource messageSource) {
        this.messageSource = messageSource;
    }
    
    public String translate(String key, String name) {
        return messageSource.getMessage(key, new Object[] {name}, Locale.ENGLISH);
    }
}

编辑:修复了要注入的 class 和对 getMessage 的调用。 此外,有多种方法可以获取当前会话或系统的区域设置。我以英语语言环境为例。根据您的需要进行调整。