国际化

思路

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