SpringBoot国际化

我们可以利用MessageSource接口中的getMessage方法去访问本地化资源文件

MessagesSource只是一个接口,真正的实现类是ResourceBundleMessageSource, 它默认会加载classpath路径下messages开头的properties文件。如果要自定义路径,配置spring.messages.basename的值即可。默认格式是messages_国家_地区.properties。我们这里省略了地区。

ResourceBundleMessageSource

LocaleContextHolder类中的getLocale方法可以获取请求中Accept-Language属性的值,如果获取不到语言类型,会去messages.properties文件中去找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;

@Service
public class I18nService {
private final MessageSource messageSource;

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

public String getMessage(String code) {
return getMessage(code, (Object[]) null);
}

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

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

}
1
spring.messages.basename=i18n/messages
文章作者: Fulin Zhang
文章链接: https://iuin.github.io/2019/spring-boot-i18n/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 个人博客