LinuxForum.Fans
Тема

Кирилизация

Автор: semiono 13 сообщений 2903 просмотров
#297691

Простой вопрос, как переключатся EN/RU в bash?
Столько всего написано и ничего не понятно.
Всюду с иксами, какие иксы, когда я в голой консоли.
Вот нашёл текст http://lib.ru/unixhelp/fonty.txt стока написанно афигеть!
И, кстати, поставил Opera из портов CRUX и в ней html весь иероглифами, хотя в Firefox нормально всё.
Что за путаница с этими шрифтами и локалями, объясните по нормальному?

text
#
# /etc/profile: system-wide defaults for bash(1) login shells
#

export LESSCHARSET="latin1" export LESS="-R" export CHARSET="ISO-8859-5" export PS1="\[\033[1m\]\\$ \[\033[0m\]" export PS2="\[\033[1m\]> \[\033[0m\]" export LANG=ru_RU.utf8

text
#
# /etc/rc.conf: system configuration
#

FONT=LatArCyrHeb-14 KEYMAP=ru-utf TIMEZONE=UTC HOSTNAME=host #SYSLOG=sysklogd SERVICES=(net)

# End of file

И, кстати, ~/.fluxbox/startup игнорируется, тоже необъяснимое явление!
Так что setxkbmap -layout "us,ru" -option "grp:ctrl_shift_toggle,grp_led:scroll" некуда добавить.

_forum.lafox.net/index.php?showtopic=8571

#297699
"semiono" написал:
setxkbmap -layout "us,ru" -option "grp:ctrl_shift_toggle,grp_led:scroll" некуда добавить.

Это как раз определяет конфигурацию раскладок клавиатуры в иксах. У меня проживает в /etc/X11/xorg.conf.d/90-keyboard-layout.conf. Для того, чтобы переключались раскладки в консоли, нужно выбрать файл keymap - раскладки клавиатуры и шрифт с символами русских букв:

Показать
text
$ cat /etc/rc.d/rc.keymap
#!/bin/sh

# Load the keyboard map. More maps in /usr/share/kbd/keymaps. KEYMAP="ruwin_ct_sh-UTF-8.map.gz" if [ -x /usr/bin/loadkeys ]; then echo "Loading keyboard layout: $KEYMAP, CTRL+SHIFT for toggle." /usr/bin/loadkeys $KEYMAP; fi $ cat /etc/rc.d/rc.font #!/bin/sh # # This selects your default screen font from among the ones in # /usr/share/kbd/consolefonts. # #setfont -v unicode_start cyr-sun16.psfu.gz for i in {1..6}; do echo -ne "\033%G" > /dev/tty$i; done

#297921

Я правильно понимаю?
loadkeys ruwin_ct_sh-UTF-8.map.gz

bash об этом знает из конфига /etc/rc.d/rc.keymap
...причём это больше похоже на скрипт чем на конфиг,
у меня этих файлов даже не было, поэтому спрашиваю.

а шрифт bash здесь смотрит /etc/rc.d/rc.font

Впринципе понятно, только привыкнуть надо.

#297932
"semiono" написал:
у меня этих файлов даже не было

Это Slackware-specific стартовые скрипты. Они выполняются на завершающей стадии загрузки системы.

#298074

Что-то не пошло, unicode_start cyr-sun16.pcfu.gz пишет, невозможно открыть файл. Может это связано с сборкрой ядра?
Раньше у меня получалось даже простым редактированием rc.conf. Шрифт есть, я проверял. И даже с указанием пути не работает,
хотя я думаю путь по-умолчание всегда указан.
Вот теперь и нельзя понять работают ли Slackware-specific стартовые скрипты, хотя я думаю они поддерживаются CRUX,
может быть только /rc.d не обязательно.

#298082

Покажите

text
find /usr/share/kbd/keymaps -name cyr-sun16.psfu.gz 

