java国际化解决方案.docx
《java国际化解决方案.docx》由会员分享,可在线阅读,更多相关《java国际化解决方案.docx(10页珍藏版)》请在冰豆网上搜索。
java国际化解决方案
java,国际化解决方案
篇一:
javaweb项目国际化显示
项目国际化显示
一.学习使用i18n
1、合格的国际化软件
软件实现国际化,需具备以下两个特征:
1)、对于程序中固定使用的文本元素,例如菜单栏、导航条等中使用的文本元素、或错误提示信息,状态信息等,需要根据来访者的地区和国家,选择不同语言的文本为之服务。
2)、对于程序动态产生的数据,例如(日期,货币等),软件应能根据当前所在的国家或地区的文化习惯进行显示。
2、固定文本元素的国际化
对于软件中的菜单栏、导航条、错误提示信息,状态信息等这些固定不变的文本信息,可以把它们写在一个properties文件中,并根据不同的国家编写不同的properties文件。
这一组properties文件称之为一个资源包。
3.使用方式
一个资源包中的每个资源文件都必须拥有共同的基名。
除了基名,每个资源文件的名称中还必须有标识其本地信息的附加部分。
例如:
一个资源包的基名是“myproperties”,则与中文、英文环境相对应的资源文件名则为:
"myproperties_""myproperties_"
每个资源包都应有一个默认资源文件,这个文件不带有标识本地信息的附加部分。
若ResourceBundle对象在资源包中找不到与用户匹配的资源文件,它将选择该资源包中与用户最相近的资源文件,如果再找不到,则使用默认资源文件。
例如:
、资源文件的书写格式
资源文件的内容通常采用"关键字=值"的形式,软件
根据关键字检索值显示在页面上。
一个资源包中的所有资源文件的关键字必须相同,值则为相应国家的文字。
并且资源文件中采用的是properties格式文件,所以文件中的所有字符都必须是ASCII字码,属性(properties)文件是不能保存中文的,对于像中文这样的非ACSII字符,须先进行编码。
例如:
国际化的中文环境的properties文件(内容中中文使用unicode编码显示)
国际化的英文环境的properties文件
提示:
java提供了一个native2ascII工具用于将中文字符进行编码处理,native2ascII
的用法
、编程实现固定文本的国际化
在JavaAPI中提供了一个ResourceBundle类用于描述一个资源包,并且ResourceBundle类提供了相应的方法getBundle,这个方法可以根据来访者的国家地区自动获取与之对应的资源文件予以显示。
ResourceBundle类提供了一个静态方法getBundle,该方法用于装载资源文件,并创建ResourceBundle实例:
1LocalecurrentLocale=();
2ResourceBundlemyResources=(basename,currentLocale);
basename为资源包基名(且必须为完整路径)。
如果与该locale对象匹配的资源包子类找不到。
一般
情况下,则选用默认资源文件予以显示
实例对象的getString方法获取指定的资源信息名称所对应的值。
、使用java代码在后台进行处理
Stringvalue=(“key");
范例:
根据国家地区自动获取与之对应的资源文件1package;
2
3import;
4import;
5/**
6*@ClassName:
I18NTest
7*@Description:
编程实现固定文本的国际化
8*@author:
孤傲苍狼
9*@date:
XX-8-29下午9:
34:
05
10*
12publicclassI18NTest{
14publicstaticvoidmain(String[]args){15//资源包基名(包名+myproperties)
16
Stringbasename="";17//设置语言环境
18Localecn=;//中文
19Localeus=;//英文
20//根据基名和语言环境加载对应的语言资源文件
21ResourceBundlemyResourcesCN=
(basename,cn);//加载
myproperties_
22ResourceBundlemyResourcesUS=
(basename,us);//加载
myproperties_
23
24//加载资源文件后,程序就可以调用ResourceBundle实例对象的getString方法获取指定的资源信息名称所对应的值。
25//Stringvalue=(“key");
27String
30String
26StringusernameCN=("username");
passwordCN=("password");28
29StringusernameUS=("username");
passwordUS=("password");31
(usernameCN+"--"+passwordCN);(usernameUS+"--"+passwordUS);
34}
35}
、在WEB应用中实现固定文本的国际化
如下所示:
1pageEncoding="UTF-8"%>
2
3
4
5国际化(i18n)测试
78//加载i18n资源文件,()获取访问用户所在的国家地区
9ResourceBundlemyResourcesBundle=
("",());
10%>
11
12
13:
14:
15=">">
16
17
18
同样一个页面,在不同语言环境的浏览器下显示出了不同的语言文字效果,这样就实现了固定文本的国际化。
IE浏览器切换使用语言:
工具-Internet选项
4、在WE阪用中使用国际化标签库实现固定文本的国际化
1pageEncoding="UTF-8"%>
5
6
7国际化(i18n)测试
8
910//加载i18n资源文件,()获取访问用户所在
的国家地区
篇二:
Java程序的国际化和本地化介绍本文尝试用一个简单的例行本地化有多么简单。
子来演示在书写Java应用程序时候,
怎样使之符合国际化标准,然后对其进当一个软件产品需要在全球
的要求就是UI上的信息上能用本求远远不止于此,本文只是涉及提供了对不同国家和比C/C++来的优越
地化语言来显示,当然一个优秀的全
了国际化和本地化的关于界面显示语
i18n:
不同语言文字的内部支持,由于先天域和语言环境下面的使用情况,最简单球化软件产品关于国际化和本地化的要言的一小部分。
Java语言内核基于的原因,Java对于国际化的支持远远要在开始具体介绍之前,需要先介绍几个术语:
就是internationali
i18n.internationalization指
取的设计措施。
zation,国际化,由于首字母"i"和末为了使应用程序能适应不同的语言和尾字母"n"间有18个字符,所以简称地区间的变化而不作系统性的变化所采
l10n:
就是localization,本地化,由于首字
过程。
母T和末尾字母"n"间有10个字母,所以简称l10n.
言环境或地区使用而加入本地特殊化部件和翻译后文本的
locale:
简单来说是指语言和区域进行特殊组合的
一个标志。
(来自:
小龙文档网:
java,国际化解决方案)我们的例子,显示一个有一个按钮和一个菜单
文文字的或者中文文字的界面。
注:
因为仅仅作为
是一个Button一样,而不是通常意义上的菜单条。
的Dialog窗,在不改动程序的前提下使应用程能够显示英
演示用,我们的菜单栏也作为一个部件加入对话框,好象
通常我们的程序是这样的:
import*;
import*;import*;publicclassi18nDemo{public
staticvoidmain(
Stringargs[])throwsException{
JDialogdialog=newJDialog();JButtonbtOK=newJButton();JMenuBarmenuBar=newJMenuBar();JMenumenuFile=newJMenu();JMenuItemmenuExit=newJMenuItem();
("OK");("File");("Exit");("i18nDemo");
(menuFile);(menuExit);().
setLayout(newFlowLayout());
().add(btOK);().add(menuBar);
(200,100);(true);();(0);}}我们通过修改程序来达
到i1
.Java里面的资源文件叫做Resou
PropertyResourceBundle,我们推荐阅读。
当一个程序需要一些面将需要的本地化资源装入。
8n的要求:
将那些和界面显示有关系
rceBundle,它分成两种,一种是List
这里使用ListResourceBundle,关于P
Locale相关的资源,例如字符串资源的资源单独提取出来到资源文件里面ResourceBundle,另一种是ropertyREsourceBundle请参阅文后的的时候,它可以从resourcebundle里需要注意的是:
为了能够正确显示中文字符,使用"MSSong",不然界面有中文字符的时候会出现程序里的部件需要选择指定字体,例如在显示中文的时候没有意义的方框。
请看修改过的程序和资源文件。
import*;import*;import*;
publicclassi18nDemo{publicstaticvoid
main(Stringargs[])t
hrowsException{
ResourceBundleres;if(//usecurrentlocale
at
machinetogettheresourcebundle.
res=("Res");}else{res=
Bundle("Res",newLocale(args[0],
args[1]));
}JDialogdialog=newJDialog();JButtonbtOK=newJButton();JMenuBarmenuBar=newJMenuBar();JMenumenuFile=newJMenu();JMenuItemmenuExit=newJMenuItem();Fontfont=newFont(("Font
Name"),,12);
(("OKText"));(
String("FileMenuText"));
(("FileExitMenuText"));
(
tring("DialogTitle"));
(font);(font);(font);(menuFile);(menuExit);().
setLayout(newFlowLayout());
().add(btOK);().add(menuBar);
(200,100);(true);();(0);}}
extends.ListResourceBundle{
staticfinalObject[][]contents=newS
{"FileExitMenuText",
Exit"},
DialogTitle",
tring[][]{
getContents()
"DemoDialog"}};publicObject[][]{returncontents;}}
篇三:
java国际化
JAVA国际化的实现的国际化由两部分组成:
(1)页面国际化处理
(2)JAVA类的源代码处理
、给如下资源文件添加需要国际化的内容
1、
ApplicationResources_zh_中文
ApplicationResources_en_英文
ApplicationResources_en_英文二、在文件中作如下配置parameter=""/>parameter=""
parameter=""
key='menutitle'/>
key='globaluititle'/>
parameter="">
三、写Constants类里写处理资源文件及国际化的方
法,主要用于在JAVA源代码中处理国际化问题
该类如下:
publicclassConstants{
publicstaticMessageResourcesMESSAGE=
("Reseveinfo");
publicstaticMessageResources
MESSAGE_UITITLE_RES=MessageResources
.getMessageResources("");
MESSAGE_GLOBAL_RES=MessageResources.getMessageResources("");
publicstaticMessageResourcesMESSAGE_MENU_RES
MessageResources.getMessageResources("");publicstaticMessageResourcesMESSAGE_APP_R=ESMessageResources.getMessageResources("");
publicstaticString[]disposeLanguage(Localelocale){
String[]pagesign=newString[6];
pagesign[0]=MESSAGE_APP_(locale,"");
pagesign[1]=MESSAGE_APP_(locale,"");
pagesign[2]=MESSAGE_APP_(locale,"");
pagesign[3]=MESSAGE_APP_(locale,"");
pagesign[4]=MESSAGE_APP_(locale,"");
returnpagesign;
}
//处理语言国际化
publicstaticStringdisposeLanguageApp(Localelocale,Stringstr,Object[]args){
StringretStr="";
if(locale==null||(str))