Sud*_*ani 1 java locale localization resourcebundle internationalization
Locales 的使用顺序到底是什么?我有 3 个属性文件:
Dolphins.properties
name=The Dolphin
age=0
Run Code Online (Sandbox Code Playgroud)
Dolphins_en.properties
name=Dolly
age=4
Run Code Online (Sandbox Code Playgroud)
Dolphins_fr.properties
name=Dolly
Run Code Online (Sandbox Code Playgroud)
我的代码是:
5: Locale fr = new Locale("fr");
6: Locale.setDefault(new Locale("en", "US"));
7: Resource Bundle b = ResourceBundle.getBundle("Dolphins", fr);
8: b.getString("name");
9: b.getString("age");
Run Code Online (Sandbox Code Playgroud)
代码将默认的 Locale 设置为 Dolphins_en 那么为什么它使用 Dolphins.properties 呢?我错过了什么或误解了什么?
提前致谢。
选择捆绑链时使用默认区域设置。这意味着,当您未指定它时,它将被使用:ResourceBundle.getBundle("Dolphins")或者当您指定包不存在的区域设置时:ResourceBundle.getBundle("Dolphins", new Locale("cs"))。
但是,当选择捆绑包时,默认区域设置将不再用于值选择。这意味着当Dolphins_fr.propertiesage中不存在该键时,它将使用默认捆绑包Dolphins.properties中的值。
注意:如果密钥不在Dolphins.properties中,则会抛出MissingResourceException。
更新:我感觉我过去看到过同样的代码,终于明白了。您可以查看Jeanne Boyarsky - OCP学习指南或这里https://coderanch.com/t/685833/certification/OCP-Chapter-Jeanne-Boyarsky,其中完全相同的代码和原因用更好的英语解释。
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |