Как установить язык в Java?

#java

#ява #java

Вопрос:

Я использую программу Java с иностранной операционной системой (корейской / японской и т.д.) Отображение компонентов swing, таких как FileChooser, выполняется на иностранных языках, которые мне нужно изменить на английский.

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

JFileChooser chooser = new JFileChooser();

chooser.setLocale(Locale.ENGLISH);
  

И средство выбора файлов по-прежнему показывает все — кнопки и т.д. На этих иностранных языках. Есть идеи, как это исправить?

Кнопки OK / CANCEL в моем JFileChooser отображаются на японском языке. Я использую японскую Windows. Как изменить это на английский?

Ответ №1:

Вы можете указать язык при запуске виртуальной машины.

java -Duser.language=en -Duser.country=US -Duser.variant=US MainClass

Комментарии:

1. Для тестирования перевода (ResourceBundle) это отлично работает в Windows. Спасибо!

Ответ №2:

Вы должны установить locale через JComponent.setDefaultLocale() перед созданием JFileChooser объекта.

Комментарии:

1. ‘JFileChooser chooser = new JFileChooser(); chooser.setDefaultLocale(Locale. РУССКИЙ); chooser.setLocale(Locale. РУССКИЙ);’

2. Звучит разумно — я бы все равно не ожидал, что API позволит изменять локализацию компонента awt или swing — это очень редкий вариант использования и ужасно сложный в реализации 😉

3. @Mr Zen — ты на самом деле не пробовал. Предложение Майклза основано на статическом методе в JComponent 😉

4. @Andreas… вот мой код, который работает сейчас ..’ this.setDefaultLocale(Locale. РУССКИЙ); JFileChooser chooser chooser = new JFileChooser(); ‘ В любом случае, спасибо за проявленный интерес ( 1)

5. @Andreas_D: поскольку JFileChooser является подклассом JComponent, а статические методы могут вызываться в экземплярах на Java, он действительно вызвал правильный метод, просто не в нужное время.

Ответ №3:

Я не хочу указывать на очевидное, но трудно сказать, на чем основаны ваши ожидания, исходя из опубликованного вами кода. Простое изменение локали не изменит символы Юникода, которые вы отправляете в пользовательский интерфейс; это также не приведет к переводу с одного языка на другой. Изменение локали необходимо, но недостаточно.

Комментарии:

1. Кнопки OK / CANCEL моего JFileChooser отображаются на японском языке. Я использую японскую Windows. Как изменить это на английский?

2. Если приложение локализовано, должно быть достаточно изменить язык вашего ПК.

3. @Simeon. Изменение локали ПК — плохой совет. Это повлияет на все приложения в ОС.

4. @Kaj жесткое кодирование настройки локали хуже IMO, поскольку они могут забыть, что они это сделали, и это может привести ко всевозможным беспорядкам. Также я думаю, что если он предпочитает использовать свое приложение swing на английском языке, у него будут те же предпочтения для других приложений.

5. @Simeon Я не говорил, что он должен жестко кодироваться. Смотрите мой ответ, я предложил использовать аргументы виртуальной машины.

Ответ №4:

Вы можете заставить это работать с помощью приведенного ниже кода, но локаль JComponent является лучшим вариантом.

 JFileChooser chooser = new JFileChooser();
chooser.setLocale(Locale.getDefault());
chooser.updateUI();