воскресенье, 27 марта 2016 г.

lc_messages и ubuntu

Проблема

Изменение параметра lc_messages не приводит к изменению сообщений сервера на Ubuntu.
Т.е. значение параметра меняется, а сообщения сервера выводятся на том языке, которому соответстовала локаль OS при запуске 'pg_ctl start'

Решение

1. Нужно убедиться, что при сборке postgresql была включена опция (./configure --enable-nls[='ru']).
Два способа проверить:
  1. $ pg_config --configure
  2. $ ls -lR `pg_config --localedir`
Должна быть директория 'ru'. Иначе нужно переустанавливать ту же мажорную версию postgresql (только софт, $PGDATA с базами не нужно трогать).
В этой директории находятся файлы с сообщениями на русском языке. Нет файлов на русском языке - ничего не увидим на русском языке.

2. На Ubuntu 14.04 по умолчанию не установлена локаль en_US.UTF-8
Проверить установленные локали:

$ locale -a

Чтобы добавить:

$ sudo locale-gen en_US en_US.UTF-8
$ sudo dpkg-reconfigure locales

Не лишнем будет убедиться, что установлена локаль ru_RU.UTF-8

3. Не нужно устанавливать LANGUAGE.
Переменная среды LANGUAGE задает список языков (в порядке предпочтения) для вывода сообщений программами. Если она установлена, то изменение параметра LC_MESSAGES не приведет к смене языка сообщений.

Итог

При соблюдении этих трех пунктов сообщения сервера будут на языке локали из параметра конфигурации lc_messages.

Комментариев нет: