28. 国际化

概述
  • 软件的本地化:一个软件在某个国家或地区使用时,采用该国家或地区的语言,数字,货币,日期等习惯。
  • 软件的国际化:软件开发时,让它能支持多个国家和地区的本地化应用。使得应用软件能够适应多个地区的语言和文化风俗习惯。
  • 随用户区域信息而变化的数据称为本地信息敏感数据。例如数字,货币等数据。
  • 应用程序的国际化就是在应用软件的设计阶段,使软件能够支持多个国家和地区的用户的使用习惯。
  • 国际化又称为 i18n:internationalization
软件国际化的特征
  • 一个国际化的应用软件应有下面的特性:
    • –对于程序中的本地信息敏感的数据(日期,货币等)能根据当前所在的国家或地区的文化习惯进行显示
    • –对于文本元素(错误提示信息,状态信息等)不是直接写在应用程序中,而是存储在应用程序外部的资源文件中,在应用程序中通过程序代码来动态获得这些数据
    • –无需修改和重新编译程序就能支持新的国家或地区的用户使用
Java 国际化解决方案
  • 文本信息不能硬编码在程序代码中,而是需要将它们从应用程序中分离出来,在软件运行时根据本地信息读取相应的文本内容进行显示
  • 数值,货币,时间,日期等本地敏感数据可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理。Java 中提供了解决这些问题的 API 类(位于 java.util 包和 java.text 包中)
Locale 类
  • Locale 实例对象代表一个特定的地理,政治或文化上的区域
  • 一个 Locale 对象本身不会验证它代表的语言和国家地区信息是否正确,只是向本地敏感的类提供本地信息,与国际化相关的格式化和解析任务由本地敏感的类(若JDK中的某个类在运行时需要根据 Locale 对象来调整其功能,这个类就称为本地敏感类)去完成
DateFormat 类
  • DateFormat 类可以将一个日期/时间对象格式化为表示某个国家地区的日期/时间字符串,也可以将表示某个本地的日期/时间的字符串解析为相应的日期/时间对象
  • DateFormat 类定义了一些用于描述日期/时间的显示模式的 int 型的常量,包括FULL, LONG, MEDIUM, DEFAULT, SHORT,这些常量用于描述表示日期/时间字符串的长度。这些常量说明表示的日期/时间的确切格式取决于具体的国家和地区
  • DateFormat 对象通常不是线程安全的,每个线程都应该创建自己的 DateFormat 实例对象
  • DateFormat 对象的方法:
    • –format: 将日期/时间对象格式化为符合某个本地环境习惯的字符串
    • –parse:将符合某个本地环境习惯的日期/时间字符串解析为日期/时间对象
NumberFormat 类
  • NumberFormat 可以将一个数值格式化为符合某个国家地区习惯的数值字符串,也可以将符合某个国家地区习惯的数值字符串解析为对应的数值
  • NumberFormat 类的方法:
    • –format 方法:将一个数值格式化为符合某个国家地区习惯的数值字符串
    • –parse 方法:符合某个国家地区习惯的数值字符串解析为对应的数值
MessageFormat 类
  • MessageFormat 类提供了一种参数替换模式字符串中的占位符的方式,它将根据模式字符串中包含的占位符产生一系列的格式化对象,然会调用这些格式化对象对参数进行格式化,并用格式化后的结果字符串替换模式字符串中的相应占位符。
    Web 应用程序的国际化
实现 web 应用国际化有两种方式:
  • –针对不同语言和地区的用户开发出不同的 JSP 网页版本,当用户请求资源时,根据请求消息中携带的本地信息为用户提供合适的版本
  • –将对本地环境敏感的资源数据(例如:错误提示信息,菜单文字等)从网页中分离出来,放在 .properties 属性资源文件中。对于应用程序中的数值,货币和日期/时间等本地敏感数据,可以通过占位符的方式设置它们的格式类型和格式模式。
    要实现 web 应用的国际化,首先要获得客户端浏览器的本地信息,在 Servlet 程序中,调用 HttpServletRequest 对象的 方法获得代表客户端本地信息的 Locale 对象:
    • –getLocale():返回代表客户端的首选本地信息的 Locale 对象
    • –getLocales():返回一个包含客户端支持的所有本地信息的 Locale 对象的 Enumeration 对象,这些Locale 对象按照客户端支持的所有本地信息的优先级在集合中一次排列

你可能感兴趣的:(java,java,入门,开发语言)