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

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

一:国际化

1.国际化的概念:一款软件希望不同的国家和地区的使用者都可以使用,这个时候软件中的一些内容和数据需要根据用户地区信息不同而展示成不同的样子。

 

2.国际化的组成部分:

(1)页面中固定文本元素的国际化
ResourceBundle 资源包
<fmt>

示例代码:框架截图:

java代码:

package com.dzq.i18n;import java.util.Locale;import java.util.ResourceBundle;public class ResourceBundleDemo {  public static void main(String[] args) {      //根据你的地区,调用不同资源文件      /**       * resourcebundle ,查找资源文件,首先找指定的,没有,就找操作系统的,还找不到就找默认的       */    ResourceBundle bundle= ResourceBundle.getBundle("resource",Locale.ENGLISH);//Locale.CHINA读取指定资源文件    String value=bundle.getString("username");    System.out.println(value);}}

配置文件:

username=usernamepassword=passwordsubmit=sunbmit
resource_en.properties
username=\u7528\u6237\u540Dpassword=\u5BC6\u7801submit=\u63D0\u4EA4
resource_zh.properties
username=defaultusernamepassword=defaultpasswordsubmit=defaultsunbmit
resource.properties

jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*"    pageEncoding="UTF-8"%><%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
Insert title here

java方式实现页面国际化


<% Locale local=request.getLocale(); ResourceBundle bundle=ResourceBundle.getBundle("resource",local); %>
<%=bundle.getString("username") %>
<%=bundle.getString("password") %>:
" />

fmt标签方式实现页面国际化


" />

效果截图:

(2)对程序动态产生的数据的国际化 -- 日期时间/货币

~1.日期时间DateFormat -- SimpleDateFormat

static DateFormat getDateInstance()
获取日期格式器,该格式器具有默认语言环境的默认格式化风格。
static DateFormat getDateInstance(int style)
获取日期格式器,该格式器具有默认语言环境的给定格式化风格。
static DateFormat getDateInstance(int style, Locale aLocale)
获取日期格式器,该格式器具有给定语言环境的给定格式化风格。

static DateFormat getTimeInstance()
获取时间格式器,该格式器具有默认语言环境的默认格式化风格。
static DateFormat getTimeInstance(int style)
获取时间格式器,该格式器具有默认语言环境的给定格式化风格。
static DateFormat getTimeInstance(int style, Locale aLocale)
获取时间格式器,该格式器具有给定语言环境的给定格式化风格。

static DateFormat getDateTimeInstance()
获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格。
static DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
获取日期/时间格式器,该格式器具有默认语言环境的给定日期和时间格式化风格。
static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)
获取日期/时间格式器,该格式器具有给定语言环境的给定格式化风格。

String format(Date date)

 示例代码:

package com.dzq.dateformat;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;import org.junit.Test;public class DateFormatDemo {       /**     * 将日期对象转换成字符串表示形式,此时根据地区语言环境不同,转成不同的字符串形式     */    @Test     public void test1(){         Date date=new Date();         DateFormat format = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.CHINA);         String datestr=format.format(date);         System.out.println(datestr);     }        /**     * 将字符串转换成日期     * @throws ParseException      */    @Test    public void test2() throws ParseException{        String datestr="2016年4月17日 星期日 上午09时31分40秒 CST";        DateFormat format=DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.CHINA);        Date date=format.parse(datestr);        System.out.println(date.toLocaleString());    }        @Test    public void test3() throws ParseException{        String datestr="09月~24日##2016年**21时%53分%59秒";        SimpleDateFormat format=new SimpleDateFormat("MM月~dd日##yyyy年**HH时%mm分%ss秒");        Date date=format.parse(datestr);        System.out.println(date.toLocaleString());    }        @Test    public void test4(){         Date date=new Date();         SimpleDateFormat format=new SimpleDateFormat("MM月~dd日##yyyy年**HH时%mm分%ss秒");         String datestr=format.format(date);         System.out.println(datestr);    }}

 

~2.货币

static NumberFormat getCurrencyInstance()
返回当前默认语言环境的货币格式。
static NumberFormat getCurrencyInstance(Locale inLocale)
返回指定语言环境的货币格式。

1000 -- > $1000.00 ¥1000.00

package com.dzq.numberformat;import java.text.NumberFormat;import java.text.ParseException;import java.util.Locale;import org.junit.Test;public class NumberFormatDemo {        /**     * 将数字表示成字符串,根据地区转换     */    @Test    public void test1(){        double money=10000.00;        NumberFormat format=NumberFormat.getCurrencyInstance(Locale.CHINA);        String moneystr=format.format(money);        System.out.println(moneystr);    }        @Test    public void test2() throws ParseException{        String moneystr="¥10,000.00";        NumberFormat format=NumberFormat.getCurrencyInstance(Locale.CHINA);        double money=format.parse(moneystr).doubleValue();        System.out.println(money);    }}

~3.消息国际化

示例代码:

package com.dzq.messageformat;import java.text.MessageFormat;import java.util.Calendar;import java.util.Date;import java.util.Locale;public class MSGFormatDemo {    //At 12:30 pm on jul 3,1998, a hurricance destroyed 99 houses and caused $1000000 of damage    //当一个语句中有多个和国际化相关的内容时,需要先切割字符串将和国际化相关的数据国际化后再拼接字符串.    public static void main(String[] args) {        String str = "At {0,time,full} on {1,date,full}, a hurricance destroyed {2,number} houses and caused {3,number,currency} of damage";        MessageFormat format = new MessageFormat(str,Locale.CHINA);                Calendar c = Calendar.getInstance();        c.set(1998, 6, 3, 12, 30, 0);        Date date = c.getTime();                str = format.format(new Object[]{date,date,99,1000000});        System.out.println(str);    }}

 

转载于:https://www.cnblogs.com/xiaoduc-org/p/5398663.html

你可能感兴趣的文章
day6-if,while,for的快速掌握
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>
Ajax使用进阶
查看>>
Jquery元素选取、常用方法
查看>>
C语言下的错误处理的问题
查看>>
Java中解析XML的方法
查看>>
条目六《当心C++编译器中最烦人的分析机制》
查看>>
servlet的简单定义
查看>>
laravel sql复杂语句,原生写法----连表分组
查看>>
webstorm中github的配置
查看>>
老妈-养生
查看>>
backbone实例todos分析(三)总结 (转)
查看>>
Eclipse add external jars导致运行出现java.lang.NoClassDefFoundError的解决方法
查看>>
如何察看SQL Server 数据库中各个表的空间占用情况
查看>>
现代软件工程 第一章 概论 第2题——韩婧
查看>>
MSSQL孤立用户的解决办法
查看>>
Threads in Spring
查看>>
【HDOJ】1073 Online Judge
查看>>
TCHAR2char、CString2TCHAR*、TCHAR*2CString
查看>>