程序的国际化:当一个程序或Web应用需要面对多个国家或区域的用户时,由于不同国家或地区的用户的文化习惯不同,具体表现在使用的文字、货币、时间、数字等的表现格式不同。例中文和English,¥和$.此时就不可避免的需要实现程序的国际化来满足用户的需求。我们也可以把国际化简称为I18N,这是因为国家化单词internationalization的首字母"i"和尾字母"n"之间有18个字母。所以,国际化是一个跨地区或国家的企业级应用必不可少的功能。Java提供了非常好的国际化支持。
一、Java(J2SE)的国际化: 在Java中,Java是第一个设计成为全面支持国家化的语言,从一开始,Java就具有进行有效国际化的一个必须的重要特性:使用Unicode来处理所有的字符串。关于Java更多国际化的信息可以查看网站:http://www.joconner.com/javai18n和Sun的官方网站:http://java.sun.com/javase/technologies/core/basic/intl .
国际化主要涉及信息有:数字格式、日期和时间、排序、文本文件和字符集、本地语言和资源文件。
在Java语言中专门提供了用于解决国际化问题的API,这些API类主要位于java.text和java.util包中。
1、Locale类:一个Locale实例对象代表了一个特定的地理、政治或文化上的区域。
Locale的构造方法:
java.util.Locale(java.lang.String)
java.util.Locale(java.lang.String, java.lang.String)
java.util.Locale(java.lang.String, java.lang.String, java.lang.String)
其中第一个String是language,表示有效的ISO语言代码,一般用两个小写字母表示。第二个String表示国家或地区,一般使用两个大写字母表示。第三个string表示特定于供应商和浏览器的代码,WIN表示windows,MAC表示Macintosh,POSIX表示POSIX。
eg: Locale enLocale=new Locale("en");
Locale enLocale=new Locale("es", "ES","Traditional_WIN")
Locale常量:虽然可以使用Locale类的构造方法创建Locale实例对象,但是需要指定语言代码和国家代码作为构造方法的参数,这比较麻烦。这里Locale提供了一些常量,这些常量分别对应了一些提前创建好的表示不同语言和国家地区的Locale实例对象。例,Locale.CHINESE表示一个语言为汉语的Locale实例对象,而Locale.US表示一个国家或地区为美国的Locale实例对象。具体参见JDK文档。
public static Locale getDefault()返回操作系统的当前Locale实例对象。
public static Locale[] getAvailableLocales():返回当前操作系统所有已安装的语言环境数组。
还有相应的getCountry()、getLanguage()、getVariant()、getDisplayCountry等。
2、Format类:Format有一个抽象类。他的几个子类:NumberFormat、MessageFormat、DateFormat分别处理数字、字符串、日期的格式化问题。具体看jdk文档。
3、ResourceBundle类:用于描述一个资源包。资源文件的获取来实现国际化信息显示。同时,当涉及中文字符时,要求资源文件中的中文字符转换为Unicode编码。可用JDK的native2ascii应用程序来进行编码。同时,也可以一次性的转换整个资源文件。调用命令:
native2ascii -encoding gb2312 temp.properties MyResources_zh.properties
运行将在当前目录下生成temp.properties资源文件的Unicode编码文件MyResource_zh.properties。当出现占位符时可用MessageFormat类来处理。
二、Web应用的国家化
实现Web应用的国际化有两种方式:
1、针对不同语言和地区的用户开发不同的JSP网页版本,当用户请求资源时,根据请求消息中国携带的本地信息为用户提供合适的版本。
2、针对本地环境敏感的资源数据(如错误信息提示、菜单、按钮上的标题等文字信息),从网页中分离出来。放在.properties属性资源文件中。对于应用中的数字、货币、日期和时间等本地敏感的数据,可以通过占位符的方式设置它们的格式类型和格式模式。
针对上面两种方法:如果整个Web应用中有大量的数据需要根据用户的本地信息进行显示,则采用第一种方式;否则,采用第二种方式。也可以将两种方式结合使用。
下面以一个登录请求为例的操作流程:
附件中是一个简单的I18nJava 项目的jar包,项目的开发工具Eclipse。
- 大小: 26.1 KB
分享到:
相关推荐
Qt应用程序国际化示例代码,包含静态加载和动态切换语言两种方式。
ios应用程序国际化,能实现语言切换,非常好用。
设计Java EE应用程序-- J2EE应用程序国际化和本地化.doc
winform程序的国际化处理.便于一程序发布成不同的语言版本.
Java程序国际化教程源码下载 程序国际化教程源码下载.rar
Android程序国际化 添加多语言支持.doc
Qt应用程序国际化工程示例
iOS应用程序国际化 博客文章:http://blog.csdn.net/z251257144/article/details/8288028
Java 程序国际化教程+源码
该代码简洁明了,能够实现Android程序国际化的功能,且有相应的注释,易于读者理解。
文档中介绍了Struts2中国际化的实现原理和使用方法,同时介绍了应用程序的国际化的实现思路和方法以及示例!
如果是旧项目改动成本太大,遂决定自己实现一个小程序国际化方案。 源码地址:https://github.com/cachecats/miniprogram-i18n 一、项目结构 整体目录结构如下图: assets 存放资源文件,如图片 constants 存放...
在Android工程的res目录下,通过定义特殊的文件夹名称就可以实现多语言支持. 一般用 语言_地区的形式表示一种语言,如 zh_CN, zh_TW.
Linux下开发Qt避免不了有翻译的需求,这需要使用QTranslator类对语言进行翻译. QTranslator是一个翻译器类,我们通过定义其对象进行翻译。
闪亮的应用程序国际化变得容易! 使用它非常简单:只需以一种受支持的格式准备翻译文件,然后使用用户友好的Shiny.i18n界面将其读入您的应用程序,然后将表达式括起来即可通过翻译标签进行翻译。 因此,您的应用...
i18nize-react使用i18n绑定查找并替换您的react项目中的所有硬编码字符串文字。
替换程序是用于替换文件中文本的实用程序,当您必须将此功能应用于一组文件时很有用。...* \”),应用程序国际化等。 操作的复杂性将取决于输入的标准,这样,可能性就没有限制。 该应用程序支持大多数编码。
eclipse国际化插件可以帮助程序员轻松完成应用程序国际化的问题,它会根据程序员设置的配置文件进行自动的转换.