|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。条记1.相干常识
1.1Java编程言语是从一入手下手就撑持软件当地化的第一个编程言语。
一切的字符串都利用Unicode
1.2要当地化的内容:
数字123,456.78英国;123.456,78德国
泉币
日期3/22/61美国;22.03.1961德国
March22,1961;英文22.Marz1961德语;1961年3月22日中文
工夫
文本
->图形用户界面(会合以下情况)
1.3Locale类
locale,复杂来讲是指言语和地区举行特别组合的一个标记
言语、国度和变体(language_country_variant)
预界说Locale对象
getDefault,getAvailableLoacles
1.4信息格局化
java.text.MessageFormat
2.资本包
2.1资本包的载进
ResourceBundlecurrentResources=ResourceBundle.getBundle("ProgramResources",currentLocal);
getBundle将想法加载上面这些类之一,直到加载乐成为止:
ProgramResources_language_country_variant
ProgramResources_language_country
ProgramResources_language
ProgramResources
不乐成,将用defaultloacal来取代currentLocal举行从头加载
假如还不乐成,将抛出MissingResourceException非常
getBundle找到一个类,将持续寻觅下一个类,创建起资本条理布局。
资本条理布局中的每一个条理纷歧建都要存在
2.2资本的检索
StringbuttonLabel=currentResources.getString("addButton");
某个资本在子类中没有检索到,将从创建起的资本条理布局中的父类中举行检索
2.3资本的分类
能够依据资本检索时分的参数来分类,也能够将分歧的资本放到分歧的资本包中
同时,资本对象能够寄存任何范例的对象,不但是字符串
ColorbackColor=(Color)currentResources.getObject("backColor");
对此的处置参考2.4.2
2.4资本包的创建
2.4.1创建本人的资本包类
必需承继于ResourceBundle,并要完成上面2个办法:
EnumerationgetKeys();
ObjecthandleGetObject(Stirngkey);
示例:
publicclassProgramResourcesextendsResourceBundle
//placegetKeysmethodincommonsuperclass
{
publicEnumerationgetKeys()
{
returnCollections.enumeration(Arrays.asList(keys));
}
privateString[]keys={"button","backColor","defaultSie"};
}
publicclassProgramResources_deextendsProgramResources
{
publicObjecthandleGetObject(Stirngkey)
{
if(key.equals("button"))
return"Rechnen";
elseif(key.equals("backColor"))
returnColor.black;
elseif(key.equals("defaultSie"))
returnnewdouble[]{210,297};
}
}
publicclassProgramResources_en_USextendsProgramResources
{
publicObjecthandleGetObject(Stirngkey)
{
if(key.equals("button"))
return"Compute";
elseif(key.equals("backColor"))
returnColor.blue;
elseif(key.equals("defaultSie"))
returnnewdouble[]{216,279};
}
}
为每一个资本包编写这类代码是相称啰嗦的。能够接纳以下办法。
2.4.2JDK供应的类
ListResourceBundle和PropertityResourceBundle
利用ListResourceBundle类,你能够将本人的一切资本放进一个对象数组中,然后它可以为你举行资本的查找:
publicclassProgramResources_deextendsListResourceBundle
{
publicObject[][]getContents(){returncontents;}
privatestaticfinalObject[][]contents
{
{"button","Rechnen"},
{"backColor",Color.black},
{"defaultSie",double[]{210,297}}
}
}
publicclassProgramResources_en_USextendsListResourceBundle
{
publicObject[][]getContents(){returncontents;}
privatestaticfinalObject[][]contents
{
{"button","Compute"},
{"backColor",Color.blue},
{"defaultSie",double[]{216,279}}
}
}
假如你的全体设置都是字符串型,那末你就能够利用更公布的PropertityResourceBundle机制:
将全体字符串放进一个属性文件,每行都是一对关头字/值对
button=Rechnen
backColor=black
defaultSie=210X297
button=Compute
backColor=blue
defaultSie=216X279
并按以下格局定名属性文件
ProgramStrings.properties
ProgramStrings_de.properties
ProgramStrings_en_US.properties
像上面如许装载资本
ResourceBundlebundle=ResourceBundle.getBundle("ProgramStrings",local);
getBundle找出类似的属性文件,并将它转换成PropertityResourceBundle。不必间接利用PropertityResourceBundle
不敷的地方:
必要在程序中对各个字符串举行剖析
最好的办理举措:
将字符串资本放进到属性文件,而且将ListResourceBundle用于那些不是字符串的资本对象。
注重事项:
转换:
用于存储属性的文件一般是7位的ASCII文件,必要用native2ascii依据来转换位Unicode字符
default:
ProgramStrings.properties中安排美式英语字符串和信息
以便在装载当地资本文件失利后装载进default资本都能看得懂
3.图形用户界面的当地化必要注重的事变
不要对标签Label举行判别
对资本包中分歧言语的字符串的长度要思索
4.我们的封装
基础类:XStringManager字符串办理器类,从资本文件中猎取字符串
扩大:其他用到字符串的中央
XResourceManager:用以猎取指定资本,包含:URL和对象等
XComponentBuilder:一致创立可视组件对象
XErrorManager:依据毛病代码猎取毛病信息
首先第一点:jsp,servlet,javabean这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题。 |
|