【问题标题】:How to set a standard i18n locale using spring-boot and thymeleaf?如何使用 spring-boot 和 thymeleaf 设置标准 i18n 语言环境?
【发布时间】:2025-12-29 16:10:07
【问题描述】:

我使用以下配置将 i18n 集成到我的应用程序中:

@Configuration
public class LocaleConfiguration extends WebMvcConfigurerAdapter {

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

    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:/i18n/application");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }

}

我为“en”和“de”设置了属性,到目前为止一切正常。

例如,如果我从西班牙进入页面,我只能从我的 html 文件中看到占位符。但不是这个,我想实现标准语言是英语(“en”),用于没有现有属性配置的语言/国家。所以我尝试了这个:

@Bean
public LocaleResolver localeResolver() {
    SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
    sessionLocaleResolver.setDefaultLocale(Locale.US);
    return sessionLocaleResolver;
}

它将默认设置为我想要的英语,但现在每个页面(也具有特殊语言的现有属性)都以英语显示。

【问题讨论】:

    标签: java spring spring-boot internationalization thymeleaf


    【解决方案1】:

    你必须删除这个

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
        sessionLocaleResolver.setDefaultLocale(Locale.US);
        return sessionLocaleResolver;
    }
    

    并添加src\main\resources\i18n默认英文application.properties

    这应该可以解决您的问题

    【讨论】: