-Duser.language=en -Duser.region=US
java文件国际化 1: jvm 默认采用操作系统的语言国家设置 2: 可以手动来设置jvm语言和国家-Duser.country=FR -Duser.language=fr 3: 用resourceBundle 从国际化文件取配置的时候 3.1:如果对应的配置文件存在,从messageResources_ko_KR 取 3.2: 如果对应的配置文件不存在,根据jvm 设置国家和语言去找配置文件 messageResources_fr_FR 3.3 : 如果jvm 设置国家和语言 对应的配置文件不存在,直接从messageResources 查找 3.4 如果以上3条对应的配置文件都不存在,java.util.MissingResourceException: Can't find bundle for base name MessageResources,抛出异常 4: 如果国际化文件需要动态显示,需要在国际化文件设置占位符{0} 从0开始 要用到messageFormate,把对象数组传递给format方法,完成格式化 : MessageFormat mf = new MessageFormat(str); System.out.println(mf.format(new Object[]{"Jacky","123456"})); 对象数组长度少于占位符数量,不会设置,依次设置到占位符上,不会抛出异常 5: 中文的转换:JAVA_HOME/bin/native2ascii命令,可以转换单行,也可以转换整个文件 6: 在不同操作系统下转换,要把编码方式给传递进来,否则会出现乱码情况 例: 1. MessageResources.properties文件内容 user.name=user name MessageResources_fr_FR.properties文件内容 user.name= fr_FR user name MessageResources_zh_CN.properties文件内容 user.name=\u7528\u6237\u540d{0} MessageResources_ko_KR.properties文件内容 user.name= ko_KR user name:{0} user password: {1} 2. mport java.text.MessageFormat; import java.util.Locale; import java.util.ResourceBundle; public class Test { public static void main(String[] args) { Locale locale =Locale.getDefault(); System.out.println(locale.getCountry()); System.out.println(locale.getLanguage()); //System.out.println(System.getProperties()); Locale locale1 =new Locale("ko","KR"); ResourceBundle bundle =ResourceBundle.getBundle("MessageResources", locale); String str =bundle.getString("user.name"); MessageFormat mf = new MessageFormat(str); System.out.println(mf.format(new Object[]{"Jacky","123456"})); } }