博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
国际化
阅读量:5009 次
发布时间:2019-06-12

本文共 4932 字,大约阅读时间需要 16 分钟。

一:介绍

1.国际化

  

 

2.特征

  

 

3.解决方案

  

 

二:Locale类

1.介绍

  

 

2.示例程序

1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 2     pageEncoding="ISO-8859-1"%> 3  4  5  6 
7 Insert title here 8 9 10 <%=request.getLocale() %>11 12

 

3.效果

  运行后的结果:

  

 

4.测试类

1 package com.caojun.i18n; 2  3 import static org.junit.Assert.*; 4 import java.util.Locale; 5 import org.junit.Test; 6  7 public class I18nTest { 8  9     @Test10     public void testLocale() {11         Locale locale=Locale.CHINA;12         System.out.println(locale.getLanguage());13         System.out.println(locale.getDisplayCountry());14     }15 16 }

 

5.效果

  

 

三:DateFormat类

1.介绍

  

  

 

2.测试

/**

* 日期转为对应国家的日期字符串
*/

1 @Test 2     public void testDateformat() { 3         Date date=new Date(); 4         System.out.println(date); 5          6         //创建DateFormat对象 7         Locale locale=Locale.CHINA; 8         DateFormat dateformat=DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, locale);   //dateStyle=medium 9         String str=dateformat.format(date);10         System.out.println(str);11         12         dateformat=DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.MEDIUM, locale);      //dateStyle=full13         str=dateformat.format(date);14         System.out.println(str);15     }

 

3.效果

  

 

4.测试

/**

* 日期字符串转为date类型
* @throws Exception
*/

1 @Test2     public void testDateformat2() throws Exception {3         String str="1990-12-12 12:12:12";4         DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");5         Date date=dateFormat.parse(str);6         System.out.println(date);7     }

 

5.效果

  

 

四:NumberFormat类

1.介绍

  

 

2.测试

  getNumberInstance:格式化为数字的字符串

  getCurrencyInstance:格式化为货币的字符串

1 /** 2      * 转为对应国家的字符串 3      */ 4     @Test 5     public void testNumberformat() { 6         double d=123243223.23d; 7         Locale locale=Locale.US; 8         //转为对应的字符串 9         NumberFormat numberFormat=NumberFormat.getNumberInstance(locale);10         String str=numberFormat.format(d);11         System.out.println(str);12         //货币13         numberFormat=NumberFormat.getCurrencyInstance(locale);14         str=numberFormat.format(d);15         System.out.println(str);16         17     }

 

3.效果

  

 

4.测试

1 /** 2      * 转为对应的数字 3      * @throws ParseException  4      */ 5     @Test 6     public void testNumberformat2() throws ParseException { 7         String str="123,223.23"; 8         Locale locale=Locale.US; 9         NumberFormat numberFormat=NumberFormat.getNumberInstance(locale);10         double d=(double) numberFormat.parse(str);11         System.out.println(d);12         13         str="$123,223.23";14         numberFormat=NumberFormat.getCurrencyInstance(locale);15         d=(double) numberFormat.parse(str);16         System.out.println(d);17     }

 

5.效果

  

 

五:MessageFormat类

1.介绍

  

  模式字符串:

  

 

2.测试

1 /** 2      * messaheFormat的格式化模式字符串 3      */ 4     @Test 5     public void testMessageformat() { 6         String str="Date:{0},salary:{1}"; 7         Locale locale=Locale.CHINA; 8         Date date=new Date(); 9         double sa1=1234.12;10         11         DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.MEDIUM, locale);12         String datestr=dateFormat.format(date);13         NumberFormat numberFormat=NumberFormat.getCurrencyInstance(locale);14         String salstr=numberFormat.format(sa1);15         16         String result=MessageFormat.format(str,datestr,salstr);17         System.out.println(result);18     }

 

3.效果

  

 

六:ResourceBundle类

1.介绍

  

  

  

  

 

2.项目目录

  

 

3.i8n.properties

  

 

4.i8n_en_US.properties

  

 

5.i8n_zh_CN.properties

  

 

6.测试程序

1 @Test 2     public void testResourceBundle() { 3         Locale locale=Locale.CHINA; 4         ResourceBundle resourcebundle=ResourceBundle.getBundle("i8n", locale); 5         System.out.println(resourcebundle.getString("salary")); 6         System.out.println(resourcebundle.getString("date")); 7          8         String dateLabel=resourcebundle.getString("date"); 9         String salaryLabel=resourcebundle.getString("salary");10         String str="{0}:{1},{2}:{3}";11         12         Date date=new Date();13         double sal=123.43;14         15         DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.MEDIUM, locale);16         String dateStr=dateFormat.format(date);17         18         NumberFormat numberFormat=NumberFormat.getCurrencyInstance(locale);19         String salStr=numberFormat.format(sal);20         21         String result=MessageFormat.format(str, dateLabel,dateStr,salaryLabel,salStr);22         System.out.println(result);23     }

 

7.效果

  

 

8.程序中注意点

  在类路径下需要有对应的资源文件:basenName.properties,其中baseName是基名

  可以使用基名_语言代码_国家代码.properties 来添加不同国家或者地区的资源文件

  所有的资源文件的key必须相同

  可以调用ResourceBundle类的方法获取对象

  可以使用native2ascii命令得到汉字对应的ascii码,也可以是使用eclipse内置的工具

 

七:国际化格式标签

1.fmt

  使用标签fmt进行web前端的国际化开发。

  需要导入el的lib包。

 

转载于:https://www.cnblogs.com/juncaoit/p/7821334.html

你可能感兴趣的文章
SimpleDataFormat将string类型变成data型数据
查看>>
Data Flow ->> Multicast
查看>>
虚拟机类加载机制(1)——类加载时机
查看>>
iOS中Block的基础用法
查看>>
mac 终端 使用ftp命令
查看>>
22-reverseString-Leetcode
查看>>
Centos 开机自动联网
查看>>
cocos2dx使用lua和protobuf
查看>>
使用Spring配合Junit进行单元测试的总结
查看>>
HDOJ 5630 Rikka with Chess
查看>>
netcore2.1 在后台运行一个任务
查看>>
PostgreSQL pg_hba.conf 文件简析
查看>>
android o logcat read: unexpected EOF!
查看>>
[Scrum]2010/12/28 —— 第一天!
查看>>
ASP.NET MVC模式 温习(一)排除MVC模式误区
查看>>
Mysql的read_only 只读属性说明 (运维笔记)
查看>>
DOCKER 从入门到放弃(五)
查看>>
Python 多线程学习
查看>>
appcan官方ajax
查看>>
获取NVIDIA显卡的温度
查看>>