#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();