Выбор системной локали
Spoiler 19 февраля, 2011 - 20:03
заглянув в eselect locale list, с удивление увидел выхлоп:
Available targets for the LANG variable:
[1] C
[2] en_US.utf8
[3] POSIX
[4] ru_RU.utf8
[5] ru_RU.UTF-8 *
[ ] (free form)
откуда берутся сразу две русские локали, и какая из них кошерная? При этом имеем
в /etc/env.d/02locale:
LANG=ru_RU.UTF-8
LC_ALL=ru_RU.UTF-8
LC_NUMERIC=POSIX
в /etc/locale.gen:
ru_RU.UTF-8 UTF-8
en_US.UTF-8 UTF-8
в /etc/make.conf:
LINGUAS=ru
Может, надо везде поменять хэндбуковское значение UTF-8 на utf8?
»
- Для комментирования войдите или зарегистрируйтесь
А у меня вообще нет eselect
А у меня вообще нет eselect locale :( - где взять?
у меня кстати то же нет
у меня кстати то же нет
.
Смотрим в /usr/share/eselect/modules/locale.eselect
Видим, что список получается из "locale -a"
а текущая - из "LANG" в /etc/env.d/02locale
Так как "locale -a" возвращает ru_RU.utf8,
а LANG="ru_RU.UTF-8"
то всего две.
Вопрос к "locale -a" исследуйте сами. Мне лень. ^_^
P.S. вопрос к SysA и maxt - у вас разве не так:
$ equery files eselect | grep modules /usr/share/eselect/modules /usr/share/eselect/modules/bashcomp.eselect /usr/share/eselect/modules/binutils.eselect /usr/share/eselect/modules/editor.eselect /usr/share/eselect/modules/env.eselect /usr/share/eselect/modules/kernel.eselect /usr/share/eselect/modules/locale.eselect /usr/share/eselect/modules/modules.eselect /usr/share/eselect/modules/news.eselect /usr/share/eselect/modules/pager.eselect /usr/share/eselect/modules/profile.eselect /usr/share/eselect/modules/rc.eselect /usr/share/eselect/modules/visual.eselect
а эта строка - это просто подпись
He: /usr/share/eselect/modul
He:
Покажи:
.
а эта строка - это просто подпись
спасибо, а еще equery b
спасибо, а еще
.
а эта строка - это просто подпись
спасибо, понятно стало - в
спасибо, понятно стало - в стабильном еселекте нет локалей
Spoiler написал(а): ...При
Ваша проблема от того, что LANG в /etc/env.d/02locale ручками меняли, а надо через
- тогда все будет нормально!
n0nado написала: Вопрос...
Экая вы язва :-) Это мне как-бы по мотивам наших споров? Да будет вам, уж помогите разобраться с этим до самой до виктории, а к идеологическим разногласиям вернёмся позже... ;-) Впрочем, в любом случае спасибо за уже сделанное (путь-то вы указали), tnx!
Дык менял я это во времена незапамятные ещё при установке (в соответствии с хэндбуком). И коль скоро теперь появилась возможность более системного подхода к данному вопросу - no problem (eselect рулеzzz!), но вот что-то страхово как-то (типа, очкую я :-)) - не нравится мне это разночтение названий локали, непонятно - what is true. Гугль реагирует довольно противоречиво - IANA рекомендует имя UTF-8 (да и яве оно нравится), а вот перл вроде как utf8 хочет...
И есть у меня ещё один смежный вопрос - надо ли в /etc/locale.gen указывать en_US.UTF-8 при уже имеющемся ru_RU.UTF-8 - не является ли в данном случае английский харсет просто подмножеством русского, как это выполнялось (ЕМНИП по временам программирования под DOS) для ASCII и windows-1251, ISO_8859-1 и ISO_8859-5?
Мы тоже не всего читали Шнитке!.. © В. Вишневский
.
Ммм... мне лень по другой причине - у меня принципиальная позиция не чинить то, что не сломалось.
а эта строка - это просто подпись
n0nado написала:...
Начинаю проникаться женской логикой :-)
1. Обозначиться (возбудить интерес)
2. Обломить (усилить интерес)
3. Пококетничать (возможны варианты)
:-) Шутка юмора. Всё равно спасибо за помощь
Мы тоже не всего читали Шнитке!.. © В. Вишневский
:)
Раз уж у вас такая актуальная тема поднята....
вот задачка!
Дано :) :
Gentoo ~ # grep -v ^# /etc/locale.gen
ru_RU UTF-8
en_US UTF-8
en_US ISO-8859-1
en_US.UTF-8 UTF-8
ru_RU.CP1251 CP1251
ru_RU.KOI8-R KOI8-R
ru_RU.UTF-8 UTF-8
Gentoo ~ # locale-gen
* Generating 7 locales (this might take a while) with 1 jobs
* (1/7) Generating ru_RU.UTF-8 ... [ ok ]
* (2/7) Generating en_US.UTF-8 ... [ ok ]
* (3/7) Generating en_US.ISO-8859-1 ... [ ok ]
* (4/7) Generating en_US.UTF-8 ... [ ok ]
* (5/7) Generating ru_RU.CP1251 ... [ ok ]
* (6/7) Generating ru_RU.KOI8-R ... [ ok ]
* (7/7) Generating ru_RU.UTF-8 ... [ ok ]
* Generation complete
Gentoo ~ # grep -v ^# /etc/conf.d/keymaps
keymap="-u ru"
windowkeys="YES"
extended_keymaps=""
dumpkeys_charset="koi8-r"
fix_euro="NO"
Gentoo ~ # grep -v ^# /etc/conf.d/consolefont
consolefont="Cyr_a8x16"
consoletranslation="cp866_to_uni"
Gentoo ~ # grep -v ^# /etc/env.d/02locale
LC_NUMERIC="C"
LANG="ru_RU.UTF-8"
LC_ALL=""
Gentoo ~ # eselect locale list
Available targets for the LANG variable:
[1] C
[2] POSIX
[3] en_US
[4] en_US.iso88591
[5] en_US.utf8
[6] ru_RU
[7] ru_RU.cp1251
[8] ru_RU.koi8r
[9] ru_RU.utf8
[10] ru_RU.UTF-8 *
[ ] (free form)
Gentoo ~ # locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
Итого, старая магия опять не работает.
02locale какбы нет, LANG пустой.
если коннектицца putty с кодировкой UTF8, то русский по ctrl-shift работает, но при backspace'e стирает даже приглашение, mc- кракозябрами. (хххххххх qqqqqqqqqqq)
в rc.conf'е unicode="YES"
_____________________________________
Пока рассказывал - разобрался:
Gentoo ~ # locale -a
C
en_US
en_US.iso88591
en_US.utf8
POSIX
ru_RU
ru_RU.cp1251
ru_RU.koi8r
ru_RU.utf8
Как видим, ru_RU.UTF-8 вообще нет есть только ru_RU.utf8
Gentoo ~ # eselect locale set 9
тоесть ru_RU_UTF8 БЕЗ тире (выше есть лист локалей)
он прописался сам в 02locale, после ребута - все кошерно, лишние символы не стираются!
только баш отжигает:
Gentoo ~ # дщсфду -ф
-bash: $'\320\264\321\211\321\201\321\204\320\264\321\203': команда не найдена
итого - Стало:
Gentoo ~ # locale
LANG=ru_RU.utf8
LC_CTYPE="ru_RU.utf8"
LC_NUMERIC=C
LC_TIME="ru_RU.utf8"
LC_COLLATE="ru_RU.utf8"
LC_MONETARY="ru_RU.utf8"
LC_MESSAGES="ru_RU.utf8"
LC_PAPER="ru_RU.utf8"
LC_NAME="ru_RU.utf8"
LC_ADDRESS="ru_RU.utf8"
LC_TELEPHONE="ru_RU.utf8"
LC_MEASUREMENT="ru_RU.utf8"
LC_IDENTIFICATION="ru_RU.utf8"
LC_ALL=
Gentoo ~ # grep -v ^# /etc/env.d/02locale
LC_NUMERIC="C"
LANG="ru_RU.utf8"
LC_ALL=""
Кстати кто сталкивался.... mc
Кстати кто сталкивался....
mc всетаки вместо символов псевдографики отрисовывает горизонтали как ххххххххххххххххххххх а вертикали qqqqqqqqqqqqqqqqqqqqqqq
Это через putty смотреть если (в настройках utf8).
Это глюк cp866_to_uni ?
Хочу дополнить ответ n0nado,
Хочу дополнить ответ n0nado, т. к. сам интересовался различием наименований локалей. Вариант ru_RU.utf8 - это псевдоним для ru_RU.UTF-8, прописанный в файле /usr/share/X11/locale/locale.alias. Так что не повторяйте царящее в Сети заблуждение (мол, при ошибках с локализацией надо менять utf8 на UTF-8 либо наоборот) и несите свет в массы! :)
Это не заблуждение. Некоторые
Это не заблуждение. Некоторые программы, довольно хреново реагируют на прямое название локали - ru_RU.utf8 (помоему относится к java-программам, но сразу не скажу). Ктомуже, оно может меняться в зависимости от набора установленных локалей. Правильный и наименее глючный вариант - ru_RU.UTF-8. Точно также, из-за бага в Qt если не выставить LC_ALL= а только LANG= будут глюки с локализацией.
P.S. Теоретически между теорией и практикой разницы нет, но на практике нет ничего общего.