11.3 国际化程序(血干JAVA系列)

本文介绍了Java程序如何实现国际化,包括使用Locale类设置语言环境,通过ResourceBundle类加载不同语言的资源文件,以及利用MessageFormat进行动态文本格式化。同时涉及了Java的可变参数传递功能在方法中的应用。
摘要由CSDN通过智能技术生成

在这里插入图片描述

11.3.1国际化程序的实现思路

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

11.3.2 Locale 类

表11-3 Locale类的构造方法

11.3.3 ResourceBundle 类

在这里插入图片描述
在这里插入图片描述
如果要使用ResourceBundle对象,则直接通过ResourceBundle类中的静态方法getBundle()取得。下面通过一个范例简单介绍ResourceBundle类的使用。

【例11.13】通过ResourceBundle类取得资源文件中的内容

第一步:定义资源文件:Message.properties
在这里插入图片描述

在这里插入图片描述
第二步:

package jiaqi;

import java.util.ResourceBundle;

public class demo310_1 
{
	public static void main(String[] args) 
	{
		ResourceBundle rb = ResourceBundle.getBundle("Message");
		System.out.println(rb.getString("info"));		
	}
}

第三步
在这里插入图片描述

11.3.4 Java国际化程序实现

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

【例11.14】完成国际化的操作

package jiaqi;

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

public class demo310_1 
{
	public static void main(String[] args) 
	{
		//创建语言环境
		Locale zhloc = new Locale("zh","CN");
		Locale enloc = new Locale("en","US");
		Locale frloc = new Locale("fr","FR");
		
		//根据要求找资源文件
		ResourceBundle zh = ResourceBundle.getBundle("Message",zhloc);
		ResourceBundle en = ResourceBundle.getBundle("Message",enloc);
		ResourceBundle fr = ResourceBundle.getBundle("Message",frloc);
		
		System.out.println(zh.getString("info"));
		System.out.println(en.getString("info"));
		System.out.println(fr.getString("info"));
	}
}

从上面的程序中可以清楚地发现,根据Locale所指定的国家不同,读取的资源文件也不同,这样也就实现了国际化程序。

11.3.5处理动态文本

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第一步
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
第二步

【例11.1】使用MessageFormat格式化动态文本

package jiaqi;

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

public class demo310_1 
{
	public static void main(String[] args) 
	{
		//创建语言环境
		Locale zhloc = new Locale("zh","CN");
		Locale enloc = new Locale("en","US");
		Locale frloc = new Locale("fr","FR");
		
		//根据要求找资源文件
		ResourceBundle zh = ResourceBundle.getBundle("Message",zhloc);
		ResourceBundle en = ResourceBundle.getBundle("Message",enloc);
		ResourceBundle fr = ResourceBundle.getBundle("Message",frloc);
		
		//获取value
		String str1 = zh.getString("info");
		String str2 = en.getString("info");
		String str3 = fr.getString("info");
		
		
		
		System.out.println(MessageFormat.format(str1, "[杜艳贺1]"));
		System.out.println(MessageFormat.format(str2, "[duyanhe2]"));
		System.out.println(MessageFormat.format(str3, "[duyanhe3]"));
		
		
		
	}
}

第三步

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

附加(可变参数传递中可以接收多个对象)

Java新特性---- 可变参数传递中可以接收多个对象。

Object…args接受多参数

方法1

例如:测试参数传递

package jiaqi;

public class demo325_1 {

	public static void main(String[] args)
	{
		// TODO 自动生成的方法存根
		
		System.out.println("第一次:");
		fun("Lisi");
		System.out.println("第二次:");
		fun("Lisi","Wnagwu","zhailui");
		
	}
	
	public static void fun(Object...args) 
	{
		for(int i=0;i<args.length;i++)
		{
			System.out.println(args[i]);
		}
	}
}

方法2

实例:使用数组传递参数

package jiaqi;

public class demo325_1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		System.out.println("第一次:");
		Object args1[] = {"Lisi"};
		fun(args1);
		
		
		System.out.println("第二次:");
		Object args2[] = {"Lisi","wangeu"};
		fun(args2);
		
	}
	
	public static void fun(Object...args) 
	{
		for(int i=0;i<args.length;i++)
		{
			System.out.println(args[i]);
		}
	}
}

11.3.6使用类代替资源文件【略】

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿斯卡码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值