如何在NetBeans中本地化@Messages注释

时间:2012-06-25 09:06:09

标签: netbeans localization internationalization netbeans-7 netbeans-platform

我想在NetBeans中使用@Messages注释来简化我的应用程序中的本地化。但是,我找不到任何有关如何使用此机制为其他语言添加翻译(包)的信息。

使用@Messages的操作示例如下

@ActionID(category = "category",
id = "AddAction")
@ActionRegistration(iconBase = "actions/action-icon.png",
displayName = "#CTL_AddAction")
@ActionReferences({
    @ActionReference(path = "Menu/Shapes", position = 160),
    @ActionReference(path = "Toolbars/Shapes", position = 5133)
})
@Messages("CTL_AddAction=Add Action")

如何根据语言改变添加操作?

1 个答案:

答案 0 :(得分:6)

http://bits.netbeans.org/dev/javadoc/org-openide-util/org/openide/util/NbBundle.Messages.html

@Messages注释将生成Bundle.java类和Bundle.properties文件。 Bundle.java类将包含用于本地化的函数,Bundle.properties文件包含用于确定根区域设置的确切字符串的键值对。

为了正确本地化,您应该检查Bundle.properties文件,然后创建Bundle_fr.properties文件(用于法语)或Bundle_whatever.properties文件,其中'what'是您要添加的语言环境。

然后,当为您的应用程序设置语言环境时,Bundle.java类应该使用正确的Bundle_xx.properties文件来本地化您对Bundle.java类函数的调用。

package com.testmodule;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.awt.ActionReferences;
import org.openide.awt.ActionRegistration;
import org.openide.util.NbBundle.Messages;

@ActionID(category = "category",
id = "com.testmodule.AddAction")
@ActionRegistration(iconBase = "com/testmodule/action-icon.png",
displayName = "#CTL_AddAction")
@ActionReferences({
    @ActionReference(path = "Menu/Shapes", position = 160),
    @ActionReference(path = "Toolbars/Shapes", position = 5133)
})
@Messages({
    "CTL_AddAction=Add Action"
})
public final class AddAction implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        Locale.setDefault(Locale.FRENCH);
        System.out.println("I am action "+Bundle.CTL_AddAction());
    }
}

My Bundles看起来像:

Bundle.properties
    OpenIDE-Module-Name=testmodule
Bundle_fr.properties
    OpenIDE-Module-Name=french testmodule
    CTL_AddAction=Ajouter une action