【问题标题】:Internationalization in Spring boot MVC projectSpring Boot MVC 项目中的国际化
【发布时间】:2021-04-17 13:40:53
【问题描述】:

application.properties

spring.messages.basename=i18n/messages

/home/michael/IdeaProjects/adsmanager/application/src/main/resources/i18n/messages_de_DE.properties

greeting=Willkommen!

/home/michael/IdeaProjects/adsmanager/application/src/main/resources/i18n/messages_en_US.properties

greeting=Welcome!

GeneralConfig.java

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;

import java.util.Locale;


    @Configuration
    public class GeneralConfig implements WebMvcConfigurer {
        @Bean
        public LocaleResolver localeResolver() {
            SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
            sessionLocaleResolver.setDefaultLocale(Locale.US);
            return sessionLocaleResolver;
        }
    
        @Bean
        public LocaleChangeInterceptor localeChangeInterceptor() {
            LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
            lci.setParamName("lang");
            return lci;
        }
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(localeChangeInterceptor());
        }
    
    }

home.html

<div th:text="#{greeting}"></div>

http://localhost:8080/

??greeting_en_US??

http://localhost:8080/?lang=de_DE

??greeting_de_DE??

顺便说一句,我尝试将消息属性直接放置到资源文件夹中,并从 application.properties 中删除 basename 注释。同样的结果。

我该如何解决这个问题?

【问题讨论】:

    标签: spring spring-boot


    【解决方案1】:

    您的应用程序应该扩展 WebMvcConfigurerAdapter

    @Configuration
    public class GeneralConfig implements WebMvcConfigurerAdapter {
        
        @Bean
        public LocaleResolver localeResolver() {
            SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
            sessionLocaleResolver.setDefaultLocale(Locale.US);
            return sessionLocaleResolver;
        }
    
        @Bean
        public LocaleChangeInterceptor localeChangeInterceptor() {
            LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
            lci.setParamName("lang");
            return lci;
        }
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(localeChangeInterceptor());
        }
    }
    

    【讨论】:

    • WebMvcConfigurerAdapter 已弃用。
    猜你喜欢
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    相关资源
    最近更新 更多