и увидите, что файла действительно нет. Положите его туда, и все. Взять можно [url=ftp://mirror.yandex.ru/slackware/slackware-14.0/source/a/kbd/sources/kbd-1.15.3.tar.xz]отсюда[/url].
PS. В тарболе шрифт лежит несжатым, поэтому после распаковки шрифта нужно его сжать:

text
gzip -9 cyr-sun16.psfu
#299104

Ещё раз про русификацию...
1. Мне нужно только переключение русского в клавиатуре.
2. Читать русские тексты и названия файлов по русски.

3. Но вот то, что у меня в mc начинает писать в колонках "январь", это мне совершенно не хочется,
и сообщения из консоли я тоже хочу оставить английскими.

4. Установил Opera и там совершенно нельзя страницы читать, всё в иероглифах, хотя менял кодировки внутри приложения.
При этом в Firefox всё чётко..

5. Какие кодировки необходимо включить в сборку ядра?

И до меня туго что-то доходит что такое локаль. Вот видимо локаль мне нужна английская как раз

#299109

Раскладку в консоли зделал!
# nano /etc/rc.local

text
/usr/bin/unicode_start cyr-sun16.psfu.gz
/usr/bin/loadkeys ruwin_alt_sh-UTF-8.map.gz

Но русские имена файлов не вижу ????????????.txt
Как сгенерировать локаль, чтоб видеть только то, что не видно, а не всё подряд на русском?

#299134
"semiono" написал:
Но русские имена файлов не вижу

В консоли?
Последней строчки недостаточно, смотрите пример rc.font в сообщении №3. Кроме того, нужно:
1) чтобы в ядре было:

text
yars@localhost:~$ zgrep -i utf8 /proc/config.gz 
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_UTF8=y
yars@localhost:~$ 

2) по причине (1) нужно передавать ядру при загрузке параметр:

text
yars@localhost:~$ grep -e "^append" /etc/lilo.conf
append=" vt.default_utf8=1"
yars@localhost:~$ 

3) Нужно привести к следующему виду файл

Показать
text
yars@localhost:~$ cat /etc/profile.d/lang.sh 
#!/bin/sh
# Set the system locale.  (no, we don't have a menu for this ;-)
# For a list of locales which are supported by this machine, type:
#   locale -a

# en_US is the Slackware default locale: export LANG=ru_RU.UTF-8

# 'C' is the old Slackware (and UNIX) default, which is 127-bit # ASCII with a charmap setting of ANSI_X3.4-1968. These days, # it's better to use en_US or another modern $LANG setting to # support extended character sets. #export LANG=C

# There is also support for UTF-8 locales, but be aware that # some programs are not yet able to handle UTF-8 and will fail to # run properly. In those cases, you can set LANG=C before # starting them. Still, I'd avoid UTF unless you actually need it. #export LANG=en_US.UTF-8

# Another option for en_US: #export LANG=en_US.ISO8859-1

# One side effect of the newer locales is that the sort order # is no longer according to ASCII values, so the sort order will # change in many places. Since this isn't usually expected and # can break scripts, we'll stick with traditional ASCII sorting. # If you'd prefer the sort algorithm that goes with your $LANG # setting, comment this out. export LC_COLLATE=C

# End of /etc/profile.d/lang.sh

P.S. Это все Slackware-специфично!

#299152

"yars" написал:
2) по причине (1) нужно передавать ядру при загрузке параметр:
Уже довольно давно не нужно, точнее нужно в обратном случае, когда консоль нужна неюникодная (vt.default_utf8=0). Начиная с версии ядра 2.6.24 консоль по умолчанию в utf8, до этой версии -- однобайтовая.
#299160

"semiono" написал:
Но русские имена файлов не вижу ????????????.txt
А вот тут на самом деле только 2 варианта:
1) использовать кодировку локали как в именах файлов локальной файловой системы
2) перекодировать имена файлов локальных ФС в используемую кодировку локали (см. convmv для облегчения задачи).

Если для "чужих" ФС, например, NTFS или сетевых SMB, драйверы предусматривают параметры, позволяющие привести их кодировку в кодировку хоста в целях обеспечения совместимости, то для родных ФС эта задача явно лишняя.
Для определения кодировки имён на ФС можно пофильтровать вывод ls через iconv:
text

$ ls *.txt | iconv -f koi8r
$ ls *.txt | iconv -f iso-8859-5
$ ls *.txt | iconv -f cp1251
$ ls *.txt | iconv -f cp866
$ ls *.txt | iconv -f utf8

или прикинуть по кодам символов:

text

$ ls | hexdump -C
Войдите или зарегистрируйтесь, чтобы ответить.