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

数值,货币,时间,日期等数据由于可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理。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));

}

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

java国际化软件_JavaWeb开发——软件国际化(动态元素国际化)相关推荐

  1. Java程序员常用开发软件介绍

    Java程序员常用开发软件介绍 Java程序员常用开发软件介绍 后端开发利器:idea / eclipse及各种封装版本 数据库客户端:Navicat / Heidisql 前端开发: vs code ...

  2. 如何正确下载安装eclipse(java常用的编程开发软件)?

    如何下载安装eclipse? Java编程最好的集成开发工具就是IBM研发的eclipse软件,eclipse完全免费,是java开发人员的必备平台.刚刚发布的最新eclipse是Eclipse ID ...

  3. Java开发者文档(开发软件+规范)

    java-developer-document 文档地址:https://gitee.com/zhengqingya/java-developer-document 一.开发环境 Java开发环境系列 ...

  4. java最好用的开发软件,掌握这些知识点再也不怕面试通不过!

    1. 前言 大家都知道,Postman是一个非常受欢迎的API接口调试工具,提供有Chrome扩展插件版和独立的APP,不过它的很多高级功能都需要付费才能使用. 如果你连Postman都还没有用过,不 ...

  5. java ssm框架_JavaWeb开发SSM框架搭建详解

    1.需要用到的jar包:由于很多的jar包不好下载,我直接上传到百度网盘: 很多,而且不好下载,我已经整理好好了: 关于SSM框架:以前的博客有介绍过 第一步:创建Dynamic Web Projec ...

  6. java 实现 指派_Activiti 开发案例之动态指派任务

    流程图 以上是一个请假的流程图,以下为流程任务节点描述: 员工发起请假流程 部门经理审批 同意则进入人事审批 拒绝则调整申请或者直接结束流程 人事审批通过则进入销假环节 人事审批拒绝则调整申请或者直接 ...

  7. java keypress事件_javaweb开发-js代码中keypress事件调用判断,取得keyCode值

    在js代码中的一段代码,keypress事件调用的函数中的代码. var keyCode = event.keyCode ? event.keyCode : event.which ? event.w ...

  8. 软件模板开发与定制开发有什么区别?

    软件开发一般分为两种类型,模板开发和定制开发.两种不同的开发方式,在价格上有很大的区别,那么企业该选择软件定制开发还是模板开发呢? 一.模版开发 所谓模板就好像模具一样,批量生产,固定开发.模板开发, ...

  9. 软件定制开发怎么收费

    软件定制开发 软件定制开发公司怎么收费 软件定制开发公司怎么收费 简单点来说,要视手机APP的需求及质量而言,价位一般在几千到十几万左右,更高端的价格更高. 今天,我们就来详细分析一下这个问题,请继续 ...

最新文章

  1. java代码如何写出打印_java - 为什么这个代码向后写,打印“Hello World!”
  2. 什么是java四大引用?
  3. Java黑皮书课后题第4章:*4.5(几何:正多边形的面积)正多边形是一个具有n条边的多边形,它每条边的长度都相等,而且所有角的度数也相等。编写程序,提示用户数输入边个数和边长,然后显示它的面积
  4. ExtJs2.0学习系列(13)--Ext.TreePanel之第二式
  5. php合图,php合并图片
  6. win10保护色设置及还原
  7. 交通仿真 | SUMO第一步
  8. SSHD服务的搭建与管理
  9. html实战解析—折扣计算器生成机制及实例代码
  10. 目标检测算法——YOLOv5/YOLOv7改进之结合CBAM
  11. python词频统计_用Python实现一个词频统计(词云+图)
  12. C# word 操作进阶-05-复制表格[转载]
  13. CentOS 安装HTTP代理服务器Tinyproxy---配置简捷
  14. 人脸识别眨眼张嘴软件_人脸识别张张嘴眨眨眼jar、css、js
  15. 雷鸟电视卸载自带应用和开机广告+停用自动更新
  16. Unity WebGL错误集锦
  17. android移动端与服务端通信保持Session会话
  18. Linux入门合集(入门一篇就够了!)
  19. ie8和html5的兼容性,ie8网页兼容性不完全指南
  20. js刷新页面和刷新打开自己的父页面

热门文章

  1. Python学习笔记: 闭包
  2. 设计测试用例的7点原则
  3. 自定义git忽略规则
  4. HDU 4763 Theme Section ( KMP )
  5. TypeScript_学习笔记
  6. 【小程序开发】微信小程序开发中遇到的那些坑...
  7. php -- 取日期
  8. Trie树的C++实现
  9. FFmpeg build under MinGW【原创】
  10. 在装完Linux系统之后自己去修改Swap分区的大小(两种方法)