1 静态文本的国际化,就是比如页面中中文显示用户名就是用户名,用于显示就是 username。
其中静态文件命名遵循:基础名_语言简称_国家简称.properties
需要使用的类是
1)import java.util.Locale; //本地化
2)import java.util.ResourceBundle; //资源加载
对于如何查找语言简称、国家简称可以通过internate选项找到语言。如下图所示
例子如下:
新建两个properties文件存储对应的要国际化的值
msg_zh_CN.properties 文件内容如下
msg_en_US.properties 文件内容如下
测试代码如下
String baseName = "com.huitong.test.bundle.msg";
ResourceBundle bundle=ResourceBundle.getBundle(baseName, Locale.CHINA);
System.out.println(bundle.getString("username"));
2 动态内容的国际化:主要包含数字国际化、货币国际化、日期国际化
主要的类对象是:NumberFormat、SimpleDateFormat
2.1 货币国际化,代码如下
2.1.1)将数字货币格式化成字符串
Locale locale =Locale.CHINA;double number = 200;//货币国际化
NumberFormat currencyInstance =NumberFormat.getCurrencyInstance(locale);
String result=currencyInstance.format(number );
System.out.println(result);
2.1.2)将字符串格式化成数字,代码如下
Locale locale =Locale.CHINA;String strNumber= "¥200.00";//货币国际化
NumberFormat currencyInstance =NumberFormat.getCurrencyInstance(locale);
Number result;//String result = currencyInstance.format(dnumber );
try{
result=currencyInstance.parse(strNumber);
System.out.println(result.doubleValue());
}catch(ParseException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
2.2 数字国际化
将数字货币格式化成字符串
2.2.1)数字格式化成字符串
Locale locale =Locale.CHINA;//数字国际化
NumberFormat numberInstance =NumberFormat.getNumberInstance(locale);double num=2000000.15;
String strnum=numberInstance.format(num);
System.out.println(strnum);
结果:2,000,000.15
2.2.2)将字符串格式化成数字
Locale locale =Locale.CHINA;//数字国际化
NumberFormat numberInstance =NumberFormat.getNumberInstance(locale);//double num=2000000.15;
String strnum = "2,000,000.15";try{
Number result=numberInstance.parse(strnum);
System.out.println(result.doubleValue());
}catch(ParseException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
结果:2000000.15
2.3 日期国际化有两种方法可以做
2.3.1)使用DateFormat,产生的格式是固定的,有DateFormat.FULL, DateFormat.LONG, DateFormat.MEDIUM, DateFormat.SHORT
int dateStyle =DateFormat.MEDIUM;int timeStyle =DateFormat.FULL;
Locale aLocale=Locale.CHINA;
DateFormat dateTimeInstance=DateFormat.getDateTimeInstance(dateStyle , timeStyle , aLocale );
String result= dateTimeInstance.format(newDate());
System.out.println(result);
结果:2017-4-11 上午08时51分28秒 CST
2.3.2)使用SimpleDateFormat 进行格式化,可以产生指定格式的形式,比较有自主性
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(simpleDateFormat.format(new Date()));
结果:2017-04-11 08:55:20
其中可以使用的格式如下:
LetterDate or Time ComponentPresentationExamples
G
Era designator
AD
y
Year
1996; 96
Y
Week year
2009; 09
M
Month in year (context sensitive)
July; Jul; 07
L
Month in year (standalone form)
July; Jul; 07
w
Week in year
27
W
Week in month
2
D
Day in year
189
d
Day in month
10
F
Day of week in month
2
E
Day name in week
Tuesday; Tue
u
Day number of week (1 = Monday, ..., 7 = Sunday)
1
a
Am/pm marker
PM
H
Hour in day (0-23)
0
k
Hour in day (1-24)
24
K
Hour in am/pm (0-11)
0
h
Hour in am/pm (1-12)
12
m
Minute in hour
30
s
Second in minute
55
S
Millisecond
978
z
Time zone
Pacific Standard Time; PST; GMT-08:00
X
Time zone
-08; -0800; -08:00
3 国际化标签
引入国际化标签:
主要的5个标签
//设置本地化对象,为浏览器请求的locale
//设置工具类
//获取工具类中的数据,key 就是 properties 文件中的key