NetBeans RCP - 在NetBeans中如何实现GUI Form的国际化

时间:2022-01-02 10:55:47
         在这篇文章中,我将一步一步地展示在NetBeans 5.5中如何实现GUI Form的国际化。首先阐述如何国际化一个Form已经一系列Form,然后会阐述如何国际化整个工程。

   NetBeans中实现国际化有两种方式:自动国际化和国际化向导。

 1、国际化的概念

    国际化就是使应用程序不需改动和编译就能够适应不同的语言和区域。这就要求显示的文本元素必须存储在程序代码外部,即要在代码中动态获得文本而不是在代码中写死。

    我们经常将国际化字符串以keyvalue对的形式存储在properties文件中。在程序中,我们通过key标识来获得value,也就是要显示的国际化文本。因此,我们需要为每种语言都创建一个单独的properties文件,并且翻译所有的value部分。这些文件的key都是完全相同的,只是value不同。

NetBeans IDE中提供了相应的工具辅助完成国际化工作。

2、更新安装包

    国际化支持是NetBeans IDE 5.5默认安装的一部分,但是如果我们想使用自动国际化就必须更新安装GUI Builder Update Pack for NetBeans 5.5

 3、在GUI From设计时实现国际化

在此我们将以一个对话框实例演示如何为一个GUI Form添加非默认区域语言。

1)该对话框的设计窗口如图所示:

NetBeans RCP - 在NetBeans中如何实现GUI Form的国际化

 

2)打开自动国际化开关步骤如下所示:

        首先在检查器窗口(Inspector Window)选择根节点

 NetBeans RCP - 在NetBeans中如何实现GUI Form的国际化

        然后在属性窗口(Properties window)选中自动国际化

NetBeans RCP - 在NetBeans中如何实现GUI Form的国际化 

    3)国际化该对话框窗口GUI组件

首先,在设计区域选中一个GUI组件(如jLabel1),在其属性窗口中点击Text属性中的省略号(...)按钮。

然后,在打开的属性编辑窗口中切换到资源包(resource bundle)模式,在value区域输入“Find What:”字符串。

点击OK完成。

为界面上的所有组件重复以上操作后,如下图所示:

NetBeans RCP - 在NetBeans中如何实现GUI Form的国际化 

4)添加新的区域语言

在检查器窗口(Inspector Window)选择根节点,在其属性窗口中点击Design Locale属性中的省略号(...)按钮,输入ES国家代码,确定即可。

此时在Bundle.properties中出现了新加入的区域语言支持Bundle。如图所示

NetBeans RCP - 在NetBeans中如何实现GUI Form的国际化 

Bundle.properties右键打开,翻译成所需要的文本信息如下图所示:

NetBeans RCP - 在NetBeans中如何实现GUI Form的国际化

5)、测试添加的非默认区域语言

打开工程属性,旋转“Run”节点。在虚拟机(VM)选项域中输入“-Duser.language=es -Duser.country=ES”

相应的如果添加中文简体支持即输入“-Duser.language=zh -Duser.country=CN”

运行工程测试,发现窗口变成我们想要的语言。

 

4、国际化整个工程

通常,在一个工程会有很多文件需要国际化,按照上述的步骤一个一个做就比较麻烦。此时NetBeans提供了一个很好的工具——国际化向导(Internationalization Wizard),它可以一次国际化处理多个文件。

下面所示的实例中,为每个.java文件创建了各自的properties文件,当然这取决于我们。

NetBeans RCP - 在NetBeans中如何实现GUI Form的国际化 

右键工程的源代码包(Source Packages)节点,旋转工具(Tools->国际化( Internationalization->国际化向导(Internationalization Wizard)。按照步骤点击Next即可搞定啦。

NetBeans RCP - 在NetBeans中如何实现GUI Form的国际化NetBeans RCP - 在NetBeans中如何实现GUI Form的国际化

    现在可以为工程添加其他区域语言啦。方法如上所述。

    呵呵……

    这样NetBeans中的国际化问题就搞定啦……