Locale类

要想实现国家化程序开发:首先需要解决的是不同国家用户的区域和语言编码问题,在java.util包里面提供有一个专门描述区域和语言编码的类,Local类,主要使用两个构造方法进行实例化:

  • 构造方法:public Locale(String language);
  • 构造方法:public Locale(String language, String country);
    【范例】实例化Locale类对象
import java.util.Locale;
public class JavaDemo {
	public static void main(String[] args) throws Exception{
		Locale loc = new Locale("zh","CN");
		System.out.println(loc);
	}
}

#zh_CN

此时需要的是国家和语言的代码。中文:zh_CN、美国:en_US.
要想自动获得当前的运行环境,可利用Locale类本身默认的方式进行实例化:

  • 读取本地默认环境:public static getDefault;
import java.util.Locale;
public class JavaDemo {
	public static void main(String[] args) throws Exception{
		Locale loc = Locale.getDefault();
		System.out.println(loc);
	}
}
#zh_CN

读取资源文件:ResourceBundle

读取资源文件主要依靠的是java.util.ResourceBundle类完成。定义:
public abstract class ResourceBundle extends Object;
ResourceBundle是一个抽象类,实例化需要使用其中一个static方法:

  • 获取Resource Bundle类对象:public static final ResourceBundle getBundle(String baseName);
    |- baseName:描述的是资源文件的名称,但是没有后缀
  • 根据key读取资源内容:public final String getString(String key);
import java.util.ResourceBundle;

public class JavaDemo {
	public static void main(String[] args) throws Exception{
		ResourceBundle resource = ResourceBundle.getBundle("message.Messages");
		String val = resource.getString("info");
		System.out.println(val);
	}
}
#欢迎访问!这是中文的

如果资源没有放在包里面,则直接编写资源名称即可。

实现国际化程序开发

  1. 建立Messages.properties文件:info=Welcome!欢迎欢迎
  2. 建立Messages_zh_CN.properties文件:info=欢迎访问!这是中文的
  3. 建立Messages_en_US.properties文件: info=Welcome!This is English~

java国际化jsp java国际化界面怎么开发_System

package demo;

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

public class JavaDemo {
	public static void main(String[] args) throws Exception{
		Locale loc = new Locale("en","US");
		ResourceBundle resource = ResourceBundle.getBundle("message.Messages",loc);
		String val = resource.getString("info");
		System.out.println(val);
	}
}
#Welcome!This is English~

如果不指定Locale,将默认为本地语言版本。
读取顺序:读取指定区域的资源文件>默认的本地资源文件>公共的资源(没有设置区域)。

不同的国家/地区与语言缩写代码


国家/地区

语言代码

国家地区

语言代码

简体中文(中国)

zh-cn

简体中文(台湾地区)

zh-tw

繁体中文(香港)

zh-hk

英语(香港)

en-hk

英语(美国)

en-us

英语(英国)

en-gb

英语(全球)

en-ww

英语(加拿大)

en-ca

英语(澳大利亚)

en-au

英语(爱尔兰)

en-ie

英语(芬兰)

en-fi

芬兰语(芬兰)

fi-fi

英语(丹麦)

en-dk

丹麦语(丹麦)

da-dk

英语(以色列)

en-il

希伯来语(以色列)

he-il

英语(南非)

en-za

英语(印度)

en-in

英语(挪威)

en-no

英语(新加坡)

en-sg

英语(新西兰)

en-nz

英语(印度尼西亚)

en-id

英语(菲律宾)

en-ph

英语(泰国)

en-th

英语(马来西亚)

en-my

英语(阿拉伯)

en-xa

韩文(韩国)

ko-kr

日语(日本)

ja-jp

荷兰语(荷兰)

nl-nl

荷兰语(比利时)

nl-be

葡萄牙语(葡萄牙)

pt-pt

葡萄牙语(巴西)

pt-br

法语(法国)

fr-fr

法语(卢森堡)

fr-lu

法语(瑞士)

fr-ch

法语(比利时)

fr-be

法语(加拿大)

fr-ca

西班牙语(拉丁美洲)

es-la

西班牙语(西班牙)

es-es

西班牙语(阿根廷)

es-ar

西班牙语(美国)

es-us

西班牙语(墨西哥)

es-mx

西班牙语(哥伦比亚)

es-co

西班牙语(波多黎各)

es-pr

德语(德国)

de-de

德语(奥地利)

de-at

德语(瑞士)

de-ch

俄语(俄罗斯)

ru-ru

意大利语(意大利)

it-it

希腊语(希腊)

el-gr

挪威语(挪威)

no-no

匈牙利语(匈牙利)

hu-hu

土耳其语(土耳其)

tr-tr

捷克语(捷克共和国)

cs-cz

斯洛文尼亚语

sl-sl

波兰语(波兰)

pl-pl

瑞典语(瑞典)

sv-se

西班牙语 (智利)

es-cl

消息格式化

【范例】修改资源文件

文件名

修改内容

【中文资源文件】message.Messages_zh_CN.properties

info=欢迎{0}的访问,当前日期是{1}!

【英文资源文件】message.Messages_en_US.properties

info=Welcome {0}, Date:{2}!

如有需要可修改{0} 和{1}的内容:

此时如果要进行资源读取则会将占位符的信息一起读取出来,所以此时需要利用MessageFormat类进行格式化处理。

java国际化jsp java国际化界面怎么开发_java国际化jsp_02


在MessageFormat类中提供有一个格式化文本的方法:public static String format(String patter,Obejct ...arguments); 【范例】格式化文本

package demo;

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

public class JavaDemo {
	public static void main(String[] args) throws Exception{
		Locale loc = new Locale("en","US");
		ResourceBundle resource = ResourceBundle.getBundle("message.Messages", loc);
		String val = resource.getString("info");
		System.out.println(MessageFormat.format(val, "Demon",new SimpleDateFormat("yyyy-MM-dd").format(new Date())));
	}
}
#Welcome Demon, Date:{2}!