没有Web的Thymeleaf设置消息资源

时间:2019-03-20 13:51:17

标签: java internationalization thymeleaf

在这种情况下,没有Web配置,没有Spring MVC,没有Spring Boot等。仅仅是纯应用程序,我想使用Thymeleaf传输静态html资源,并以String形式获取内容。

但是,在这种情况下,如何为百里香叶设置国际消息?所以我可以在静态html文件中使用

<h1 th:text="#{messageA}">AAAAA</h1>

1 个答案:

答案 0 :(得分:1)

您只需要定义一个消息源。例如,在我的spring配置中,我有一个main方法:

@Configuration
@ComponentScan(basePackages = {"spring.cli.config"})
public class Main {
    public static void main(String... args) throws Exception {
        ConfigurableApplicationContext spring = new SpringApplicationBuilder(Main.class)
                .web(NONE)
                .profiles("default")
                .run(args);

        TemplateEngine engine = (TemplateEngine) spring.getBean("engine");
        Context context = new Context();
        System.out.println(engine.process("template", context));
    }
}

和一个配置文件(在@ComponentScan(basePackages = {"spring.cli.config"})中扫描):

@Configuration
public class Thymeleaf {
    @Bean
    public MessageSource messageSource() throws Exception {
        ReloadableResourceBundleMessageSource res = new ReloadableResourceBundleMessageSource();
        res.setBasename("file:src/main/resources/messages");
        return res;
    }
}

我的项目src/main/resources/messages.properties中有一个文件。

# messages.properties
messageA=Hello I am message A

在html中:

<h1 th:text="#{messageA}">AAAAA</h1>

解析为:

<div>Hello I am message A</div>