Настройка локалей в Ubuntu

Опишу небольшой глюк с локалями, возникший недавно у меня. Точнее это даже не столько глюк, сколько, скорее всего, я не до конца разобралась, однако проблему я решила и это может кому-то помочь (да и мне, если повторится).
Глюк проявился следующим образом — внезапно весь интерфейс стал на английском языке. И произошло это после того, как я заменила экран входа в систему с kdm на slim, хотя в настройках самого slim ничего даже близко нет и он использует те же сессии, что и gdm и kdm.
Сам по себе английский интерфейс лично для меня даже предпочтительнее, но как выяснилось позже, проблема проявлялась и более неприятным образом.
Во-первых, в 2gis и, скорее всего, и в других приложениях под wine перестала печататься кириллица — в интерфейсе она отображалась по прежнему нормально, а напечатать в полях поиска можно было только латиницей.
А во-вторых, в эмуляторах терминала, вместо кириллических символов печатались знаки вопроса. Если открыть пункт меню Terminal, то можно увидеть такую картину:

И тут даже можно выбрать кодировку UTF-8, тогда кириллица будет печататься нормально, но работает это лишь в текущем открытом окне программы.

На скриншоте ещё заметно, что текущей локалью установлена POSIX, однако при входе через kdm или gdm, всё возвращается к нормальному виду без изменения настроек. И, кажется, даже если зайти через slim в gnome или kde, то можно поменять локаль через их gui-инструменты.
Однако, правка файлов никак не помогала, пока я не поставила пакет utils-linux-locale. Не знаю, в чём тут секрет, тем более у других пользователей, этот пакет не установлен и всё работает (ну правда в kde с kdm), но помогло именно это.

Теперь вкратце инструкция как вообще изменять язык интерфейса и добавлять недостающие локали не через gui-утилиты.
Во-первых, в папке /var/lib/locales/supported.d/ лежат три файла: en, ru и local. Это у меня их три, а если вам нужна ещё, допустим, и японская локаль, то добавится ещё один файл (правда, придётся ещё установить необходимые пакеты).
В файлах en и ru прописаны варианты данных языков, которые будут сформированы в системе, в частности:

en_US.UTF-8 UTF-8
en_GB.UTF-8 UTF-8

и

ru_RU.UTF-8 UTF-8
ru_RU.CP1251 CP1251
ru_RU.KOI8-R KOI8-R

А в файле local вписываются те кодировки, которые будут использоваться, у меня содержание файла такое:

ru_RU.UTF-8 UTF-8
en_US.UTF-8 UTF-8
ru_RU.CP1251 CP1251
ru_RU.KOI8-R KOI8-R

После измнения в этих файлах есть смысл перегенерировать локали командой

locale-gen

.

Текущая локаль в системе задаётся в файле /etc/default/locale:

LANG=en_GB.UTF-8
LANGUAGE=en_GB:en

Это у меня, так как мне хочется интерфейс на английском. А русский язык и кириллица всё равно поддерживаются при этом за счёт сформированных локалей. Правда, в примерах, которые я видела в сети, вторая строка обычно выглядит так: LANGUAGE=»en_EN:en:ru_RU:ru», типа чтобы русский язык поддерживался, но у меня работает и без этого.
И ещё в старых версия системы то же самое прописывалось в файле /etc/environment, однако, сейчас он вроде бы не используется, хотя существует, но на всякий случай можно и там прописать.

Проверить, как локаль установлена основной можно командой locale:

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

Что обозначает каждая переменная можно почитать в мане команды, но и так понятно, что если, например, хочется при английском интерфейсе иметь русский формат отображения денежных единиц, то в /etc/default/locale нужно добавить строку LC_MONETARY=»ru_RU.UTF-8″.
Ну и кстати, все примеры тут для кодировки UTF-8, так как я её использую. Если предпочтение отдаётся KOI8-R, то действия те же, но с соответствующими поправками.

Кстати, посмотреть, какие локали ещё поддерживаются можно в файле /usr/share/i18n/SUPPORTED, в частности для русского языка ещё доступна:

ru_RU ISO-8859-5

Там же рядом лежат файлы локалей в /usr/share/i18n/locales/ и файлы кодировок в /usr/share/i18n/charmaps/.

В этом «руководстве», возможно, есть ошибки, так как готовые рецепты из сети не всегда работают или не всегда работают как надо, и, возможно, оно ещё будет дополняться.

Добавить комментарий