Java

时间:2017-11-20 16:16:30

标签: java spring-boot localization refactoring

目前,我有一个名为Messages的文件,它是一个包含多个静态字符串的类:

public class Messages {
    public static final String MESSAGE_1 = "Message one";
    public static final String MESSAGE_2 = "Message two";
    ...
}

为了支持多种语言,重构此实现的最佳方法是什么?字符串的名称应保持不变,但值应根据我传递的语言环境字符串而更改。不确定如何实施。

1 个答案:

答案 0 :(得分:1)

  1. 在资源文件夹下创建名称为的单独文件 messages_<locale>.properties例如messages_de_DE.properties 对于德国等。
  2. 在这些文件中,将键值对放入任何属性文件中,文本位于本地文本中
  3. 并创建一个这样的bean。

    @Configuration
    class InternationalizationConfig {
    
    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        slr.setDefaultLocale(Locale.GERMAN);
        return slr;
    }
    @Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:messages");
        messageSource.setCacheSeconds(3600);
        return messageSource;
    }
    

    }

  4. 如果您想将特定于语言环境的字符串放入自动装配MessageSource

    @Autowired
    MessageSource messageSource;
     messageSource.getMessage(....)