【Spring源码】MessageSource接口实现国际化
文章目录
1. 准备配置文件
准备三个配置文件,内容如下:
2. java获取本地配置文件属性
@Test
public void javaPropertiesTest() throws IOException {
// 读取messages.properties file属性
getJavaPropertiesTest("messages.properties", "file");
// 读取messages_en.properties file属性(英语)
getJavaPropertiesTest("messages_en.properties", "file");
// 读取messages_ja.properties file属性(日语)
getJavaPropertiesTest("messages_ja.properties", "file");
}
private void getJavaPropertiesTest(String FileName, String key) throws IOException {
InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream(FileName);
Properties properties = new Properties();
properties.load(resourceAsStream);
System.out.println("FileName=" + FileName + ", key = " + key +
", value = " + properties.get(key));
printSplitRaw();
}
private void printSplitRaw() {
System.out.println("------------------------------------------------");
}
结果:
2. ResourceBundle国际化处理
public void resourceBundleTest() {
// 不设置国家和地区
getResourceBundleTest("messages", Locale.getDefault(), "file");
// 设置英语地区
getResourceBundleTest("messages", Locale.ENGLISH, "file");
// 设置日语地区
getResourceBundleTest("messages", Locale.JAPANESE, "file");
}
private void getResourceBundleTest(String FileName, Locale locale, String key) {
ResourceBundle enMessage = ResourceBundle.getBundle(FileName,
locale, this.getClass().getClassLoader());
System.out.println("FileName=" + FileName + ", locale=" + locale + ", key = " + key +
", value = " + enMessage.getString(key));
printSplitRaw();
}
private void printSplitRaw() {
System.out.println("------------------------------------------------");
}
结果:
3. Spring boot获取本地配置文件配置
@SpringBootApplication
public class PaymentMain001 {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(PaymentMain001.class, args);
System.out.println(applicationContext);
String file = applicationContext.getMessage("file", null, Locale.ENGLISH);
System.out.println(file);
file = applicationContext.getMessage("file", null, Locale.JAPAN);
System.out.println(file);
file = applicationContext.getMessage("file", null, null);
System.out.println(file);
}
}
结果: