xxw1754352621 / java-dev

愿景:提升自我知识容量,扩展自我知识边界
Apache License 2.0
6 stars 2 forks source link

spring 项目国际化 #25

Closed xxw1754352621 closed 5 years ago

xxw1754352621 commented 5 years ago

1.默认bundle的前缀名字,messages,其他可以寻找类路径下的文件 https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/#boot-features-internationalization

2.设置JDK默认语言和默认区域 启动时指定参数-Duser.language=zh -Duser.region=CN

xxw1754352621 commented 5 years ago

ResourceBundleMessageSource.MessageSourceControl内部类获取 资源文件

// Special handling of default encoding
if (format.equals("java.properties")) {
String bundleName = toBundleName(baseName, locale);
final String resourceName = toResourceName(bundleName, "properties");
省略
}

//获取
string toBundleName(){
   if (variant != "") {
                  sb.append(language).append('_').append(country).append('_').append(variant);
                } else if (country != "") {
                    sb.append(language).append('_').append(country);
                } else {
                    sb.append(language);
                }
省略
}

因为locale如果客户端没有传,则采用机器和JDK设置的,如果根据这两个参数找不到

则会只匹配到basename.properties的文件,所以需要保留这个文件,或者设置JDK参数

xxw1754352621 commented 5 years ago

对于web项目的local设置,可以在区域解析器哪里设置,然后添加到拦截器,通知对请求设置默认可以识别的local

参考: https://blog.csdn.net/u012834750/article/details/79315968