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() %>"/>

  • 相关阅读:
    寒假日报day10
    寒假日报day9
    周计划06(20201026-20201101)
    周计划05(20201019-20201025)
    周总结2
    编程语言的实现模式读后感1
    软工总结
    哈夫曼编码算法
    hive表查询——排序
    假期总结4
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/6691544.html
Copyright © 2011-2022 走看看