Вопрос-ответ

How do I set the default locale in the JVM?

Как мне установить локаль по умолчанию в JVM?

Я хочу установить по умолчанию Locale для моей JVM значение fr_CA. Какие возможны варианты для этого?

Я знаю только один вариант Locale.setDefault()

Переведено автоматически
Ответ 1

Вы можете установить ее в командной строке с помощью параметров JVM:

java -Duser.country=CA -Duser.language=fr ... com.x.Main

Для получения дополнительной информации ознакомьтесь с Интернационализация: понимание локали в платформе Java - Использование локали

Ответ 2

Из справочника Oracle:


Локаль по умолчанию вашего приложения определяется тремя способами. Во-первых, если вы явно не изменили значение по умолчанию, Locale.getDefault() метод возвращает локаль, которая изначально была определена виртуальной машиной Java (JVM) при ее первой загрузке. То есть JVM определяет локаль по умолчанию из среды хоста. Локаль среды хоста определяется операционной системой хоста и пользовательскими настройками, установленными в этой системе.


Во-вторых, в некоторых реализациях среды выполнения Java пользователь приложения может переопределить локаль хоста по умолчанию, предоставив эту информацию в командной строке, установив user.language, user.country и user.variant системные свойства.


В-третьих, ваше приложение может вызывать Locale.setDefault(Locale) метод. Метод setDefault (локальная локализация) позволяет вашему приложению устанавливать общесистемный (фактически, для виртуальной машины) ресурс. После того, как вы установите локаль по умолчанию с помощью этого метода, последующие вызовы Locale.getDefault() вернут вновь установленную локаль.


Ответ 3

В приведенных здесь ответах на данный момент мы находим два способа изменения настройки локали JRE:


  • Программно, используя Locale.setDefault() (что, в моем случае, было решением, поскольку я не хотел требовать каких-либо действий от пользователя):


    Locale.setDefault(new Locale("pt", "BR"));

  • Через аргументы в JVM:


    java -jar anApp.jar -Duser.language=pt-BR

Но, просто в качестве справки, я хочу отметить, что в Windows есть еще один способ изменения локали, используемой JRE, как задокументировано здесь: изменение общесистемного языка.


Примечание: Вы должны войти в систему с учетной записью с правами администратора.



  1. Нажмите Пуск> Панель управления.


  2. Windows 7 и Vista: щелкните Часы, язык и регион > Регион и язык.


    Windows XP: Дважды щелкните значок Региональные и языковые параметры.


    Появится диалоговое окно Региональные и языковые параметры.


  3. Windows 7: Перейдите на вкладку Администрирование.


    Windows XP и Vista: перейдите на вкладку Дополнительно.


    (Если нет вкладки "Дополнительно", значит, вы не вошли в систему с правами администратора.)


  4. В разделе Язык для программ, отличных от Unicode, выберите нужный язык из выпадающего меню.


  5. Нажмите OK.


    Система отобразит диалоговое окно с запросом, использовать ли существующие файлы или установить с компакт-диска операционной системы. Убедитесь, что у вас есть готовый компакт-диск.


  6. Следуйте инструкциям по установке файлов.


  7. Перезагрузите компьютер после завершения установки.



Конечно, в Linux JRE также использует системные настройки, чтобы определить, какую локаль использовать, но инструкции по установке общесистемного языка меняются от дистрибутива к дистрибутиву.

Ответ 4

Вы можете использовать аргументы JVM

java -Duser.country=ES -Duser.language=es -Duser.variant=Traditional_WIN
java