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

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

目录
相关文章
|
10天前
|
Java API Maven
如何使用Java开发抖音API接口?
在数字化时代,社交媒体平台如抖音成为生活的重要部分。本文详细介绍了如何用Java开发抖音API接口,从创建开发者账号、申请API权限、准备开发环境,到编写代码、测试运行及注意事项,全面覆盖了整个开发流程。
53 10
|
17天前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
35 4
|
18天前
|
缓存 监控 Java
如何运用JAVA开发API接口?
本文详细介绍了如何使用Java开发API接口,涵盖创建、实现、测试和部署接口的关键步骤。同时,讨论了接口的安全性设计和设计原则,帮助开发者构建高效、安全、易于维护的API接口。
48 4
|
23天前
|
SQL Java 程序员
倍增 Java 程序员的开发效率
应用计算困境:Java 作为主流开发语言,在数据处理方面存在复杂度高的问题,而 SQL 虽然简洁但受限于数据库架构。SPL(Structured Process Language)是一种纯 Java 开发的数据处理语言,结合了 Java 的架构灵活性和 SQL 的简洁性。SPL 提供简洁的语法、完善的计算能力、高效的 IDE、大数据支持、与 Java 应用无缝集成以及开放性和热切换特性,能够大幅提升开发效率和性能。
|
24天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
45 2
|
18天前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
31 0
WK
|
23天前
|
开发框架 移动开发 Java
C++和Java哪个更适合开发移动应用
本文对比了C++和Java在移动应用开发中的优劣,从市场需求、学习难度、开发效率、跨平台性和应用领域等方面进行了详细分析。Java在Android开发中占据优势,而C++则适合对性能要求较高的场景。选择应根据具体需求和个人偏好综合考虑。
WK
42 0
|
设计模式 Oracle Java
Java进阶专题(三) 软件架构设计原则(下)
今天开始我们专题的第二课了,本章节继续分享软件架构设计原则的下篇,将介绍:接口隔离原则、迪米特原则、里氏替换原则和合成复用原则。本章节参考资料书籍《Spring 5核心原理》中的第一篇 Spring 内功心法(没有电子档,都是我取其精华并结合自己的理解,一个字一个字手敲出来的)。
182 0
|
Java Go 数据安全/隐私保护
Java进阶专题(二) 软件架构设计原则(上)
今天开始我们专题的第一课了,也是我开始进阶学习的第一天,我们先从经典设计思想开始,看看大牛市如何写代码的,提升技术审美、提高核心竞争力。本章节参考资料书籍《Spring 5核心原理》中的第一篇 Spring 内功心法(没有电子档,都是我取其精华并结合自己的理解,一个字一个字手敲出来的)
5384 0
|
Java 关系型数据库 Go
Java进阶专题(二) 软件架构设计原则(上)
今天开始我们专题的第一课了,也是我开始进阶学习的第一天,我们先从经典设计思想开始,看看大牛市如何写代码的,提升技术审美、提高核心竞争力。本章节参考资料书籍《Spring 5核心原理》中的第一篇 Spring 内功心法(没有电子档,都是我取其精华并结合自己的理解,一个字一个字手敲出来的)。
310 0
下一篇
无影云桌面