从源码MessageSource的三个实现出发实战spring·i18n国际化 - 简熵 - 博客园
java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import java.util.Locale;
import java.util.ResourceBundle;
@SpringBootApplication
public class HelloWorldSpringbootApplication {
// ReloadableResourceBundleMessageSource可以加载指定项目以外的国际化文件
private static String zhPath =
"file:D:/temp/content";
public static void main(String[] args) {
// SpringApplication.run(HelloWorldSpringbootApplication.class, args);
getSpringContent();
}
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames(zhPath, "classpath:content");
return messageSource;
}
public static void getSpringContent() {
AnnotationConfigApplicationContext ctx =
new AnnotationConfigApplicationContext(HelloWorldSpringbootApplication.class);
MessageSource source = ctx.getBean(MessageSource.class);
Locale localeZh = new Locale("zh","CN");
String hello = source.getMessage("hello", null, localeZh);
System.out.println("hello = " + hello);
}
public static void getContent() {
Locale localeEn = new Locale("en","US");
Locale localeZh = new Locale("zh","CN");
ResourceBundle res = ResourceBundle.getBundle("content", localeZh);
String hello = res.getString("hello");
System.out.println("hello = " + hello);
}
}
再加三个文件:
content.properties
java
hello=123
content_en_US.properties
java
hello=hello_world
content_zh_CN.properties
java
hello=456