如何在spring中使用thymeleaf在外部化消息之间切换?

dwthyt8l  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(351)

Spring +百里香
我想显示来自的消息 Messages_pl.properties 或者 Messages_en.properties 视需要而定。我的问题是,当我想查看第二个文件( Messages_pl.properties 默认情况下会被考虑在内)。
为了使用指定的basename访问资源包,我将下面的bean添加到@configuration类中:

@Bean
    public ResourceBundleMessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        messageSource.setBasename("Messages");
        return messageSource;
    }
``` `Messages_pl.properties` :

welcome.message=siemanko
``` Messages_en.properties :

welcome.message=hello

使用此属性的html文件片段:

<h1 th:text="#{message.welcome}"></h1>

结果: siemanko 我该怎么做才能得到结果呢 hello ?

bakd9h0s

bakd9h0s1#

可以在同一文件messages.properties上定义以下内容:

welcome.message.pl=siemanko
welcome.message.en=hello

然后,可以使用本地解析器使项目能够确定当前正在使用的区域设置:

@Bean
public LocaleResolver localeResolver() {
    return new CookieLocaleResolver();
}

然后添加一个语言拦截器:

@Override
public void addInterceptors(InterceptorRegistry registry) {
    LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
    localeChangeInterceptor.setParamName("lang");
    registry.addInterceptor(localeChangeInterceptor);
}

在此之后,在语言之间切换很简单,您只需更改链接上参数lang的值:

localhost:8080/your_page?lang=pl // will show siemanko on your page
localhost:8080/your_page?lang=en // will show hello on your page

相关问题