zoukankan      html  css  js  c++  java
  • java开发中国际化

    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(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

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

    • LetterDate or Time ComponentPresentationExamples
      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() %>"/>

  • 相关阅读:
    FEniCS 1.1.0 发布,计算算术模型
    Piwik 1.10 发布,增加社交网站统计
    淘宝褚霸谈做技术的心态
    CyanogenMod 10.1 M1 发布
    Druid 发布 0.2.11 版本,数据库连接池
    GNU Gatekeeper 3.2 发布
    Phalcon 0.9.0 BETA版本发布,新增大量功能
    EUGene 2.6.1 发布,UML 模型操作工具
    CVSps 3.10 发布,CVS 资料库更改收集
    Opera 移动版将采用 WebKit 引擎
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/6691544.html
Copyright © 2011-2022 走看看