首页 > 解决方案 > Spring Boot:如何访问服务或存储库中的语言环境

问题描述

我在 Spring Boot 中遵循了一些国际化教程。

https://www.youtube.com/watch?v=Y7pHhui0cD4https://www.baeldung.com/spring-boot-internationalization

到目前为止,我是这样配置它的:

@Configuration
public class InternationalizationConfiguration {


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

    @Bean 
    public ResourceBundleMessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        messageSource.setBasename("messages");
        messageSource.setUseCodeAsDefaultMessage(true);
        return messageSource;
    }

}

并像这样在 RestConroller 中使用它:


@RestController
public class ExperimentalControllerImpl implements ExperimentalController{

    @Autowired
    ResourceBundleMessageSource messageSource;

    @Override
    public String testI18n(@RequestHeader("Accept-Language") String locale) {
        StringBuilder builder = new StringBuilder();
        builder.append(messageSource.getMessage(Messages.HELLO, null, new Locale(locale)));
        builder.append("\n");
        builder.append(messageSource.getMessage(Messages.HOW_ARE_YOU, null, new Locale(locale)));
        return builder.toString();
    }

}

它工作正常......

但是如何从请求标头中获取区域信息到我的服务层或存储库层?

是否有最佳实践来存储请求发送的语言环境信息,以便我可以在我的服务和存储库中访问它?我认为该值必须是特定于请求/线程的。将其作为方法参数传递给另一层似乎很丑陋。

谢谢来自德国的问候

标签: javaspringspring-bootinternationalizationlocale

解决方案


推荐阅读