Java常用类库--国际化程序

国际化程序:

国际化的操作就是指一个程序可以同时适应多门语言,即:如果现在程序的使用者是中国人,则会以中文为显示文字,如果现在程序的使用者是英国人,则会以英语为显示的文字,也就是说可以通过国际化操作,让一个程序适应各个国家的语言要求。那么,对于各个国家来说,每一个程序的代码是不会有任何变化的,但是只是其显示文字上有所差别。
国际化程序实现的思路:程序与显示相分离,根据不同的Locale指定的区域找到不同的资源文件并根据其key取得对应的value。



1、Locale类


2、ResourceBundle类


import java.util.ResourceBundle ;
public class InterDemo01{
	public static void main(String args[]){
		ResourceBundle rb = ResourceBundle.getBundle("Message") ;	// 找到资源文件,不用编写后缀
		System.out.println("内容:" + rb.getString("info")) ;		// 从资源文件中取得内容
	}
};

3、Java国际化程序的实现


import java.util.ResourceBundle ;
import java.util.Locale ;
public class InterDemo02{
	public static void main(String args[]){
		Locale zhLoc = new Locale("zh","CN") ;		// 表示中国地区
		Locale enLoc = new Locale("en","US") ;		// 表示美国地区
		Locale frLoc = new Locale("fr","FR") ;		// 表示法国地区
		// 找到中文的属性文件,需要指定中文的Locale对象
		ResourceBundle zhrb = ResourceBundle.getBundle("Message",zhLoc) ;
		// 找到英文的属性文件,需要指定英文的Locale对象
		ResourceBundle enrb = ResourceBundle.getBundle("Message",enLoc) ;
		// 找到法文的属性文件,需要指定法文的Locale对象
		ResourceBundle frrb = ResourceBundle.getBundle("Message",frLoc) ;
		// 依次读取各个属性文件的内容,通过键值读取,此时的键值名称统一为info
		System.out.println("中文:" + zhrb.getString("info")) ;
		System.out.println("英语:" + enrb.getString("info")) ;
		System.out.println("法语:" + frrb.getString("info")) ;
	}
};



4、处理动态文本


import java.util.ResourceBundle ;
import java.util.Locale ;
import java.text.* ;
public class InterDemo03{
	public static void main(String args[]){
		Locale zhLoc = new Locale("zh","CN") ;		// 表示中国地区
		Locale enLoc = new Locale("en","US") ;		// 表示美国地区
		Locale frLoc = new Locale("fr","FR") ;		// 表示法国地区
		// 找到中文的属性文件,需要指定中文的Locale对象
		ResourceBundle zhrb = ResourceBundle.getBundle("Message",zhLoc) ;
		// 找到英文的属性文件,需要指定英文的Locale对象
		ResourceBundle enrb = ResourceBundle.getBundle("Message",enLoc) ;
		// 找到法文的属性文件,需要指定法文的Locale对象
		ResourceBundle frrb = ResourceBundle.getBundle("Message",frLoc) ;
		// 依次读取各个属性文件的内容,通过键值读取,此时的键值名称统一为info
		String str1 = zhrb.getString("info") ;
		String str2 = enrb.getString("info") ;
		String str3 = frrb.getString("info") ;
		System.out.println("中文:" + MessageFormat.format(str1,"李兴华")) ;
		System.out.println("英语:" + MessageFormat.format(str2,"LiXingHua")) ;
		System.out.println("法语:" + MessageFormat.format(str3,"LiXingHua")) ;
	}
};

5、可变参数

public class InterDemo04{
	public static void main(String args[]){
		System.out.print("第一次运行:") ;
		fun("LXH","Li","李兴华") ;	// 传入三个参数
		System.out.print("\n第二次运行:") ;
		fun("MLDN") ;				// 传入一个参数
	}
	public static void fun(Object...args){	// 固定语法,输入任意多个数据,使用数组表示
		for(int i=0;i<args.length;i++){
			System.out.print(args[i] + "、") ;
		}
	}
};
数组的形式:
public class InterDemo05{
	public static void main(String args[]){
		System.out.print("第一次运行:") ;
		Object[] arg1 = {"LXH","Li","李兴华"} ;
		fun(arg1) ;	// 传入三个参数
		System.out.print("\n第二次运行:") ;
		Object[] arg2 = {"MLDN"} ;
		fun(arg2) ;				// 传入一个参数
		System.out.print("\n第三次运行:") ;
		Object[] arg3 = {} ;		// 没有参数传入
		fun(arg3) ;
	}
	public static void fun(Object...args){	// 固定语法,输入任意多个数据,使用数组表示
		for(int i=0;i<args.length;i++){
			System.out.print(args[i] + "、") ;
		}
	}
};

6、使用一个类代替资源文件ListResourceBundle



读取资源类:
import java.util.ResourceBundle ;
import java.util.Locale ;
import java.text.* ;
public class InterDemo06{
	public static void main(String args[]){
		Locale zhLoc = new Locale("zh","CN") ;		// 表示中国地区
		// 找到中文的属性文件,需要指定中文的Locale对象
		ResourceBundle zhrb = ResourceBundle.getBundle("Message",zhLoc) ;
		String str1 = zhrb.getString("info") ;
		System.out.println("中文:" + MessageFormat.format(str1,"李兴华")) ;
	}
};







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值