Выбор системной локали

заглянув в 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 :( - где взять?

у меня кстати то же нет

у меня кстати то же нет

.

Spoiler написал(а):
откуда берутся сразу две русские локали

Смотрим в /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:

/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/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

Покажи:

equery l eselect

.

$ equery l eselect
[ Searching for package 'eselect' in all categories among: ]
 * installed packages
[I--] [ ~] app-admin/eselect-1.2.14 (0)
[I--] [ ~] app-admin/eselect-boost-0.3 (0)
[I--] [  ] app-admin/eselect-ctags-1.13 (0)
[I--] [  ] app-admin/eselect-fontconfig-1.0 (0)
[I--] [  ] app-admin/eselect-mesa-0.0.9 (0)
[I--] [ ~] app-admin/eselect-opengl-1.2.1 (0)
[I--] [ ~] app-admin/eselect-python-20100321 (0)
[I--] [  ] app-admin/eselect-ruby-20100603 (0)
[I--] [  ] app-admin/eselect-timidity-20061203 (0)
[I--] [  ] app-admin/eselect-vi-1.1.7-r1 (0)
[I--] [  ] app-admin/eselect-wxwidgets-1.4 (0)

а эта строка - это просто подпись

спасибо, а еще equery b

спасибо, а еще

equery b /usr/share/eselect/modules/locale.eselect

.

$ equery b /usr/share/eselect/modules/locale.eselect
[ Searching for file(s) /usr/share/eselect/modules/locale.eselect in *... ]
app-admin/eselect-1.2.14 (/usr/share/eselect/modules/locale.eselect)

а эта строка - это просто подпись

спасибо, понятно стало - в

спасибо, понятно стало - в стабильном еселекте нет локалей

Spoiler написал(а): ...При

Spoiler написал(а):
...При этом имеем
в /etc/env.d/02locale:
LANG=ru_RU.UTF-8
LC_ALL=ru_RU.UTF-8
LC_NUMERIC=POSIX

Ваша проблема от того, что LANG в /etc/env.d/02locale ручками меняли, а надо через

eselect locale set 4 (для ваших конфигов)

- тогда все будет нормально!

n0nado написала: Вопрос...

n0nado написал(а):
Вопрос к "locale -a" исследуйте сами. Мне лень

Экая вы язва :-) Это мне как-бы по мотивам наших споров? Да будет вам, уж помогите разобраться с этим до самой до виктории, а к идеологическим разногласиям вернёмся позже... ;-) Впрочем, в любом случае спасибо за уже сделанное (путь-то вы указали), tnx!

SysA написал(а):
Ваша проблема от того, что LANG в /etc/env.d/02locale ручками меняли, а надо через eselect locale set 4

Дык менял я это во времена незапамятные ещё при установке (в соответствии с хэндбуком). И коль скоро теперь появилась возможность более системного подхода к данному вопросу - 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 написала:...

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. Теоретически между теорией и практикой разницы нет, но на практике нет ничего общего.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".