加载 Java 消息属性以进行内部化
Loading of Java message properties for internalization
我有以下 Java i18n 消息 class.:
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
,则没有消息属性文件。那么 message_de.properties
是作为后备加载还是需要我自己实现?
根据 this 博客 post 你是对的。
So when the default locale of your system is de_DE and you request a resource for locale en_US, the lookup order for the properties files is:
- MyApp_en_US.properties
- MyApp_en.properties
- MyApp_de_DE.properties
- MyApp_de.properties
- MyApp.properties
我有以下 Java i18n 消息 class.:
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
,则没有消息属性文件。那么 message_de.properties
是作为后备加载还是需要我自己实现?
根据 this 博客 post 你是对的。
So when the default locale of your system is de_DE and you request a resource for locale en_US, the lookup order for the properties files is:
- MyApp_en_US.properties
- MyApp_en.properties
- MyApp_de_DE.properties
- MyApp_de.properties
- MyApp.properties