JavaWeb开发——软件国际化(动态元素国际化)

简介: JavaWeb开发——软件国际化(动态元素国际化)

软件国际化的第二个部分,就是动态元素国际化。

  • 数值,货币,时间,日期等数据由于可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理。Java 中提供了解决这些问题的 API 类(位于 java.util 包和 java.text 包中)。
  • Locale 类

Locale 实例对象代表一个特定的地理,政治、文化区域。
一个 Locale 对象本身不会验证它代表的语言和国家地区信息是否正确,只是向本地敏感的类提供国家地区信息,与国际化相关的格式化和解析任务由本地敏感的类去完成。(若JDK中的某个类在运行时需要根据 Locale 对象来调整其功能,这个类就称为本地敏感类)。

接下来介绍几个比较常用的API。

DateFormat类(国际化日期)

DateFormat 类可以将一个日期/时间对象格式化为表示某个国家地区的日期/时间字符串。

DateFormat 类除了可按国家地区格式化输出日期外,它还定义了一些用于描述日期/时间的显示模式的 int 型的常量,包括FULL, LONG, MEDIUM, DEFAULT, SHORT,实例化DateFormat对象时,可以使用这些常量,控制日期/时间的显示长度。

实例化DateFormat类有九种方式,以下三种为带参形式,下面列出的三种方式也可以分别不带参,或只带显示样式的参数。

  • getDateInstance(int style, Locale aLocale):以指定的日期显示模式和本地信息来获得DateFormat实例对象,该实例对象不处理时间值部分。
  • getTimeInstance(int style, Locale aLocale):以指定的时间显示模式和本地信息来获得DateFormat实例对象,该实例对象不处理日期值部分。
  • getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale):以单独指定的日期显示模式、时间显示模式和本地信息来获得DateFormat实例对象。

编写测试代码

    @Test
    public void demo1(){
        // 使用自带的样式格式化日期
        // 只要日期
        Date date = new Date();
        // 有四种显示模式 FULL、LONG、MEDIUM、SHORT
        // DateFormat df1 = DateFormat.getDateInstance(DateFormat.FULL);
        // DateFormat df1 = DateFormat.getDateInstance(DateFormat.LONG);
        // DateFormat df1 = DateFormat.getDateInstance(DateFormat.MEDIUM);
        DateFormat df1 = DateFormat.getDateInstance(DateFormat.SHORT);
        System.out.println(df1.format(date));

        // 只要时间
        DateFormat df2 = DateFormat.getTimeInstance(DateFormat.FULL);
        // DateFormat df2 = DateFormat.getTimeInstance(DateFormat.LONG);
        // DateFormat df2 = DateFormat.getTimeInstance(DateFormat.MEDIUM);
        // DateFormat df2 = DateFormat.getTimeInstance(DateFormat.SHORT);
        System.out.println(df2.format(date));
        
        //日期和时间都要
        DateFormat df3 = DateFormat.getDateTimeInstance();
        System.out.println(df3.format(date));
    }

运行结果我就不贴图了,大家自己运行感受。
都是一些对API的应用,没什么好说的,直接贴一些测试代码了解API的使用即可。

    @Test
    public void demo2(){
        //设置Locale
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL,Locale.CANADA);
        System.out.println(dateFormat.format(date));
    }

NumberFormat类(国际化数据)

  • 实例化NumberFormat类时,可以使用locale对象作为参数,也可以不使用,下面列出的是使用参数的。
  • getNumberInstance(Locale locale):以参数locale对象所标识的本地信息来获得具有多种用途的NumberFormat实例对象。
  • getIntegerInstance(Locale locale):以参数locale对象所标识的本地信息来获得处理整数的NumberFormat实例对象。
  • getCurrencyInstance(Locale locale):以参数locale对象所标识的本地信息来获得处理货币的NumberFormat实例对象。
  • getPercentInstance(Locale locale):以参数locale对象所标识的本地信息来获得处理百分比数值的NumberFormat实例对象。

编写测试代码

    @Test
    public void demo3() {
        // 保留小数有效位数
        double d = 1.23456789456789;
        // 保留两位小数
        NumberFormat format = NumberFormat.getNumberInstance();
        // 最大两位小数
        format.setMaximumFractionDigits(2);
        // 最小两位小数
        format.setMinimumFractionDigits(2);
        System.out.println(format.format(d));

        // 货币格式化
        int i = 100;
        // 显示美元
        NumberFormat format2 = NumberFormat.getCurrencyInstance(Locale.US);
        System.out.println(format2.format(i));

        // 百分比格式化
        double d2 = 0.78123;
        NumberFormat format3 = NumberFormat.getPercentInstance();
        System.out.println(format3.format(d2));

        // 想显示两位小数
        format3.setMaximumFractionDigits(2);
        format3.setMinimumFractionDigits(2);
        System.out.println(format3.format(d2));
    }

到这里,动态元素的国际化就介绍完了,都是一些需要记忆的知识点呐,其实没什么好说的,接下来就是软件国际化的最后一部分,动态文本国际化。

目录
相关文章
|
9月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
10月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
10月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
10月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
387 0
|
11月前
|
安全 Java 数据库
Java 项目实战病人挂号系统网站设计开发步骤及核心功能实现指南
本文介绍了基于Java的病人挂号系统网站的技术方案与应用实例,涵盖SSM与Spring Boot框架选型、数据库设计、功能模块划分及安全机制实现。系统支持患者在线注册、登录、挂号与预约,管理员可进行医院信息与排班管理。通过实际案例展示系统开发流程与核心代码实现,为Java Web医疗项目开发提供参考。
486 2
|
11月前
|
JavaScript 安全 前端开发
Java开发:最新技术驱动的病人挂号系统实操指南与全流程操作技巧汇总
本文介绍基于Spring Boot 3.x、Vue 3等最新技术构建现代化病人挂号系统,涵盖技术选型、核心功能实现与部署方案,助力开发者快速搭建高效、安全的医疗挂号平台。
478 3
|
11月前
|
移动开发 Cloud Native 安全
Java:跨平台之魂,企业级开发的磐石
Java:跨平台之魂,企业级开发的磐石
|
前端开发 Java 容器
Java国际化/本地化实战(下)
Java国际化/本地化实战(下)
446 0
|
搜索推荐 IDE Java
Java国际化/本地化实战(上)
Java国际化/本地化实战(上)
1601 0
Java国际化/本地化实战(上)