[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Кодировка mutt и kde.



В сообщении от 11 Июнь 2005 17:38 Eugen Wissner написал(a):
> Здравствуйте.
> Имею проблемы с локализацией Debian woody (rev5).
> Прописал в ~/.bash_profile (туда хоть написал куда надо?) следующие строчки:
> export LC_CTYPE=ru_RU
> export LANG=ru_RU.KOI8-R
> export LC_ALL=ru_RU.KOI8-R
Туда-туда.
> После этого жить стало намного легче. Но остались некоторые недоразумения.
> Во-первых mutt (запускаю с консоли) так и отказывается отображать 
> koi8-r. Уже рылся по всяким статьям пробовал настройки на угад... без 
> толку. Наверняка, что-то не то делаю, или сделал. Может кто-то 
> конкретные настройки пояснит.
У mutt свой конфиг, и set-language-env создает его правильно.

> Во-вторых, запускается у меня KDE, пускаю я konsole, набираю locale и 
> везде вместо "ru_RU.KOI8-R" пишется стандартный "POSIX". При чем возьмем 
> в пример игрушку Джезбол, она вместо русского шрифта показывает 
> "????????", а если запустить ее с konsole, предварительно присвоив 
> переменным LC_ALL и LANG значение ru_RU.KOI8-R, то со шрифтами 
> становится все в порядке.
> Поясните, пожалуйста, в чем тут проблема с иксами, kde..., а то я 
> новенький..., тяжко.

Корень проблемы лежит в том, что LANG прописан у тебя в пользовательском конфиге
bash. И чтобы X унаследовал это окружение, необходимо запустить X из bash от имени
пользователя, тогда будет все ok. Можешь проверить, набрав startx в консоли. Обычно
же (из коробки) X запускается процессом init, а еще точне его грузит kdm (или xdm,
или gdm), которые не наследуют никакого окружения. Следовательно и все программки
запущенные в иксах, работают в POSIX локали. В этом можно убедится, если запустить
какое-нибудь простенькое X приложение, узнать его PID и посмотреть в
/proc/$PID/environment. Вариант запуска xterm и команды echo $LANG не работает,
поскольку xterm запускает bash, а bash выполняет .bash_profile, следовательно echo
запускается уже в окружении с LANG из .bash_profile. Может показаться, что и все остальное
будет иметь нужный LANG, однако это не так - только то, что запущено из xterm.

Как же сделать, чтобы X и все другие приложения работали в нужной локали? Вариант
прописать в /etc/environment рабочий, однако, позволю себе заметить, что не правильный
с точки зрения multiuser системы. Переменные в этом файле устанавливаются при логине
любого пользователя. А если он root? Или ему нужна немецкая локаль? Короче правильно,
я считаю, прописать в .bash_profile и в .xsession. Последний выполняется перед стартом
X от имени пользователя, таким образом X запускаются с "правильным" окружением.

PS: Довольно долго пришлось когда-то самому потрахаться с этим, прежде чем понял в чем дело =)

Макс




Reply to: