加载Java消息属性以进行内部化

加载Java消息属性以进行内部化,java,localization,internationalization,translation,properties-file,Java,Localization,Internationalization,Translation,Properties File,我有以下Java i18n消息类: public class Messages { private static final String BUNDLE_NAME = "languages.message"; private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); private Messages() { } publi

我有以下Java i18n消息类:

public class Messages { 

    private static final String BUNDLE_NAME = "languages.message";
    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);

    private Messages() {
    }

    public static String getI18n(String key) {
        try {
            return RESOURCE_BUNDLE.getString(key);
        } catch (MissingResourceException e) {
            return '!' + key + '!';
        }
    }

    public static String getI18n(String key, Object... params  ) {
        try {
            return MessageFormat.format(RESOURCE_BUNDLE.getString(key), params);
        } catch (MissingResourceException e) {
            return '!' + key + '!';
        }
    }
}
我已创建以下邮件属性文件:

message.properties
message_de.properties
message_de_DE.properties
在我的程序中,我根据系统的默认语言环境获得翻译。如果是
de_de
,则会加载德语邮件属性
message_de_de.properties

如果默认区域设置为
de_CH
,则没有消息属性文件。那么,
消息的属性是作为后备加载的还是我需要自己实现它?

根据博客文章,你是对的

因此,当系统的默认区域设置为de_de,并且您为区域设置en_US请求资源时,属性文件的查找顺序为:

  • MyApp_en_美国酒店
  • MyApp_en.properties
  • MyApp_de_de.properties
  • MyApp_de.properties
  • MyApp.properties