Опишу небольшой глюк с локалями, возникший недавно у меня. Точнее это даже не столько глюк, сколько, скорее всего, я не до конца разобралась, однако проблему я решила и это может кому-то помочь (да и мне, если повторится).
Глюк проявился следующим образом — внезапно весь интерфейс стал на английском языке. И произошло это после того, как я заменила экран входа в систему с 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/.
В этом «руководстве», возможно, есть ошибки, так как готовые рецепты из сети не всегда работают или не всегда работают как надо, и, возможно, оно ещё будет дополняться.