如何国际化java中的所有UI标签

时间:2013-11-26 07:33:46

标签: java internationalization

我需要将我的软件国际化为法语。我做了以下代码。

ResourceBundle bundle = ResourceBundle.getBundle("basic", new Locale("en", "US"));
lblUsername.setText(bundle.getString("username"));
lblPassword.setText(bundle.getString("password"));
btnLogin.setText(bundle.getString("login"));

这是我的登录表单。我的属性文件正常,这是在登录UI上工作。登录系统后,我需要根据登录表单上选择的语言更改所有UI的所有UI标签。任何人都可以给我一个解决方案。

提前致谢!

3 个答案:

答案 0 :(得分:1)

不要像这样硬编码语言环境:

 ResourceBundle bundle = ResourceBundle.getBundle("basic", new Locale("en", "US"));

从jsf / spring或您使用的任何框架获取Locale实例。为应用程序支持的所有语言环境提供* .properties文件。

检查: https://codereview.stackexchange.com/questions/13251/java-best-way-to-work-with-locales-in-swing-with-change-at-runntime

Java Swing - switch locale dynamically at runtime

Changing locale at runtime in Swing

Swing Internationalization - How to update language at runtime

答案 1 :(得分:1)

您需要存储在登录表单上选择的语言的区域设置,然后在登录后生成UI时使用它。所以不要使用

ResourceBundle.getBundle("basic", new Locale("en", "US")); 
然后你会用

ResourceBundle.getBundle("basic", classWhereTheLocaleIsStores.getLocale());

答案 2 :(得分:0)

因此,如果是桌面应用程序,则需要存储所选的区域设置,并在加载应用程序之前,将区域设置设置为选择正确的属性,例如:

ResourceBundle bundle = ResourceBundle.getBundle("baseNameOfyouProperties",
                    localeSelectedBYUser);

上面的答案解释相同,重要的是你保存所选的语言环境。