Java国际化——资源包的使用
本文是由JR主持写作的《J2SE进阶》一书的部分章节整理而成,《J2SE进阶》正在写作、完善阶段。您阅读后,有任何建议、批评,请和我联系,或在http://www.javaresearch.org/forum/thread.jsp?column=376&thread=7576' target='_blank' class='l2'>这儿留言。《J2SE进阶》写作项目组感谢您阅读本文。
在当今这个信息社会,尤其是随着互联网的出现和普及,人们之间的距离比以往任何时候都更加接近,同时交往也更加频繁,时下最时髦的概念就是地球村,而我小时候只知道我出生的那个小乡村。距离近,交往频繁,人们就不得不考虑如何去与各个不同种族、不同区域的人们打交道。对人如此,对我们的软件亦是如此,你需要考虑如何让处于世界不同地方的使用者都能够很好地使用你的软件。于是,在每个软件开始之前,编写者都可能需要考虑这样一个问题——国际化。
我们知道,在Java中可以通过java.util.Locale类来唯一地确定特定语言和国家的组合,即抽象最终用户的使用环境。同时将用户相关的一些信息置于资源包中,通过资源包来动态地获得最终的用户显示。资源包可以由资源文件或者资源子类来具体实现。
注意:本文只打算讨论国际化过程中资源包的使用技巧,更多更精彩的内容,请期待《J2SE进阶》一书。
资源包
在编写应用程序的时候,需要面对的一个问题是如何来处理与locale相关的一些信息。比如,页面上的一些静态文本就希望能够以用户习惯的语言显示。最原始的做法是将这些信息硬编码到程序中(可能是一大串判断语句),但是这样就将程序代码和易变的locale信息捆绑在一起,以后如果需要修改locale信息或者添加其它的locale信息,你就不得不重新修改代码。而资源包可以帮助你解决这个问题,它通过将可变的locale信息放入资源包中来达到两者分离的目的。应用程序可以自动地通过当前的locale设置到相应的资源包中取得所要的信息。资源包的概念类似于Windows编程人员使用的资源文件(rc文件)。
一般来说,资源包需要完成两个功能:和具体的locale进行绑定以及读取locale相关信息。
ResourceBundle类
你可以把资源包看作为一个由许多成员(子类)组成的大家庭,其中每个成员关联到不同的locale对象,那它是如何完成关联功能的呢?
资源包中的每个成员共享一个被称作基名(base name)的名称,然后在此基础上根据一定的命名规范进行扩展。下面就列出了一些成员的名称:
LabelResources
相关文档:
Java NIO API详解
在JDK
1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞(blocking)API。对于大多数应用来说,这样的API使用很方
便,然而,一些对性能要求较高的应用,尤其是服务端应用,往往需要一个更为有效的方式来处理IO。从JDK 1.4起,NIO
API作为一个基于缓冲区,并能提供非阻塞(non-blo ......
Seasar2
一个项目中要用到seasar+flex,据说这个东西在小日本那里已经大量用于企业级B/S应用,当然这个开源组件也是他们开发的,所以收集一些相关资料,备忘..
所谓“Seasar2”就是一个“轻量级容器”,面向无法摆脱“Java 应用开发”之烦恼的所谓“开发者”,它能够保证开发的&ldq ......
第一种:
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
效率高,以后一定要使用此种方式!
第二种:
Map map = new HashMap();
Iterato ......
对于初学者,也行大家会认为Java包含JavaScript,然而这种从字面意思的理解是错误的,下面小编浅谈一下JavaScript与java的区别。
1. 基于对象和面向对象
Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。
JavaScript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。 ......
//1.编写一个程序,该程序可读入一个外部文件,并将文件内容赋值给一个字符串
package Zhangyiwei
import java.io.*;
public class Zhangyiwei {
public static String filename = "c:\\1.txt";
public static void main(String[] args) throws FileNotFoundException, IO ......