国际化和本地化

01 国际化和本地化

为什么要国际化?

  • 互联网发展迅猛,将不同地区的人都联系在了一起,共享互联网上的各种 web 资源。因为互联网是在欧美国家率先发展起来的,所以网上所存在的大多数资源都是英文,对于非英文国家,想要阅读这些东西,难免有些障碍。在中国也是如此,大多数WEB程序采用的是中文字符,也给其他国家的人造成了阅读上的困难。一些业务范围扩展到海外的国际化公司,为了让不同国家的人都能了解本公司产品信息,于是定制了多个版本,通过不同的URL访问。如下面的微软官网:
    • 中国
      在这里插入图片描述
    • 美国
      在这里插入图片描述
    • 日本在这里插入图片描述

国际化 & 本地化

  • 是指程序在不做任何修改的情况下,就可以在不同的国家或地区的不同语言环境下,按照当地的语言和格式习惯显示字符。国际化又称为i18n(internationalization)。
  • 本地化:一个国际化的程序,当他运行在本地机器上时,需要根据本地机器的语言和地区设置显示相应的字符,这个过程叫本地化,又称为L10N(Localization)

Java的国际化

1. Locale:语言环境
  • 构造方法
    在这里插入图片描述
  • ISO规定语言及国家代码
语言代码国家代码
汉语zh中国CN
英语en英语US
英语en英语GB
2. ResourceBundle:资源包

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

3. 案例
package javai18n;

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

public class Test {
	
	public static void main(String[] args) {
		//Locale的这个对象封装了不同的语言,不同国家和地区的语言环境
		Locale locale = new Locale("en","US");
		//ResourceBundle资源包包含了特定于locale也就是语言环境的资源对象,从参数也可以看出
		ResourceBundle bundle = ResourceBundle.getBundle("MyResource",locale);
		String name = bundle.getString("msg");
		System.out.println(name);
		Locale locale1 = new Locale("zh","CN");
		ResourceBundle bundle1 = ResourceBundle.getBundle("MyResource",locale1);
		String name1 = bundle1.getString("msg");
		System.out.println(name1);
	}
}

在这里插入图片描述
在这里插入图片描述
注:properties文件不要以utf-8来保存,要用别的编码来写,删掉再写一遍
在这里插入图片描述

在这里插入图片描述

02 struts2对国际化的支持

Struts2对国际化提供了非常好的支持,它对Java的国际化实现方式做了一个封装,提供了更友好、更便利的国际化实现

资源的加载方式

在这里插入图片描述
注:下面那个案例就是这样加载的,是第7步,虽然第一次访问jsp页面没有传递任何语言参数,但是Action会读取浏览器默认的语言环境,然后加载资源包,显示到页面。

案例上手

  1. 创建项目
  2. 导入jar包
  3. 编写web.xml
  4. 编写action
    在这里插入图片描述
  5. 编写struts.xml文件(第七种方式)
    在这里插入图片描述
  6. jsp页面
    在这里插入图片描述
  7. 资源文件
    在这里插入图片描述
  • 运行结果
    • 中文环境运行结果
      在这里插入图片描述
    • 切换超链接,会发送相应参数给Action,即使不继承ActionSupport也可以
      在这里插入图片描述
    • 改变语言环境
      在这里插入图片描述在这里插入图片描述

消息格式化

1. 占位符(struts2沿袭了这种风格)

在这里插入图片描述

2. OGNL表达式

在这里插入图片描述

案例

在这里插入图片描述

package com.test;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{
	private String username;
	private String password;
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}
	

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
	
	public String execute() {
		return "success";
	}
	
	public String loginExecute() {
		if(this.username.equals("") || this.username==null) {
			System.out.println(this.username);
			return "failure";
		}
		return "success";
	}
}

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

  • 运行结果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值