前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaWeb开发——软件国际化(动态元素国际化)

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

作者头像
wangweijun
发布2020-02-14 10:13:14
9450
发布2020-02-14 10:13:14
举报
文章被收录于专栏:wangweijunwangweijun

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

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

编写测试代码

代码语言:javascript
复制
	@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的使用即可。

代码语言:javascript
复制
	@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实例对象。

编写测试代码

代码语言:javascript
复制
	@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));
	}

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DateFormat类(国际化日期)
  • NumberFormat类(国际化数据)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档