UMGUM.COM 

Lotus Domino + Debian Linux + Date ru_RU ( Отображение даты в "русском" формате на сервере с "локалью" en_US. )

6 сентября 2011  (обновлено 31 января 2015)

Эта публикация скрыта. Она доступна только по прямой ссылке.

OS: Debian GNU/Linux Lenny/Squeeze.
Application: IBM Lotus Domino 8.5 for Linux (xSeries).

Условия: сервер Lotus Domino 8.5 запущен с использованием англоязычной "локали" "en_US.UTF-8", менять которую на иную нежелательно.
Задача: привести формат времени и даты, используемый сервером Lotus Domino, к формату, применяемому в русскоязычных интерфейсах (формат даты и времени "локали" "en_US" "MM/DD/YYYY HH:mm:SS", а нам требуется получить на выходе "DD/MM/YYYY HH:mm:SS").


Для начала проверим, какие "локали" система может использовать на данный момент:

# locale -a

C
en_US.utf8
POSIX

У меня, как правило, на свежеустановленном сервере, "en_US.utf8" - основная "локаль" интерфейса, используемая по умолчанию; это задаётся в соответствующем конфигурационном файле:

# echo /etc/default/locale

LANG="en_US.UTF-8"

Просмотрим детали, составляющие конфигурацию используемой "локали":

$ locale

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

Нас интересует только переменная LC_TIME, которая определяет, какую "локаль" использовать при отображении всего, что имеет отношение к дате и времени. Смотрим, что у нас со форматом отображения времени сейчас:

$ locale LC_TIME -k

abday="Sun;Mon;Tue;Wed;Thu;Fri;Sat"
....
d_fmt="%m/%d/%Y"
....

Параметр d_fmt определяет последовательность отображения элементов даты. В нашем случае значение месяца выводится впереди значения дня; следует добиться их обратного расположения, попутно заменив символы разделителя.

Добавим в систему поддержку ещё одной "локали", если это не было сделано на этапе её установки:

# dpkg-reconfigure locales

В предложенном списке "локалей", дополнительно к уже отмеченным, выбираем "ru_RU.UTF-8 UTF-8":

....
en_US.UTF-8 UTF-8
....
ru_RU.UTF-8 UTF-8
....

Оставляем англоязычную "локаль" "en_US.UTF-8 UTF-8" в качестве действующей по умолчанию:

....
Default locale for the system environment:
  en_US.UTF-8
....

В результате, после генерирования всех отмеченных "локалей", мы должны увидеть как минимум следующее:

Generating locales (this might take a while)...
  en_US.UTF-8... done
  ru_RU.UTF-8... done
Generation complete.

Проверяем, какие "локали" нам теперь доступны:

# locale -a

C
en_US.utf8
POSIX
ru_RU.utf8

Ради интереса пробуем присвоить переменной LC_TIME новое значение:

$ LC_TIME="ru_RU.UTF-8"
$ export LC_TIME

Посмотрим, как изменилась конфигурация используемой "локали":

$ locale

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

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

Посмотрим, как изменились параметры отображения даты и времени:

$ locale LC_TIME -k

abday="Вск;Пнд;Втр;Срд;Чтв;Птн;Сбт"
....
d_fmt="%d.%m.%Y"
....

То, что нужно, параметр d_fmt указывает на формат вывода даты, более близкий русскому, нежели американцу.

Теперь подскажем системе запускать сервер Lotus Domino с особыми параметрами "локали". У меня для запуска используется специально созданная учётная запись "notes". В файле настроек и переменных окружения пользователя "notes", расположенном в специфичном каталоге "/var/lib/notes/", вносим указание экспорта требуемого значения переменной LC_TIME:

# echo /var/lib/notes/.bash_profile

....
export LC_TIME="ru_RU.UTF-8"
....

В качестве последнего штриха, который может и не понадобится (в зависимости от текущей конфигурации сервер Lotus Domino), указываем серверу Lotus Domino на используемый формат даты и времени:

# echo /var/lib/notes/data/notes.ini

# Используем 'D', 'M' и 'Y' для установки последовательности отображения составляющих даты
DateOrder=DMY
# Используем символ '/', '-' или '.' в качестве разделителей составляющих даты
DateSeparator=.
# Используем символ '/', '-' или ':' в качестве разделителей составляющих времени
TimeSeparator=:
# Вибираем тип часов между '12_HOUR' и '24_HOUR'
ClockType=24_HOUR

Теперь перезапускаем сервер Lotus Domino с новым значением переменной LC_TIME и получаем в журнал событий дату и время в "русском" варианте.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )