程序国际化

1.对国际化程序的理解

Internationalization:国际化程序可以这样理解:

同一套程序代码可以在各个语言环境下进行使用。

各个语言环境下,只是语言显示的不同,那么具体的程序操作本身都是一样的,那么国家化程序完成的就是那样的一个功能。


2.Locale类

Locale对象表示了特定的地理、政治和文化地区。需要Locale来执行其任务的操作称为语言环境敏感的操作,它使用Locale为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、地区或文化的风俗传统来格式化该数值。

使用此类中的构造方法来创建Locale:

Locale(String language)

Locale(String language,String country)

通过静态方法创建Locale:

getDefault()


3.ResourcBundle类

国际化的实现核心在于显示的语言上,通常的做法是将其定义成若干个属性文件(文件后缀是*.properties),属性文件中的格式采用“key=value”的格式进行操作。


ResourceBundle类表示的是一个资源文件的读取操作,所有的资源文件需要使用

ResourceBundle进行读取,读取的时候不需要加上文件的后缀。


getBundle(String baseName)

getBundle(String baseName,Locale locale)

getString(String key)


4.处理动态文本

前面的实例读取的内容都是固定的,如果现在假设要想打印这样的信息“欢迎你,XXX”,具体的名字不是固定的,那么就要使用动态文本进行程序的处理。

进行动态的文本处理,必须使用java.text.MessageFormat类完成。这个类是java.text.Format的子类。


package com.vince.i18n;

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

/**
 * 程序国际化
 * @author lamp
 *
 */
public class I18nDemo {

	public static void main(String[] args) {
		//创建一个本地语言环境对象()
		Locale locale = new Locale("zh", "CN");
		Locale locale2 = Locale.US;
		Locale locale3 = Locale.getDefault();
		
		//模拟用户登录功能
		//通过ResourceBundle工具类绑定资源文件(包名.文件名的基本名称)
		ResourceBundle res = ResourceBundle.getBundle("com.vince.i18n.info",locale2);
		Scanner input = new Scanner(System.in);
		//从绑定的资源文件(属性文件)中根据key获取对应的value
		String inputKey = res.getString("input");
		String usernameKey = res.getString("username");
		String passwordKey = res.getString("password");
		String infoSuccessKey = res.getString("info.success");
		String infoErrorKey = res.getString("info.error");
		
		System.out.println(inputKey+usernameKey);
		String username = input.next();
		System.out.println(inputKey+passwordKey);
		String password = input.next();
		
		
		
		if("admin".equals(username) && "123".equals(password)){
			//处理动态文本(模式,真正要替换的值)
			String success = MessageFormat.format(infoSuccessKey, username);
			System.out.println(success);
		}else{
			System.out.println(infoErrorKey);
		}
			
		
	}

}


















info_en_US.properties

username=UserName
password=Password

input=please input

info.success=welcome to login QVOD,{0}
info.error=login fail


info_zh_CN.properties

username=\u7528\u6237\u540D
password=\u5BC6\u7801

input=\u8BF7\u8F93\u5165

info.success=\u6B22\u8FCE\u767B\u5F55\u5FEB\u64AD\uFF0C{0}
info.error=\u767B\u5F55\u5931\u8D25



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值