国际化

思路

Spring对国际化支持的接口是MessageSource。

可以使用其子类ResourceBundleMessageSource,设置国际化文件的文职,和字符集,并把其交给Spring容器。

可以使用java.util.Locale对默认要使用的语言进行设置。

@Bean
    public ResourceBundleMessageSource messageSource() {
        /* 设置默认的语言 */
        Locale.setDefault(Locale.US);
        ResourceBundleMessageSource source = new ResourceBundleMessageSource();
        // name of the resource bundle
        source.setBasenames("i18n/messages");
        source.setUseCodeAsDefaultMessage(true);
        source.setDefaultEncoding("GBK");
        return source;
    }

想获取多语言环境的文字的时候可以使用MessageSource的getMessage方法获取。

对外可以暴露I18nService服务进行多语言环境下获取信息。

public class I18nService {

    private final MessageSource messageSource;

    public I18nService(MessageSource messageSource) {
        this.messageSource = messageSource;
    }

    public String getMessage(String msgKey, Object[] args) {
        return messageSource.getMessage(msgKey, args, LocaleContextHolder.getLocale());
    }

    public String getMessage(String msgKey) {
        return getMessage(msgKey, null);
    }
}

demo地址

https://gitee.com/yang_hang/globalization.git