国际化定义:国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。
国际化可以轻松地本地化或将目标应用翻译成不同的语言 ,并可以实现一次处理多个语言环境,使得应用程序支持更多的语言环境,跨国际应用时使于维护。在应用程序中,实现方式主要是采取读取资源属性文件(properties)的方式实现,然后根据.properties文件的名称信息(本地化信息),匹配当前系统的国别语言信息(也可以程序指定),然后获取相应的properties文件的内容。
properties文件的命名规范是: 自定义名_语言代码_国别代码.properties,
默认文件名直接写为:自定义名.properties
如ZMC_zh_CN.properties,ZMC_en_US.properties,ZMC.properties等,国际化文件根据自己应用程序决定采取一个或多个……
当在中文操作系统下,如果ZMC_zh_CN.properties、ZMC.properties两个文件都存在,则优先会使用ZMC_zh_CN.properties,当ZMC_zh_CN.properties不存在时候,会使用默认的ZMC.properties。
没有提供语言和地区的资源文件是系统默认的资源文件。
资源文件都必须是ISO-8859-1编码,因此,对于所有非西方语系的处理,都必须先将之转换为Java Unicode Escape格式。转换方法是通过JDK自带的工具native2ascii.
下面进行实践说明,由于时间关系且只为学习入门了解,写一十分简单的程序加以说明。
1.创建一个Web Project应用。
2.在src目录下创建国际化资源文件:
ApplicationResources_zh_CN.properties文件内容:
msg.hello=\u4F60\u597D\u4E16\u754C
ApplicationResources_en_US.properties文件内容:
msg.hello=Hello World
ApplicationResources_zh_CN.properties文件内容:
msg.hello=Hello World
3.在web.xml文件中加入信息:
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>ApplicationResources</param-value>
</context-param>
该文件只是指明国际化文件的基本名称,解析类由jstl包提供,若对ZMC*.properties文件进行配置,则<param-value />的值为ZMC。所以该web.xml文件的信息最后为:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- Define the basename for a resource bundle for I18N -->
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>ApplicationResources</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
4.创建实例Class:
package i18n;
import java.util.Locale;
import java.util.ResourceBundle;
public class I18nTest {
/**
* 国际化Demo
*
* @author liuchunhe
*/
public static void main(String[] args) {
try {
//获取中问环境
Locale locale1 = new Locale("zh", "CN");
//通过web.xml中的基名信息取得ResourceBundle对象
ResourceBundle resourceBundle1 = ResourceBundle.getBundle("ApplicationResources", locale1);
//从文件中取得信息
System.out.println("中国大陆环境:"+resourceBundle1.getString("msg.hello"));
//美国
Locale locale2 = new Locale("en", "US");
ResourceBundle resourceBundle2 = ResourceBundle.getBundle("ApplicationResources", locale2);
System.out.println("美国环境:"+resourceBundle2.getString("msg.hello"));
//系统默认
ResourceBundle resourceBundle3 = ResourceBundle.getBundle("ApplicationResources", Locale.getDefault());
System.out.println("系统默认环境:"+resourceBundle3.getString("msg.hello"));
} catch (Exception e) {
System.out.println("运行出现异常……");
}
}
}
5.Locale 对象表示了特定的地理、政治和文化地区。需要 Locale 来执行其任务的操作称为语言环境敏感的操作,它使用 Locale 为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、地区或文化的风俗/传统来格式化该数值。
使用此类中的构造方法来创建 Locale:
Locale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)
创建完 Locale 后,就可以查询有关其自身的信息。使用 getCountry 可获取 ISO 国家代码,使用 getLanguage 则获取 ISO 语言代码。
6.import java.util.ResourceBundle说明
本文出自 “追梦纯” 博客,请务必保留此出处http://zmcjava.blog.51cto.com/4714945/819897
分享到:
相关推荐
### 关于JAVA国际化的问题资料 #### 一、JAVA国际化的概念与重要性 JAVA国际化(Internationalization,简称I18N)是指...通过本篇文档的学习,希望能帮助读者更好地理解和掌握JAVA国际化的基本原理和技术实现方法。
在Android应用开发中,为了使应用能够适应全球不同的语言环境,开发者通常会采用资源国际化(i18n,Internationalization)技术。这个过程涉及到将应用中的文本和图片资源分离出来,以便根据不同地区创建对应的翻译...
10. **国际化(Internationalization)**:Swing支持多语言,允许应用程序适应不同的语言环境。 11. **可定制组件(Custom Components)**:通过继承已有的组件并重写方法,你可以创建自己的组件。 12. ** Nimbus ...
本案例将深入探讨如何在Spring应用中实现国际化。 首先,我们需要了解i18n的基本概念。"i18n"这个术语来源于英文单词"internationalization",由于单词中有18个字母,因此得名。国际化的核心是将应用中的文本、日期...
2. **国际化(i18n)**: i18n代表国际化的缩写,因为它在英文单词“internationalization”中,从'i'到'n'有18个字母。这个概念涉及将软件设计成能够适应不同地区的语言、文化和社会习惯。在JavaWeb应用中,通常通过...
国际化(Internationalization,通常缩写为i18n)是软件开发中的一个重要概念,它涉及到使应用程序能够适应不同语言和地区,以满足全球用户的需求。在Web应用中,尤其是在使用Java Server Pages (JSP) 技术时,实现...
10. **国际化框架和库**:使用如Java的Java Internationalization API (Java i18n),JavaScript的i18next,或者React的react-intl等工具可以帮助简化i18n过程。 在压缩包文件"I18n"中,可能包含了用于演示或学习i18...
Java SpringMVC框架是Java企业级开发中非常流行的一个模块,尤其在构建Web应用方面。国际化...本文通过一个具体的案例,详细阐述了如何在Java SpringMVC框架中实现国际化,希望能对读者有所启发和帮助。
为了使应用程序能够适应全球用户,开发者需要考虑其国际化(Internationalization)和本地化(Localization)。"Winform国际化Demo" 就是一个示例,它展示了如何将Winform应用转化为支持多种语言的平台。 在Winform...
国际化(Internationalization,简称i18n)是使软件能够适应不同语言和地区需求的过程。在Struts2中实现国际化,可以帮助开发者创建对多语言环境友好的应用。 本示例主要围绕Struts2框架如何实现国际化进行深入探讨...
在博文链接中(虽然这里未提供具体内容),通常会分享更多关于Android国际化实践的经验、技巧和案例,例如如何优化资源文件结构,提高本地化效率,或者如何利用自动化工具进行批量处理等。 总之,Android国际化是...
首先,让我们理解什么是本地化(Localization)和国际化(Internationalization)。本地化是指将应用的内容、界面布局和资源适配到特定地区或语言的过程,比如从英文版转化为中文版。而国际化则是为应用设计可扩展的...
9. **国际化(Internationalization)**:Swing支持多语言应用,通过ResourceBundle可以实现界面文本的国际化。 10. **外观(LookAndFeel)**:Swing提供了不同平台风格的LookAndFeel,可以通过UIManager设置,使...
在压缩包中的"Test"文件可能是用于演示这些概念的小案例,可能包含一个简单的国际化编程示例,例如使用Java的ResourceBundle或者.NET Framework的ResourceManager来处理多语言支持。通过学习和实践这些案例,开发者...
首先,我们需要了解什么是国际化(Internationalization)和本地化(Localization)。国际化是指设计和开发软件,使其能够适应不同的语言和文化环境,而本地化则是将国际化的产品调整到特定地区的语言和习惯的过程。...
7. **国际化(Internationalization)**:Swing支持多语言环境,允许开发者轻松地为应用程序添加不同语言的支持。 8. **对话框(Dialogs)**:Swing提供了JOptionPane类,用于创建简单的对话框,如信息提示、确认...
通过这些源代码,读者可以深入学习Java Web开发的关键技术,如Servlet、JSP、EJB、JSTL、过滤器、国际化、数据库连接以及MVC架构的应用。同时,它们也是实践和理解Java Web整合开发的宝贵资源。
8. **国际化(Internationalization)**:虽然题目未提及,但一个完整的系统可能考虑到了多语言支持,这涉及到资源文件和Locale的使用。 9. **异常处理**:在读写文件或处理数据库时,通常需要捕获和处理可能出现的...