|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
还得说上一点,就java本质而言,是面相对象的,但是你有没有发现,java也不全是,比如说基本类型,int,那他就是整型而不是对象,转换类型是还得借助包装类。
国际化是使程序具有充足的天真性、能活着界上任何区域运转的历程。国际化所请求的一定了局是中央化DD使一个程序可以运转在特定区域的历程。本文实验用一个复杂的例子来演示Java用户界面当地化。Java言语内核基于Unicode3.0(Java1.4)供应了对分歧国度和分歧言语笔墨的外部撑持,因为后天的缘故原由,Java关于国际化的撑持远远要比C/C++来的优胜。
在我看来当地化必需满意以下的三个前提:
1、程序必需能读、写和操纵当地化的文本。
2、程序在显现日期和工夫、使数字格局化和排序子串时,必需切合中央习气。(经由过程java.text包内里的类能够完成这些请求)
3、一切用户可见的文本都能在运转时取得,而不是间接写进程序中。(经由过程java.util包里的ResourceBundle类和他的子类能够完成这些请求。)
完成这三个方面能够真正完成程序的国际化。
起首让我们来懂得一下区域。区域代表一个地舆上、政治上或文明上的地区。在Java中,区域由java.util.Locale类暗示。区域经常以一种言语来界说,该言语则由其尺度的小写双字母代码暗示。(比方:en代表英国,fr代表法国,zh代表中国),但偶然候言语是不克不及代表一个区域的,那就要在言语前面再加上一个国度或该国度的地区(比方:en_US代表美国,zh_TW)。Locale类保留着一个静态的默许区域,它能够用Locale.setDefault()和Locale.getDefault()来设置和查询。一个程序能够天生和利用恣意数量的非默许Locale对象。
让我们再来看一下Unicode字符编码。Java利用Unicode的字符编码,其自己就是迈向国际化的一年夜步。Unicode编码其每一个字符都占两个字节。用u****的情势暗示。Unicode的字符能够等价于其他编码的字符(比方:从u0020到u007E的字符等价于ASCII和ISO8859-1字符的0x20到0x7E)。
本文次要是对用户界面中央化,因为我利用的是资本束!以是有需要对资本束作一下注释。
为界说一束中央化的资本,你必要天生一个ResourceBundle(资本束)的子类而且供应handleGetObject()和getKeys()办法的界说。为了在程序中利用来自ResourceBundle的中央化资本,就必要先挪用静态的getBundle()办法,用getBundle()取得一个ResourceBundle对象,然后再用getObject()办法往依照名字来查找资本。固然也能够利用getString()复杂的把getObject()的前往值分派给一个String对象。GetBundle()办法接纳basename_language_country_variait----没找到的话->basename_language_country----没找到的话->basename_language----没找到的话->basename(默许资本文件)的算法寻觅符合的资本。假如以上都没找到的话,则会抛出一个MissingResourceException非常。
如今我们来看一个复杂的例子,怎样使Java程序用户界面中央化的。
起首我们的程序必要查找特定Locale对象联系关系的资本包,以是应当界说一个Local对象,来猎取当地默许的区域!然后能够挪用ResourceBundle的getBundle办法,并将locale对象作为参数传进。
清单一:
Localelocale=Locale.getDefault();//猎取区域:默许
//猎取资本束。如未发明则会抛出MissingResourceException非常
ResourceBundlebundle=ResourceBundle.getBundle("Properties.Dorian",locale);
清单一中的”Properties.Dorian”代表Properties包下以Dorian定名的默许资本文件。如许就能够利用资本文件了!让我们来看看资本文件是怎样界说的。
清单二:
Title=u4e2du56fd;
red.label=u7ea2u8272;
green.label=u7effu8272;
blue.label=u84ddu8272;
清单三:
#文件Dorian_en_US.properties,是美国区域的资本束
#它掩盖了默许资本束
Title=America;
red.label=Red;
green.label=Green;
blue.label=Blue;
清单一和二界说了一个默许资本文件,和美国区域的资本文件。个中等号右边的字符串暗示主键,它们是独一的。为了取得主键对应的值,你能够挪用ResourceBundle类的getString办法,并将主键作为参数。别的,文件中以“#”号开首的行暗示正文行。必要注重的是清单二中的“u4e2du56fd”,它是字符“中国”的Unicode字符码。是利用Java自带的native2ascii工具转换的(native2asciiin.propertiesout.properties),这是为了不在程序界面中发生乱码。
清单四:
cmdRed.setText(bundle.getString("red.label"));
cmdBlue.setText(bundle.getString("blue.label"));
cmdGreen.setText(bundle.getString("green.label"));
<p>
多谢指点,其实我对.net网页编程和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。 |
|