Ara*_*ram 2 java spring locale resourcebundle internationalization
当Locale.getDefault()返回en时,为什么spring"ReloadableResourceBundleMessageSource"无法找到与代码关联的正确消息,但是当它返回en_US时能够找到正确的消息
默认区域设置:en_US
key: CODE_1, Locale: Locale.US = Hit
key: CODE_1, Locale: Locale.CANADA = Hit
key: CODE_1, Locale: fr_CA = Hit
key: CODE_1, Locale: null (use default) = Hit
Run Code Online (Sandbox Code Playgroud)
默认区域设置:en
key: CODE_1, Locale: Locale.US = Hit
key: CODE_1, Locale: Locale.CANADA = CODE_1
key: CODE_1, Locale: fr_CA = CODE_1
key: CODE_1, Locale: null (use default) = CODE_1
Run Code Online (Sandbox Code Playgroud)
我只有一个在类路径中有CODE_1的包,它是message_en_US.properties
该消息仅为en_US语言环境定义,因为它是在message_en_US.properties文件中定义的.从locale en_US(Locale.US)切换到不同行为的原因 en是,如果在请求的语言环境中找不到消息,则默认情况下ReloadableResourceBundleMessageSource会回退到系统区域设置.
在第一种情况下,何时en_US是默认值,则始终找到消息,因为请求的本地是否为en_US,所以消息源执行回退是en_US在定义消息的位置.
当默认语言环境是en,只有en_US查询有效,因为它正在查找正确的属性文件.对于所有其他消息,在相应的属性文件中找不到该消息,并且在后备区域设置中也找不到该消息en.
| 归档时间: |
|
| 查看次数: |
4724 次 |
| 最近记录: |