文章目录
- 一、初识I18N国际化
- 二、I18N的基本使用方法
- 三、通过其它方式实现国际化
一、初识I18N国际化
什么是I18N国际化:
国际化(Internationalization)指的是同一个 网站可以支持多种不同的语言,以方便不同的国家,不同语种的用户访问,一个相同的网站,而不同的人访问的时候可以根据用户所在的区域显示不同的语言文字,而网站的布局样式不发生改变;
国家化三要素:
(1)Locale对象:表示不同的时区、位置、语言;例如zh_CN表示中文中国,en_US表示英文美国
(2)国际化配置文件命名规则:
basename+_+local.properties;例如i18n_zh_CN.properties
(3)ResourcceBundle资源包:
Resources.getBundle():返回一个ResourcesBundle类
根据给定的baseName和Local读取相应的配置文件,得到文字信息;
ResourceBundle.getString(key):得到你想要的不同国家的语言信息;
二、I18N的基本使用方法
- 在文件中创建两个不同的propertice文件;
(2)分别在propertice文件中进行语言配置;
在i18n_zh_CN.properties中:
在i18n_en_US.properties中:
(3)编写测试类:
@Test
public void testI18n(){
//得到我们需要的Local对象
Locale locale =LOcale.US;
ResourceBundle bundle=ResourceBundle.getBundle("i18n",locale);
System.out.println("username"+bundle.getString("username"));
System.out.println("password"+bundle.getString("password"));
System.out.println("sex"+bundle.getString("sex"));
System.out.println("age"+bundle.getString("age"));
}
(4)运行结果如下所示:
三、通过其它方式实现国际化
(1)通过请求头实现国际化
Local local=request.getLocal
(2)通过语言类型实现国际化
用户点击不同的语言类型,实现语言类型转换;
将用户选择的语言类型参数携带在请求中,后台程序根据参数选择国际化类型;
Local local =null;
String country=request.getParameter("country");
if("cn".equals(country)){
locale=Locale.CHINA;
else if("usa".equals(country)){
locale=Locale.US;
}else{
locale=request.getLocale();
}
}