JavaWeb学习总结(十八)i18n国际化

JavaWeb学习总结(十八)i18n国际化

一、概述

  • 国际化(Internationalization)指的是同一个网站可以支持多种不同的语言,以方便不同国家,不同语种的用户访问。
  • 关于国际化我们想到的最简单的方案就是为不同的国家创建不同的网站,比如苹果公司,他的英文官网是: http://www.apple.com 而中国官网是 http://www.apple.com/cn
  • 苹果公司这种方案并不适合全部公司,而我们希望相同的一个网站,而不同人访问的时候可以根据用户所在的区域显示不同的语言文字,而网站的布局样式等不发生改变。
  • 于是就有了我们说的国际化,国际化总的来说就是同一个网站不同国家的人来访问可以显示出不同的语言。但实际上这 种需求并不强烈,一般真的有国际化需求的公司,主流采用的依然是苹果公司的那种方案,为不同的国家创建不同的页 面。所以国际化的内容我们了解一下即可。
  • 国际化的英文 Internationalization,但是由于拼写过长,老外想了一个简单的写法叫做 I18N,代表的是 Internationalization 这个单词,以 I 开头,以 N 结尾,而中间是 18 个字母,所以简写为 I18N。以后我们说 I18N 和国际化是一个意思。

二、国际化三要素

在这里插入图片描述

三、国际化资源 properties 测试

案例
配置两个语言的配置文件: myi18n_en_US.properties 英文:

username=username
password=password
sex=sex
age=age

配置两个语言的配置文件: i18n_zh_CN.properties 中文:

username=用户名
password=密码
sex=性别
age=年龄

测试类:

import java.util.Locale;
import java.util.ResourceBundle;

public class I18nTest {
    public static void main(String[] args) {
        //获取你系统默认的语言、国家信息
        Locale locale = Locale.getDefault();
        System.out.println(locale);

        //遍历查看所有Locale对象
        //for (Locale availableLocale : Locale.getAvailableLocales()) {
        //  System.out.println(availableLocale);
        //}

        // 获取中文,中国的常量的Locale对象
        Locale locale1 = Locale.CHINA;
        System.out.println(locale1);
        // 获取英文,美国的常量的Locale对象
        Locale locale2 = Locale.US;
        System.out.println(locale2);

        // 通过指定的basename和Locale对象,读取 相应的配置文件
        ResourceBundle bundle = ResourceBundle.getBundle("myi18n", locale1);
        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"));

        // 通过指定的basename和Locale对象,读取 相应的配置文件
        ResourceBundle bundle1 = ResourceBundle.getBundle("myi18n", locale2);
        System.out.println("username=" + bundle1.getString("username"));
        System.out.println("password=" + bundle1.getString("password"));
        System.out.println("sex=" + bundle1.getString("sex"));
        System.out.println("age=" + bundle1.getString("age"));
    }
}

在这里插入图片描述

四、通过请求头国际化页面

案例
配置两个语言的配置文件: myi18n_en_US.properties 英文:

username=username
password=password
sex=sex
age=age
regist=Regist
boy=boy
girl=girl
email=email
reset=reset
submit=submit

配置两个语言的配置文件: i18n_zh_CN.properties 中文:

username=用户名
password=密码
sex=性别
age=年龄
regist=注册
boy=girl=email=邮箱
reset=重置
submit=提交

a.jsp:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
F12查看请求头的Accept-Language:
在这里插入图片描述
我们通过结果可以发现,请求头获取到的Locale信息是zh_CN,这其实是和浏览器的设置相关的,如果浏览器的语言设置最前面是英文(美国),那么就会显示英文的页面:
在这里插入图片描述

五、通过显示的选择语言类型进行国际化

案例
a.jsp:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

六、JSTL 标签库实现国际化

在开发中,我们不希望jsp页面中有大量的代码脚本,那么我们就可以使用JSTL标签替代代码脚本

步骤

  1. 导入JSTL标签库jar包后,使用标签设置Locale信息
  2. 使用标签设置baseName
  3. 使用标签输出国际化信息

案例
a.jsp:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值