Настройка параметров языкового стандарта Java

Когда я использую языковой стандарт Java по умолчанию на своем компьютере с Linux, он выходит с настройками языкового стандарта США, где мне изменить это, чтобы он отображался с правильным языковым стандартом?


person Community    schedule 15.09.2008    source источник
comment
Метод Locale.getavailablelocale() не возвращает en_MY, почему? он возвращает 155 локалей   -  person VeKe    schedule 07.07.2015
comment
@kekan: попробуйте Locale.getDefault();   -  person Michael Fayad    schedule 08.03.2016
comment
Остерегайтесь изменений локали по умолчанию в Java 7.   -  person Vadzim    schedule 22.11.2016
comment
Возможный дубликат как мне установить локаль по умолчанию для моего JVM?   -  person Vadzim    schedule 22.11.2016


Ответы (10)


Я считаю, что java собирает это из переменных среды, в которых она была запущена, поэтому вам нужно убедиться, что ваши переменные среды LANG и LC_ * установлены соответствующим образом.

справочная страница содержит полную информацию об указанных переменных среды.

person pjz    schedule 15.09.2008
comment
Что такое переменные среды LC_*? - person Leonel; 29.07.2010
comment
Если ваша программа форматирует числа, вы, вероятно, захотите установить LC_ALL. Смотрите мой ответ ниже. - person cayhorstmann; 27.03.2012
comment
Имейте в виду, что это неполное. Я использую macOS Sierra, и LANG, а также LC_ALL установлены как en_US.UTF8. Однако по какой-то причине Java предлагает user.language=en, user.country=US и user.country.format=DE. - person Gunnar; 24.08.2017

Со свойствами user.language, user.country и user.variant.

Пример:

java -Duser.language=th -Duser.country=TH -Duser.variant=TH SomeClass

person Chris Broadfoot    schedule 15.09.2008
comment
Это будет работать, но безопаснее и более перспективно установить среду и позволить JRE определить правильные значения для них. - person Air; 09.05.2012

Я должен был контролировать это в сценарии, который работал на машине с французским языком, но конкретная программа Java должна была работать с en_US. Как уже отмечалось, следующие работы:

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

Альтернативно,

LC_ALL=en_US.UTF-8 java ...

Я предпочитаю последнее.

person cayhorstmann    schedule 27.03.2012

Вы можете вызвать во время инициализации или что-то еще Locale.setDefault() или -Duser.language=, -Duser.country= и -Duser.variant= в командной строке. Кое-что на сайте Sun.

person sblundy    schedule 15.09.2008
comment
Поддерживаемые языки перечислены на странице oracle.com/technetwork/java/. Javase/ - person koppor; 04.01.2013

Для таких инструментов, как jarsigner, реализованный на Java.

JAVA_TOOL_OPTIONS=-Duser.language=en jarsigner
person hiroshi    schedule 28.07.2014
comment
Эта среда работает лучше, просто добавьте export JAVA_TOOL_OPTIONS=-Duser.language=en в ваш ~/.profile - person Jiejing Zhang; 21.10.2014
comment
См. stackoverflow.com/questions/28327620/ - person Vadzim; 22.11.2016
comment
Наконец-то этот вариант мне нужен! java и javac, похоже, не учитывают LANG и LC_ALL. - person Yongwei Wu; 07.12.2016

Если вы когда-нибудь захотите проверить, какую локаль или набор символов использует java, это встроено в JVM:

java -XshowSettings -version

и он выгрузит множество настроек, которые он использует. Таким образом, вы можете проверить правильность получения значений LANG и LC_*.

person Matthew Buckett    schedule 08.03.2019
comment
Хм, это дает мне локаль по умолчанию, локаль отображения по умолчанию и локаль формата по умолчанию... в чем, черт возьми, разница? - person Nyerguds; 07.08.2019

Если вы работаете на Mac, просто используйте «Системные настройки» -> «Языки» и перетащите язык для проверки наверх (до английского), чтобы убедиться, что в следующий раз, когда вы откроете приложение, будет выбрана правильная локаль!

person Gmu    schedule 29.05.2010

Вы можете изменить на консоли:

$ export LANG=en_US.utf8
person Derzu    schedule 18.05.2012
comment
Во-первых, вам нужно написать «utf-8» вместо «utf8». Во-вторых, работает только кодировка, но не языковая часть. - person Yongwei Wu; 07.12.2016

В Linux создайте файл в /etc/default/locale со следующим содержимым

LANG=en.utf8

а затем используйте команду source для экспорта этой переменной, запустив

source /etc/default/locale

Исходная команда постоянно устанавливает переменную.

person aseychell    schedule 15.04.2015

Одним из способов управления настройками локали является установка системных свойств Java user.language и user.region.

person killdash10    schedule 15.09.2008