如何在Java中设置语言?

7

我正在使用一个Java程序,但是操作系统是外语的(韩文/日文等)。 Swing组件的显示,例如FileChooser,都是用外语显示的,我需要将其更改为英语。

java.util.Locale.setDefault(java.util.Locale.ENGLISH);

JFileChooser chooser = new JFileChooser();

chooser.setLocale(Locale.ENGLISH);

文件选择器仍然以这些外语显示所有内容-按钮等。有什么办法可以解决吗?

我的JFilechooser的按钮“确定/取消”显示为日语。我正在使用日语Windows。如何将其更改为英语?

4个回答

8
您可以在启动虚拟机时指定语言。 java -Duser.language=zh -Duser.country=CN -Duser.variant=CN MainClass

测试翻译(ResourceBundle)在Windows上非常好用。谢谢! - tresf

6

1
JFileChooser chooser = new JFileChooser(); chooser.setDefaultLocale(Locale.ENGLISH); chooser.setLocale(Locale.ENGLISH); - Mr. Zen
听起来很合理 - 我也不会期望有一个API可以改变awt或swing组件的语言环境 - 这是非常罕见的用例,而且实现起来非常困难 ;) - Andreas Dolk
1
@Mr Zen - 你其实还没有尝试过。Michael的建议是基于JComponent中的静态方法;) - Andreas Dolk
@Andreas... 这是我的代码,现在可以工作了。' this.setDefaultLocale(Locale.ENGLISH); JFileChooser chooser = new JFileChooser();' 无论如何感谢您的关注 (+1) - Mr. Zen
@Andreas_D:由于JFileChooser是JComponent的子类,而在Java中静态方法可以在实例上调用,所以他确实调用了正确的方法,只是时间不对。 - Michael Borgwardt

4
我不是要说显而易见的话,但根据您发布的代码,很难确定您的期望是什么。仅仅修改区域设置并不能修改发送到UI的Unicode字符;它也不能将一种语言翻译成另一种语言。更改区域设置是必要的,但并不足够。

我的JFilechooser的按钮的OK/CANCEL显示为日语。我正在使用日语Windows。 如何将其更改为英语? - Mr. Zen
如果应用程序已本地化,则更改您的PC区域设置应该足够了。 - Simeon
@Simeon。更改PC区域设置是一个不好的建议。它会影响操作系统上的所有应用程序。 - Kaj
@Simeon 我并没有说他应该硬编码。看看我的回答,我建议使用VM参数。 - Kaj
@kaj 我没说你提出了这个想法:) 但问题中有一个硬编码的语言环境。 - Simeon
显示剩余2条评论

1
你可以使用下面的代码使其工作,但是JComponent的语言环境是更好的选择。
JFileChooser chooser = new JFileChooser();
chooser.setLocale(Locale.getDefault());
chooser.updateUI();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接