国际化程序
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]);
}
}
}