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 = ;
//货币国际化
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(new Date());

        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

其中可以使用的格式如下:

  • Letter Date or Time Component Presentation Examples
    G Era designator Text AD
    y Year Year 1996; 96
    Y Week year Year 2009; 09
    M Month in year (context sensitive) Month July; Jul; 07
    L Month in year (standalone form) Month July; Jul; 07
    w Week in year Number 27
    W Week in month Number 2
    D Day in year Number 189
    d Day in month Number 10
    F Day of week in month Number 2
    E Day name in week Text Tuesday; Tue
    u Day number of week (1 = Monday, ..., 7 = Sunday) Number 1
    a Am/pm marker Text PM
    H Hour in day (0-23) Number 0
    k Hour in day (1-24) Number 24
    K Hour in am/pm (0-11) Number 0
    h Hour in am/pm (1-12) Number 12
    m Minute in hour Number 30
    s Second in minute Number 55
    S Millisecond Number 978
    z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
    Z Time zone RFC 822 time zone -0800
    X Time zone ISO 8601 time zone -08; -0800; -08:00

3 国际化标签

引入国际化标签:<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

主要的5个标签

//设置本地化对象,为浏览器请求的locale

<fmt:setLocale value="${pageContext.request.locale }"/>

//设置工具类

<fmt:setBundle basename="com.huitong.i18n.msg" var="bund"/>

//获取工具类中的数据,key 就是 properties 文件中的key

<fmt:message bundle="${bund }"  key="title" ></fmt:message>

<fmt:formatNumber pattern="0.00" value="100" ></fmt:formatNumber>

<fmt:formatDate pattern="yyyyMMdd" value="<%=new Date() %>"/>

java开发中国际化的更多相关文章

  1. paip.java 开发中web server的选择jboss resin tomcat比较..

    paip.java 开发中web server的选择jboss resin tomcat比较.. 作者Attilax  艾龙, EMAIL:1466519819@qq.com 来源:attilax的专 ...

  2. Java开发中常见的危险信号(中)

    本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/common-red-flags-in-java-1 Dustin Ma ...

  3. Java开发中文件读取方式总结

    JAVA开发中,免不了要读文件操作,读取文件,首先就需要获取文件的路径. 路径分为绝对路径和相对路径. 在文件系统中,绝对路径都是以盘符开始的,例如C:\abc\1.txt. 什么是相对路径呢?相对路 ...

  4. java开发中遇到的问题及解决方法(持续更新)

    摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...

  5. Java开发中常见的危险信号(上)

    本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/common-red-flags-in-java-1 Dustin Ma ...

  6. 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)

    编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...

  7. 完整java开发中JDBC连接数据库代码和步骤[申明:来源于网络]

    完整java开发中JDBC连接数据库代码和步骤[申明:来源于网络] 地址:http://blog.csdn.net/qq_35101189/article/details/53729720?ref=m ...

  8. Java 开发中的对象拷贝

    前言 在 Java 开发中,很多时候需要将两个属性基本相同的对象进行属性复制,比如 DO 转 VO等等. 本文主要介绍自己实现的简易拷贝工具类与 Spring 提供的属性拷贝的对比. Spring 提 ...

  9. [ 转载 ] Java开发中的23种设计模式详解(转)

    Java开发中的23种设计模式详解(转)   设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类 ...

随机推荐

  1. 使用JS在客户端判断当前网络状态

    1. navigator.onLine 2. ajax请求 3. 获取网络资源 1. navigator.onLine 通过navigator.onLine判断当前网络状态: 12345 if(nav ...

  2. Rob Pike 的 5 个编程原则

    原则 1. 你没有办法预测每个程序的运行时间,瓶颈会出现在出乎意料的地方,所以在分析瓶颈原因之前,先不要盲目猜测. 原则 2. 测试(measure).在测试之前不要优化程序,即使在测试之后也要慎重, ...

  3. android 广告平台 keymob

    访问地址: http://www.keymob.com/

  4. [转载] 无所不能的“蚂蚁”--Ant

    说他无所不能,好像有点夸张,但是用过Ant之后,感觉真的是只有想不到没有作不到.Ant,原作者选择他作为软件名字的意思是指"令一个简洁的工具"(Another Neat Tool) ...

  5. 使用OllyDbg破解软件

    好,废话不多说,教程开始.  我们首先查壳,是Aspark的壳,对于这个壳,大家应该很熟了.<ignore_js_op>   我已经脱好了壳,再查一下壳,是Dephi的<ignore ...

  6. web.xml加载顺序 [转载]

    一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Ser ...

  7. jquery hide和show方法

    html 元素的显示和隐藏hide() 如果被选的元素已被显示,则隐藏该元素. show() 如果被选的元素已被隐藏,则显示该元素. <html> <head> <scr ...

  8. FFmpeg的使用——PHP转换视频、截取视频以及JW Player播放器控制

    转载:http://blog.csdn.net/zm2714/article/details/7916440 给朋友做的一个项目中,涉及到上传视频.转换视频.自动截取已上传视频内容中的一帧做为缩略图片 ...

  9. cocob优化算法

    cocob算法是一个启发式的算法,针对SGD不需要设置learning rate. https://github.com/bremen79/cocob

  10. 【Android UI】使用RelativeLayout与TableLayout实现登录界面

    使用RelativeLayout与TableLayout分别实现两种登录界面,学习RelativeLayout布局 中如何对齐与调整组件相对位置,使用TableLayout实现登录界面,学习如何设置列 ...