我可以本地化JOptionPane是/否/取消选项吗?

时间:2013-01-04 13:58:32

标签: java swing localization joptionpane confirmation

我对JOptionPane.showConfirmDialog有疑问。 我得到的按钮是YesNoCancel,但我想知道是否可以将这三个按钮本地化为我的语言? 我意识到我可以用我的JButtons创建我自己的确认对话,但我想知道这是否也有可能。

提前致谢。

3 个答案:

答案 0 :(得分:9)

简单的方法是使用所需的语言环境设置JOptionPane,如下所示:

Locale locale = new Locale("pt","BR");
JOptionPane.setDefaultLocale(locale);

如果你有一个单独的类来处理来自ResourceBundle的所有消息,那么你只需要在语言环境初始化中设置一次。例如:

public void setLocale(Locale locale) {
    if (_bundle == null || !locale.equals(_locale)) {
        _locale = locale;
        _bundle = ResourceBundle.getBundle("resources.i18n.MessagesBundle", locale);

        JOptionPane.setDefaultLocale(_locale);

        _logger.info("Got new resource bundle for language-country: " + _locale.getLanguage() + "-" +
                locale.getCountry());
    }
}

干杯!

答案 1 :(得分:3)

这就够了:

UIManager.put("OptionPane.yesButtonText", "Ya");

答案 2 :(得分:1)

包含德语的大多数语言的标准对话框的所有本地化消息都由Swing PLAF资源包提供,您可以在JDK源中找到它们。参见例如对于英文消息:

相邻捆绑文件提供非英语语言的字符串值。

如果是一种很少使用的语言,只需再创建一个所需语言的文件并将其放在类路径的任何位置,就可以向这些系列中的任何一个添加一个包。 .java和.properties格式的捆绑包同样运行良好,但.java格式可能稍微更符合Unicode ...

尽管直接向com.sun包添加内容可能会违反Java许可,但请记住这一点。因此,为了安全起见,将您的额外资源移至您自己的软件包并使用UIManager注册它可能是明智之举:

UIManager.getDefaults().addResourceBundle("mypackage.swing.plaf.basic.resources.basic");