创建.properties资源文件,且按照该规则命名:资源名_语言代码_国家/地区代码.properties,如i18n_zh_CN.properties,其中i18n可以随便写,后面的按照下图写
国家/地区 | 语言编码 | 国家/地区 | 语言编码 |
简体中文(中国) | zh-cn | 繁体中文(台湾地区) | zh-tw |
繁体中文(香港) | zh-hk | 英语(香港) | en-hk |
英语(美国) | en-us | 英语(英国) | en-gb |
。。。 |
|
|
|
#i18n.properties
#默认语言,在没有找到其他语言时,默认使用该配置
msg = hello,{0}
#i18n_en_US.properties
msg = hello,{0}
#i18n_zh_CN.properties
msg=\u60a8\u597d\uff01{0}
国际化properties文件中的value必须是Unicode 编码,否则输出时将是乱码,这里的{0}是占位符,java代码输出时会用到。为了开发时方便可以安装eclipse插件打开资源文件,如ResourceBundle Editor或者PropertiesEditor,用插件打开properties就可以看到中文,在输出时会自动转为Unicode
package website;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
public class I18n {
public static void main(String[] args) {
Locale locale = Locale.CHINA; //设置语言为中国
ResourceBundle resourceBundle = ResourceBundle.getBundle("i18n", locale); //第一个参数是资源基名,根据locale的值去找对应语言的properties
String msg = resourceBundle.getString("msg"); //取出资源文件中key为msg的值
System.out.println(msg); //输出properties中的值
String result = MessageFormat.format(msg,"张三"); //使用占位符格式化输出
System.out.println(result); //格式化后输出
}
}