一:国际化
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=username
password=password
submit=sunbmit

resource_en.properties

username=\u7528\u6237\u540D
password=\u5BC6\u7801
submit=\u63D0\u4EA4

resource_zh.properties

username=defaultusername
password=defaultpassword
submit=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" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head> <body>
<h1>java方式实现页面国际化</h1><hr>
<%
Locale local=request.getLocale();
ResourceBundle bundle=ResourceBundle.getBundle("resource",local);
%>
<form action="#">
<%=bundle.getString("username") %><input type="text" />
<%=bundle.getString("password") %>:<input type="text" />
<input type="submit" value="<%=bundle.getString("submit") %>" />
</form> <h1>fmt标签方式实现页面国际化</h1><hr>
<fmt:setBundle basename="resource" var="bundle" scope="page"/>
<form action="#">
<fmt:message bundle="${bundle }" key="username"/><input type="text" />
<fmt:message bundle="${bundle }" key="password"/><input type="text" />
<input type="submit" value="<fmt:message bundle="${bundle }" key="submit"/>" />
</form>
</body>
</html>

效果截图:

(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);
}
}

20160416--javaweb之国际化的更多相关文章

  1. Javaweb之国际化

    Javaweb之国际化 一.前言 软件的本地化:一个软件在某个国家或地区使用时,采用该国家或地区的语言,数字,货币,日期等习惯. 软件的国际化:软件开发时,让它能支持多个国家和地区的本地化应用.使得应 ...

  2. 深入分析JavaWeb Item22 -- 国际化(i18n)

    一.国际化开发概述 软件的国际化:软件开发时,要使它能同一时候应对世界不同地区和国家的訪问,并针对不同地区和国家的訪问.提供对应的.符合来訪者阅读习惯的页面或数据. 国际化(international ...

  3. JavaWeb的国际化

    国际化 1.国际化开发概述 1.1.软件的国际化 软件开发时,要使它能同时应对世界不同地区和国家的方法,并针对不同地区和国家的方法,提供相应的,符合来访者阅读习惯的页面或数据 国际化简称:i18n : ...

  4. JavaWEB开发国际化

    1.国际化开发概述 )软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. )国际化又称为 i18n:inter ...

  5. JavaWeb的国际化(17/4/8)

      国际化的缺点: 因为文字不同,所以带来的排版问题一样严重,通常都是重新在写一个网站反而更加清晰,快捷 1:需要从浏览器中获取到浏览器语言(Accept-Language) 2:利用locale获取 ...

  6. javaweb学习总结(三十一)——国际化(i18n)

    一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...

  7. JavaWeb之多语言国际化

    这周打算把国际化.JDBC和XML学习一下,从下周就开始学习三大框架,再坚持一个半月吧就能入门JavaWeb了,上周周末两天过的真是生不如死,两天坐在家里,醒来就写博客,原本在公司也自己操作了一遍,其 ...

  8. JavaWeb 后端 <十三> 之 监听器 JSTL国际化

    1. 监听器 1.1   概述 监听器: 主要是用来监听特定对象的创建或销毁.属性的变化的! 是一个实现特定接口的普通java类! 对象: 自己创建自己用 (不用监听) 别人创建自己用 (需要监听) ...

  9. Javaweb学习笔记——(二十)——————Javaweb监听器、国际化

    Javaweb监听器     三大组件         *Servlet         *Listener         *Filter Listener:监听器         1.初次相见:A ...

  10. 超全面的JavaWeb笔记day20<监听器&国际化>

    JavaWeb监听器 三大组件: l Servlet l Listener l Filter Listener:监听器 1. 初次相见:AWT 2. 二次相见:SAX 监听器: l 它是一个接口,内容 ...

随机推荐

  1. Linux下的iwpriv(iwlist、iwconfig)的简单应用

    无线网络飞速发展的今天,许多设备都提供了连接无线网络的功能. 那么Linux下的wifi到底该怎么配置.连接呢?? 开始配置之前,我们要说说iw家族.iw是linux下常用的wifi配置工具,网上有相 ...

  2. HDU 1061

    #include<stdio.h> #include<string.h> int a[10]; int main() { int T,n,i,k,temp,b,t; scanf ...

  3. asp.net的运行内幕

    每当浏览器向IIS发送一个页面请求的时候,相应的网页就会被编译成DLL文件,然后由JIT来运行这个DLL文件,最后将运行结果发送给客户端.一旦网页发送了变化,下次再请求页面的话,网页又会被重新被编译成 ...

  4. 【HTML】Beginner9:Form

    1.Form     Collect data inputted by a user.     Used as an interface for a web application,or send d ...

  5. (转载)JDK中的设计模式

    写的很好,学习道路更轻松一些 原文地址:http://blog.csdn.net/gtuu0123/article/details/6114197 JDK中设计模式 分类: Java相关 设计模式 2 ...

  6. 为Vell001家族使用过的图标

    vell001小海报 最早设计的Vell001图标,根据我偶像Vettel的个人主页上的图片修改而成 由于本人很喜欢jobs,苹果的logo一直是我的最爱 上两个图标已在多个地方使用了,但个人感觉气氛 ...

  7. allegro

    ALLEGRO5的渲染部分低层使用了opengl或d3d加速.

  8. [二]java运行原理

    public class HelloWorld{ public static void main(String args[]){ System.out.println("hello" ...

  9. elasticsearch安装过程中的license问题解决办法

    1.git clone git://github.com/mobz/elasticsearch-head.git 2.cd elasticsearch-head 3.npm install 出现下来问 ...

  10. 理解C++中函数的返回

    连续几年的C++程序设计课教学中,学生中总有人要求为他们单独解释函数的返回(return)究竟是什么意思.各种书中都会详讲返回值的问题,而学生们掌握的难点却是在返回至何处执行.本文试图通过对一般函数及 ...