思路
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