Страница 1 из 1

Локализация FreeBSD 8

Добавлено: 2010-02-05 15:25:55
Аркадий
Добрый день, уважаемые форумчане.
Весь день мучаюсь с локализацией во Фре 8.
Вобщем-то проблемы как таковой с локалью нет, украинский-русский текст вводится, читается и отображается в KOI8 как надо.
Проблемы начались когда я захотел оставить возможность читать и писать в консоли (gnome-terminal) по-русски, но всё остальное (язык системы и програм, время, числа и т.д.) что бы было на англицком. Мне нужен русский в консоли только что бы работать с кириллистическим текстом (иногда приходится) и писать-читать в centerim и mutt. А так я не очень любли когда система и программы по-русски разговаривают, много корявого плохо переведённого текста, и мало пользы.
Я пробовал добится этого путём редактирования ~/.login_conf. Написал там следующее:

Код: Выделить всё

me:\
	:charset=KOI8-U:\
	:lang=uk_UA.KOI8-U:
        :lc_ctype="UA.KOI8-U":\
	:lc_collate="C":\
	:lc_time="C":\
	:lc_numeric="C":\
	:lc_monetary="C":\
	:lc_messages="C":\
	:lc_all="C":
	
После этого логинюсь и вижу, что

Код: Выделить всё

LANG=uk_UA.KOI8-U
LC_CTYPE="uk_UA.KOI8-U"
LC_COLLATE="uk_UA.KOI8-U"
LC_TIME="uk_UA.KOI8-U"
LC_NUMERIC="uk_UA.KOI8-U"
LC_MONETARY="uk_UA.KOI8-U"
LC_MESSAGES="uk_UA.KOI8-U"
LC_ALL=
Когда теже переменные экспортирую в шелл, то все работает как я и ожидаю, т.е. фря и программки говорят по-англицки, и в то же время можно везде читать-писать по-русски. Локаль выгядит так:

Код: Выделить всё

LANG=uk_UA.KOI8-U
LC_CTYPE="uk_UA.KOI8-U"
LC_COLLATE=C
LC_TIME=C
LC_NUMERIC=C
LC_MONETARY=C
LC_MESSAGES=C
LC_ALL=


Подскажиту, в чём может быть загвоздка? Почему из ~/.login_conf настройки не работают?

Re: Локализация FreeBSD 8

Добавлено: 2010-02-11 19:18:25
cloudsv
может у вас в /etc/login.conf еще данные указанны?

Re: Локализация FreeBSD 8

Добавлено: 2010-02-11 20:58:45
thefree
_http://paix.org.ua/freebsd/ru_utf8.html
_http://blog.aurorae.ru/2008/11/29/freebsd-utf-8/

Re: Локализация FreeBSD 8

Добавлено: 2010-02-13 20:32:53
Аркадий
cloudsv писал(а):может у вас в /etc/login.conf еще данные указанны?
Ничего не указано.
Но даже если указать в /etc/login.conf все переменные, то ситуация будет аналогичной - все переменные выставляются в такое же значение, в которое выставлена LANG, не зависимо от того, заданы они явно или нет.
thefree писал(а):_http://paix.org.ua/freebsd/ru_utf8.html
_http://blog.aurorae.ru/2008/11/29/freebsd-utf-8/
KOI8-U vs UTF-8
Найдите 10 отличий?!
Конечно, Вы возразите, мол суть от этого не меняется - подставляй себе в копипасту KOI8-U на место UTF-8 везде, где только можно, и вся недолга.
Однако, если бы Вы действительно интересовались жизнью проекта (FreeBSD) и хотя бы в пол-уха следили за новостями, то Вам бы было известно, что в 8й ветке FreeBSD (а ведь речь идёт именно про восьмёрку) поддержка юникода реализована на уровне ядра + xterm в качестве консоли (http : // lists.freebsd.org/pipermail/freebsd-current/2009-July/009351.html, http : // wiki.freebsd.org/SysconsUnicodeProject) - о, радость для любителей многобайтных "кодировок"! Впрочем, целесообразность юникода в консоле я оставляю на суд общественности, сам при этом оставаясь ярым противником подобных веяний. Ну ладно, если бы ещё просто многобайтная - так в ней ещё и символы переменной длины! Не говоря уже о том, что половина консольного софта ещё не умеет нормально с юникодом работать, а половина и не собирается уметь. И это не говоря о том, что многобайтный "текст" по определению уже не является текстом.
Вобщем, задели Вы меня за живое своими ссылками на юникодизацию локали. Впрочем, ничего общего с моим изначальным вопросом предложенная Вами информация не имеет.

Re: Локализация FreeBSD 8

Добавлено: 2010-02-14 14:30:02
skeletor
2Аркадий А если бы вы попробовали заставить нормально юникод в консоле, без установленной графики, то так бы не говорили. Попробуйте заставить одновременно работать UTF-8 в console single mode ,console multi-user mode, ssh, screen, mc. Вот тогда посмотрим, кого за что задели.

Re: Локализация FreeBSD 8

Добавлено: 2010-02-14 19:29:53
Аркадий
skeletor писал(а):2Аркадий А если бы вы попробовали заставить нормально юникод в консоле, без установленной графики, то так бы не говорили. Попробуйте заставить одновременно работать UTF-8 в console single mode ,console multi-user mode, ssh, screen, mc. Вот тогда посмотрим, кого за что задели.
Ну _на фига_ попу гармонь?!
Зачем мне на десктопе, где используются 3 языка (родной, государственный и английский) нужен юникод?
А в сингл мод то зачем вам русский?
И при чём тут с графикой или без графики? Особенно принимая во внимание, что данная ветка посвящена десктопам, что само по себе уже как бы намекает.
Для того, что бы не порождать очередной поток флуда на тему "а нужен ли нам вообще юникод", скажу коротко: лично я - против (не только в консоле но в и в иксах), но лишь до тех пор, пока без него можно хоть как-нибудь обойтись. Точка.
Случаи, когда нельзя обойтись можно легко представить. Например, интернациональный проект, когда на вашем сервачке должны одновременно работать китайцы, индусы, арабы, словяне, пиндосы, ахтунги и пр. И всем, ну вот непременно, обязательно нужны национальные языки и прочие наборы кошерных символов. Да, здесь уже от этих ваших юникодов никуда не денешься.
Но в быту...

Re: Локализация FreeBSD 8

Добавлено: 2010-02-14 19:41:51
Аркадий
Да, и на всякий случай напомню, что оригинальный вопрос звучал "почему не работают настройки из ~/.login_conf?".
А то что-то дискуссия уже совсем в другую степь уехала )

Re: Локализация FreeBSD 8

Добавлено: 2010-02-14 20:44:07
thefree
да мне ваши слова как то по боку я просто привел вам примеры установки ...

cap_mkdb

Re: Локализация FreeBSD 8

Добавлено: 2010-02-14 21:57:23
Аркадий
thefree писал(а):cap_mkdb
Не помогает.
Все переменные локали устанавливаются в такое же значение, в какое выставлен LANG. Не зависимо от того, определены они явно в ~/.login_conf или нет.
Т.е., если например написано LANG=uk_UA.KOI8-U, то и всё остальное (LC_TIME, LC_NUMERIC) тоже будут uk_UA.KOI8-U, пока не прописать их в окружение (из шелл конфига, например). Хотя по идее они должны из ~/.login_conf тоже подхватываться. Или нет?

Re: Локализация FreeBSD 8

Добавлено: 2010-02-14 22:40:14
thefree
я бы даже сказал обязаны работать, вы делали

Код: Выделить всё

cap_mkdb /etc/login.conf ~/.login.conf
?? да и добавить только надо

Код: Выделить всё

me:\
               :charset=KOI8-U:\
               :lang=uk_UA.KOI8-U:\
               :lc_ctype=uk_UA.KOI8-U:
да еще в /etc/login.conf в раздели default: надо закоментить charset и пере собрать базу

Re: Локализация FreeBSD 8

Добавлено: 2010-02-15 1:44:05
Аркадий
thefree писал(а):я бы даже сказал обязаны работать, вы делали

Код: Выделить всё

cap_mkdb /etc/login.conf ~/.login.conf
?? да и добавить только надо

Код: Выделить всё

me:\
               :charset=KOI8-U:\
               :lang=uk_UA.KOI8-U:\
               :lc_ctype=uk_UA.KOI8-U:
да еще в /etc/login.conf в раздели default: надо закоментить charset и пере собрать базу
Да, всё верно.
Вот так выглядит мой ~/.login.conf

Код: Выделить всё

me:\
    :charset=KOI8-U:\
    :lang=uk_UA.KOI8-U:\
    :lc_ctype=uk_UA.KOI8-U:\
    :lc_collate=C:\
    :lc_time=C:\
    :lc_numeric=C:\
    :lc_monetary=C:\
    :lc_messages=C:\
    :lc_all=C:
А вот так /etc/login.conf

Код: Выделить всё

default:\
    :passwd_format=md5:\
    :copyright=/etc/COPYRIGHT:\
    :welcome=/etc/motd:\
    :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\
    :path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin ~/bin:\
    :nologin=/var/run/nologin:\
    :cputime=unlimited:\
    :datasize=unlimited:\
    :stacksize=unlimited:\
    :memorylocked=unlimited:\
    :memoryuse=unlimited:\
    :filesize=unlimited:\
    :coredumpsize=unlimited:\
    :openfiles=unlimited:\
    :maxproc=unlimited:\
    :sbsize=unlimited:\
    :vmemoryuse=unlimited:\
    :swapuse=unlimited:\
    :pseudoterminals=unlimited:\
    :priority=0:\
    :ignoretime@:\
    :umask=022:
Профиль юзера - default. В /etc/profile пусто.
Делаю

Код: Выделить всё

cap_mkdb /etc/login.conf ~/.login.conf
, логинюсь и вижу

Код: Выделить всё

% locale
LANG=uk_UA.KOI8-U
LC_CTYPE="uk_UA.KOI8-U"
LC_COLLATE="uk_UA.KOI8-U"
LC_TIME="uk_UA.KOI8-U"
LC_NUMERIC="uk_UA.KOI8-U"
LC_MONETARY="uk_UA.KOI8-U"
LC_MESSAGES="uk_UA.KOI8-U"
LC_ALL=

Re: Локализация FreeBSD 8

Добавлено: 2010-02-15 1:48:47
Аркадий
's#~/.login.conf#.login_conf#g'

Re: Локализация FreeBSD 8

Добавлено: 2010-06-04 2:05:02
Гость
Аркадий, может уже и не в тему... Я решил аналогичную проблему так:
В login.conf LC_TIME и LC_MESSAGE необходимо объявить так:
setenv=LC_TIME=C,LC_MESSAGES=C:\

Re: Локализация FreeBSD 8

Добавлено: 2010-06-04 2:31:31
Гость
А, еще...
Если будете добавлять lang, LC_TIME и LC_MESSAGES в секцию default, а не russian (файл login.conf), обратите внимание, что строка, начинающаяся с :setenv уже существует, поэтому LC_TIME и LC_MESSAGES с соотв. значениями надо будет добавить через запятую к уже существующим переменным, объявленным с помощью setenv.