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

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

更多免费技术资料可关注:annalin1203

Original: https://www.cnblogs.com/zhuxiaopijingjing/p/12985816.html
Author: 幽暗森林之猪大屁
Title: JavaWeb开发——软件国际化(动态元素国际化)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/537897/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Maven:新建自定义的依赖并发布到本地仓库

    在项目中,有些代码需要被各个模块调用。为了解耦,可以把这些公共部分的代码整合到一个子项目中,并发布到本地,实现多个项目共享代码。 遇到的问题: Java类文件左下角出现J标志,说明…

    Java 2023年6月6日
    074
  • JAVA8新特性–集合流操作Stream

    Stream类全路径为:java.util.stream.Stream对Stream的描述,引用其他文章中觉得比较好的介绍: Java 8 中的 Stream 是对集合(Colle…

    Java 2023年5月29日
    073
  • 索引

    一种数据结构,帮助我们快速的定位元素 主键索引 唯一索引 普通索引 联合索引(最左匹配原则) 对某字段进行范围会使索引失效 全文索引 如何让性能优秀 减少I/O次数 避免回旋 根据…

    Java 2023年6月14日
    082
  • Oracle 11g UNDO 管理 详解

    从Oracle 11g 开始,使用默认安装时,Oracle 会自动管理UNDO,之前也整理过几篇有关UNDO的文章,如下: Oracle undo 表空间管理 整理的都比较散,所以…

    Java 2023年5月30日
    084
  • Ribbon

    Spring Cloud Ribbon是基于Netflix Ribbon实现的一套 客户端 负载均&#x8…

    Java 2023年6月8日
    080
  • java.net.ConnectException: Connect to XXXhost:XXXport failed: 拒绝连接 (Connection refused)

    公司内部的优付系统通过http调用外部服务商系统的API。上周五夜间,服务端系统发版期间,客户端在通过http调用服务端接口时出现一堆 “拒绝连接 (Connectio…

    Java 2023年5月29日
    085
  • SpringCloud微服务实战——搭建企业级开发框架(三十九):使用Redis分布式锁(Redisson)+自定义注解+AOP实现微服务重复请求控制

    通常我们可以在前端通过防抖和节流来解决短时间内请求重复提交的问题,如果因网络问题、Nginx重试机制、微服务Feign重试机制或者用户故意绕过前端防抖和节流设置,直接频繁发起请求,…

    Java 2023年6月9日
    091
  • 【WPF】WPF TreeView 右对齐

    StretchTreeViewItemStyle: <Style x:Key="TreeViewItemFocusVisual">Style>…

    Java 2023年5月29日
    076
  • break、continue、return中选择一个,我们结束掉它

    在平时的开发过程中,经常会用到循环,在写循环的过程中会有很多判断条件及逻辑,你知道如何结束一个循环吗?在java中有break、continue、reture三个关键字都可以结束循…

    Java 2023年6月9日
    082
  • 高并发场景案例分享(二)count实时查询之坑

    上一篇主要从设计层面,分享了一些小经验。 因软件系统有其复杂性和多样性,不同的场景、架构下,系统的瓶颈各不相同。 文章里的一些想法和设计并不通用,主要针对的是 高并发场景下海量数据…

    Java 2023年6月5日
    0111
  • idea种jsp使用

    1.模板设置 打开file找到熟悉的settings 里面的$符号是idea的语法,可以自己配置 其他页面的配置也可以在这里配置 2.没有自动补全 解决方法,可以在 一开始可以看到…

    Java 2023年6月5日
    083
  • 一文了解Docker基本概念

    一、何为Docker Docker 是一个用于开发、交付和运行应用程序的开放平台,Docker 使您能够将应用程序与基础环境分开,以便您可以快速交付软件。借用百度百科的话来说,Do…

    Java 2023年6月16日
    091
  • AQS源码三视-JUC系列

    AQS源码三视-JUC系列 前两篇文章介绍了AQS的核心同步机制,使用CHL同步队列实现线程等待和唤醒,一个int值记录资源量。为上层各式各样的同步器实现画好了模版,像已经介绍到的…

    Java 2023年6月13日
    095
  • 面向对象的JAVA

    一个类的结构: 属性==成员变量==field==域、字段 方法==成员方法==函数 类和对象的关系:类是一个统属概念,对象是独立的个体 public class ClassTes…

    Java 2023年6月15日
    068
  • SSM(Spring,SpringMVC,Mybatis)框架整合项目

    快速上手SSM(Spring,SpringMVC,Mybatis)框架整合项目 环境要求: IDEA MySQL 8.0.25 Tomcat 9 Maven 3.6 数据库环境:创…

    Java 2023年6月15日
    0115
  • windows 2003 不同网段 无法 文件共享 VSS设置

    网上搜索了很多解答,比如设置VPN, 修改ETC表, 自己也设置了VPN,确实可以,设置的过程需要关闭WINDOWS自带的防火墙,让我觉得不太习惯。 就研究了下防火墙的例外项 点击…

    Java 2023年6月14日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球