Откуда JVM получает настройки локали в Ubuntu 10.10?

Мое веб-приложение работает нормально после того, как я изменил системный языковой стандарт, однако всякий раз, когда файлы генерируются (java.text.numberformat.getCurrencyInstance()), валюта, отображаемая в файлах, выражается в $, а не в €, который является валютой для системного языкового стандарта. У веб-приложения нет проблем с отображением правильной валюты. Система представляет собой удаленный сервер Ubuntu 10.10. Я исчерпал все возможности настройки локали системы, и после нескольких перезапусков я все еще не был близок к ответу. [Изменить] Я попробовал следующее:

https://askubuntu.com/questions/89976/how-to-change-the-default-locale-in-ubuntu-10-10-server когда первоначально возникла проблема, решившая проблемы с отображением.

Я удалил все остальные локали, кроме французского, используя localepurge.

Я отредактировал /etc/default/locale, чтобы он содержал следующее:

LANG=fr_FR.UTF-8
LANGUAGE=fr_FR
LC_CTYPE=fr_FR.UTF-8
LC_NUMERIC=fr_FR.UTF-8
LC_TIME=fr_FR.UTF-8
LC_COLLATE=fr_FR.UTF-8
LC_MONETARY=fr_FR.UTF-8
LC_MESSAGES=fr_FR.UTF-8
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=

1 ответ

Решение

Даже если в вашей удаленной системе задан языковой стандарт X, и вы подключаетесь с удаленного хоста, для которого задан языковой стандарт Y, языковой стандарт (Y) может быть волшебным образом перенесен в удаленную систему для текущего сеанса (например, TERM).

увидеть SendEnv LANG LC_* в man ssh_config,

Таким образом, ваше удаленное Java-приложение может получить различные настройки локали в зависимости от того, как вы его запускаете. Если он запускается как системная служба после перезагрузки на хосте A, он получит свои естественные настройки локали на хосте A (LANG="C"), но если вы войдете с другого хоста B через ssh, с другими настройками локали (LANG="pl_PL" на хосте B) Java-приложение, запущенное из этого сеанса ssh на хосте A, может получить (в зависимости от конфигурации ssh) языковые настройки с хоста B.

 _______________ ______________
[удаленный хост A] [локальный хост B ]
[ LANG="C"      ]  - - - - [ssh]- - - - [ LANG="pl_PL" ]
[Java-приложение] [Xterm]
[_______________] [______________]
Другие вопросы по тегам