2、程序国际化

2、程序国际化

1、对程序国际化的理解
internationalzation:国际化程序可以这样理解
同一套代码可以在各个语言环境下使用
各个环境下,只是语言环境显示1不同,那么具体的程序操作本身都是一样的,那么国际化程序完成也是一样的
2、locale类
locale对象表示了特定的地理,政治和文化地区,需要locale来执行其任务操作称为语言环境灵敏的操作,她使用locale为用户量身定做信息。
使用此类这的构造方法了创建locale:

Locale(String language)
Locale(String language,String country)
通过静态方法创建Locale
getDefault()

3、ResourceBundle类
国际化的实现核心在于显示的语音上,通常的做法是将其定义成若干个属性文件(文件后缀为*.properties),属性文件中格式采用“key=value”
ResourceBundle类表示的是一个资源文件的读取操作,所有的资源文件需要使用ResourceBundle进行读取,读取的时候不需要加文件的后缀

getBundle(String baseName)
getBundle(String baseName,Locale locale)
getBundle(String key)

4、处理动态文本
实例的诉求是固定的,如果现在假设要想打印一个“欢迎你,”,具体名字不固定,那么就要使用动态文本进行程序的处理
进行动态的文本处理就必须使用
java.text.MessageFormat
类来完成是
java.text.Format*的子类

import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Scanner;

/*
 * 程序国际化
 * 1、Locale
 * 2、Propertise文件:属性文件(配置文件),内容一键值对的形式存放(key=value)
 * 3、ResourceBundle工具类,来绑定属性文件,并指定Locale对象,来自动选择使用哪个属性文件,默认将使用与操作系统相同的语音环境
 * getString()方法来从属文件中使用key来获取value
 * 注意:ResourceBundle工具类是只读
 */

public class intnernationDemo {

	public static void main(String[] args) {
		// 创建一个本地语言环境对象,该对象会根据参数自动选择与之相关的语音环境
		//参数:语音,地区
		Locale locale_CN=new Locale("zh","CN");
		Locale locale_US=new Locale("en","US");
		//获取当前系统默认语音
		Locale locale_dufault=Locale.getDefault();
		
		Scanner input=new Scanner(System.in);
		//用于绑定属性文件的工具类(参数:属性文件的基本名(就是前缀:比如info))
		//切换英文
		//ResourceBundle r=ResourceBundle.getBundle("API.info",locale_US);
		ResourceBundle r=ResourceBundle.getBundle("API.info");
		System.out.println(r.getString("System.name"));
		System.out.println(r.getString("input.userName"));
		String userName=input.nextLine();
		System.out.println(r.getString("input.password"));
		String password=input.nextLine();
		
		if("abcd".equals(userName)&&"123".equals(password)) {
			System.out.println(r.getString("login.success"));
			String welcome=r.getString("welcome");
			//动态文本格式化
			welcome= MessageFormat.format(welcome,userName);
			System.out.println(welcome);
		}else {
			System.out.println(r.getString("login.error"));
		}
	}

}
System.name=\u5458\u5DE5\u7BA1\u7406\u7CFB\u7EDF\uFF1A
input.userName=\u8F93\u5165\u7528\u6237\u540D
input.password=\u8F93\u5165\u5BC6\u7801
login.success=\u767B\u5F55\u6210\u529F
login.error=\u767B\u5F55\u5931\u8D25
welcome=\u6B22\u8FCE\u4F60{0}
System.name=EMP Manager System:
input.userName=input UserName:
input.password=input Password:
login.success=Login Success
login.error=Login Error
welcome=welcome{0}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值