国际化定义:国际化(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 Internationalization国际化教程
Java 国际化基础.doc
java国际化教程及源代码,可以看一下。
国际化(internationalization),又称为i18n(因为这个单词从i到n有18个英文字母,因此命名)。对于某些应用系统而言,它需要发布到不同的国家地区,因此需要特殊的做法来支持,也即是国际化。通过国际化的方式,...
国际化插件 i18n vue国际化 internationalization vue vue.js Internationalization plugin Vue internationalization
internationalization-mvc4, [Obsolete] 国际化的MVC4模板( 请参见 code52/aspnet国际化) Internationalization.MVC4的目标:提供一套包,帮助开发人员开始使用 ASP.NET MVC构建全球化和本地化的应用程序。...
Flutter国际化示例 在此示例中,Flutter可以通过使用json文件进行国际化。 这是Flutter的基本国际化示例。 教程中此示例项目。 预习 入门 您可以按照以下说明启动示例国际化应用程序并将其安装到设备上。 先决条件 ...
第六章 Internationalization(I18N:国际化)..........................283 struts1.x...283 一、开发struts1应用的基本步骤...283 二、Struts的工作流程......................284 三、struts-config.xml配置文件中...
国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其...
1. 首先建一个MVC国际化项目Internationalization。 2. 选中项目右键-->“添加”-->“添加ASP.NET文件夹”-->“App_GlobalResources”。 3. 选中“App_GlobalResources”右键添加一个资源文件Language.resx。在其中...
Java Platform Standard Edition Internationalization Guide.pdf Java Platform Standard Edition Security Developer's Guide.pdf Java Platform Standard Edition Java Virutal Machine Guide.pdf Java Platform ...
3.Resources and Internationalization(资源和国际化) 4.本地化你的Android 应用程序 5.在Android 中轻松实现横竖屏的布局 6.如何获取当前Locale ,设定Locale 7. 如何在代码中强行指定自己App 的locale 8.Android...
TableofContents Ifyou'reviewingthisdocumentonline,youcanclickanyofthetopicsbelowtolinkdirectlytothatsection. 1.Aboutthistutorial..........................................................
经济学、英语人才适用。
真正可以使用的 spring mvc 2.5.6 国际化 实例 internationalization example 实际eclipse工程,包含jar包。 http://localhost:8080/welcome.htm
GUI programming algorithms and data structures concurrency networking internationalization advanced GUI database and Web programming It is designed to prepare students to become proficient Java ...
The .NET Framework may well have the most comprehensive support for internationalization and globalization of any development platform to date, and .NET Internationalization teaches developers how to...
Chapter 19 Internationalization Chapter 20 Applets Chapter 21 Java Networking Chapter 22 Java Database Connectivity Chapter 23 Java Threads Chapter 24 Concurrency Utilities Chapter 25 Security Chapter...
MEAN.JS是一个全栈JavaScript开源解决方案,它为基于 , , 和的应用程序提供了坚实的起点。 这个想法是通过连接那些框架来解决常见问题,建立一个强大的框架来支持日常开发需求,并帮助开发人员在使用流行...