История изменений
Исправление bormant, (текущая версия) :
Нафлудили в теме знатно...
Начнем с простого, выясним, в каком режиме консоль (utf8 или однобайтный):
# stty
смотрим на строчку c utf8, есть ли перед utf8 дефис.
Если дефис в наличии, то консолька в однобайтном режиме, убеждаемся, что в загрузчике ядра ему передают параметр «vt.default_utf8=1» или «vt.default_utf8» вовсе не передают.
Заодно можно посмотреть на тот же предмет на
cat /proc/cmdline
Смотрим на доступные локали
# locale -av | grep ru_UA
Проверяем, нет ли ругани на выбранную ru_UA.UTF-8
# LANG=ru_UA.UTF-8 locale
Если ругань на отсутствующий каталог, проверяем, а на месте ли файлы локали, в данном случае — в /usr/lib64/locale/ru_UA.utf8
Если ругани нет, то локаль ставится без ошибок.
За язык сообщений отвечает LC_MESSAGES внутри каталога локали в /usr/share/locale/ (ах да, это для gettext и совместимых). И вот если там нет переводов для той или иной программы, то сообщений на выбранном языке и не будет. Но это вовсе не значит, что с локалью что-то не так. Для mc обычно есть, можно посмотреть:
LANG=ru_UA.UTF-8 mc
Где попробует взять переводы сообщений и где возьмет на самом деле?
/usr/share/locale/ru_UA.utf8/LC_MESSAGES/mc.mo — такого нет
/usr/share/locale/ru_UA/LC_MESSAGES/mc.mo — такого нет
/usr/share/locale/ru.utf8/LC_MESSAGES/mc.mo — такого нет,
/usr/share/locale/ru/LC_MESSAGES/mc.mo — бинго! Вот отсюда будут в действительности взяты сообщения.
Пожалуй отвлекся...
Если тут все было нормально, то для задания ru_UA.UTF-8 для всех достаточно:
/etc/profile.d/lang.sh:
export LANG=ru_UA.UTF-8
export LC_COLLATE=C
/etc/profile.d/lang.csh:
setenv LANG=ru_UA.UTF-8
setenv LC_COLLATE=C
Первый вызывается при запуске bash (sh и аналогичных) в качестве регистрационной оболочки (login shell), второй — при запуске csh (tcsh) и аналогичных. Из profile.d/ вызываются сценарии только с установленным битом исполнения.
Нетрудно догадаться, что выбором параметров локали управляют всего лишь переменные окружения. Подробнее см. «man locale».
Посмотреть текущее окружение на предмет указанных переменных несложно при помощи:
declare | grep '^LANG\|^LC_'
Исправление bormant, :
Нафлудили в теме знатно...
Начнем с простого, выясним, в каком режиме консоль (utf8 или однобайтный):
# stty
смотрим на строчку c utf8, есть ли перед utf8 дефис.
Если дефис в наличии, то консолька в однобайтном режиме, убеждаемся, что в загрузчике ядра ему передают параметр «vt.default_utf8=1» или «vt.default_utf8» вовсе не передают.
Заодно можно посмотреть на тот же предмет на
cat /proc/cmdline
Смотрим на доступные локали
# locale -av | grep ru_UA
Проверяем, нет ли ругани на выбранную ru_UA.UTF-8
# LANG=ru_UA.UTF-8 locale
Если ругань на отсутствующий каталог, проверяем, а на месте ли файлы локали, в данном случае — в /usr/lib64/locale/ru_UA.utf8
Если ругани нет, то локаль ставится без ошибок.
За язык сообщений отвечает LC_MESSAGES внутри каталога локали в /usr/share/locale/. И вот если там нет переводов для той или иной программы, то сообщений на выбранном языке и не будет. Но это вовсе не значит, что с локалью что-то не так. Для mc обычно есть, можно посмотреть:
LANG=ru_UA.UTF-8 mc
Где попробует взять переводы сообщений и где возьмет на самом деле?
/usr/share/locale/ru_UA.utf8/LC_MESSAGES/mc.mo — такого нет
/usr/share/locale/ru_UA/LC_MESSAGES/mc.mo — такого нет
/usr/share/locale/ru.utf8/LC_MESSAGES/mc.mo — такого нет,
/usr/share/locale/ru/LC_MESSAGES/mc.mo — бинго! Вот отсюда будут в действительности взяты сообщения.
Пожалуй отвлекся...
Если тут все было нормально, то для задания ru_UA.UTF-8 для всех достаточно:
/etc/profile.d/lang.sh:
export LANG=ru_UA.UTF-8
export LC_COLLATE=C
/etc/profile.d/lang.csh:
setenv LANG=ru_UA.UTF-8
setenv LC_COLLATE=C
Первый вызывается при запуске bash (sh и аналогичных) в качестве регистрационной оболочки (login shell), второй — при запуске csh (tcsh) и аналогичных. Из profile.d/ вызываются сценарии только с установленным битом исполнения.
Нетрудно догадаться, что выбором параметров локали управляют всего лишь переменные окружения. Подробнее см. «man locale».
Посмотреть текущее окружение на предмет указанных переменных несложно при помощи:
declare | grep '^LANG\|^LC_'
Исходная версия bormant, :
Нафлудили в теме знатно...
Начнем с простого, выясним, в каком режиме консоль (utf8 или однобайтный):
# stty
смотрим на строчку c utf8, есть ли перед utf8 дефис.
Если дефис в наличии, то консолька в однобайтном режиме, убеждаемся, что в загрузчике ядра ему передают параметр «vt.default_utf8=1» или «vt.default_utf8» вовсе не передают.
Заодно можно посмотреть на тот же предмет на
cat /proc/cmdline
Смотрим на доступные локали
# locale -av | grep ru_UA
Проверяем, нет ли ругани на выбранную ru_UA.UTF-8
# LANG=ru_UA.UTF-8 locale
Если ругань на отсутствующий каталог, проверяем, а на месте ли файлы локали, в данном случае — в /usr/lib64/locale/ru_UA.utf8
Если ругани нет, то локаль ставится без ошибок.
За язык сообщений отвечает LC_MESSAGES внутри каталога локали в
/usr/share/locale/. И вот если там нет переводов для той или иной программы, то сообщений на выбранном языке и не будет. Но это вовсе не значит, что с локалью что-то не так. Для mc обычно есть, можно посмотреть:
LANG=ru_UA.UTF-8 mc
Где попробует взять переводы сообщений и где возьмет на самом деле?
/usr/share/locale/ru_UA.utf8/LC_MESSAGES/mc.mo — такого нет
/usr/share/locale/ru_UA/LC_MESSAGES/mc.mo — такого нет
/usr/share/locale/ru.utf8/LC_MESSAGES/mc.mo — такого нет,
/usr/share/locale/ru/LC_MESSAGES/mc.mo — бинго! Вот отсюда будут в действительности взяты сообщения.
Пожалуй отвлекся...
Если тут все было нормально, то для задания ru_UA.UTF-8 для всех достаточно:
/etc/profile.d/lang.sh:
export LANG=ru_UA.UTF-8
export LC_COLLATE=C
/etc/profile.d/lang.csh:
setenv LANG=ru_UA.UTF-8
setenv LC_COLLATE=C
Первый вызывается при запуске bash (sh и аналогичных) в качестве регистрационной оболочки (login shell), второй — при запуске csh (tcsh) и аналогичных. Из profile.d/ вызываются сценарии только с установленным битом исполнения.
Нетрудно догадаться, что выбором параметров локали управляют всего лишь переменные окружения. Подробнее см. «man locale».
Посмотреть текущее окружение на предмет указанных переменных несложно при помощи:
declare | grep '^LANG\|^LC_'