1 (12.05.2013 19:40:17 отредактировано slacker0)

Здравствуйте! Вопрос в следующем. Требуется возможность давать названия файлам (и соответственно видеть имена уже имеющихся) в кириллице, в нормальном читаемом виде.

Уточню. Не требуется руссификация всей системы "от и до", система специально не руссифицировалась и меня это устраивает. Нужно только лишь получить возможность в ФМ (Thunar, Dolphin, MC) давать файлам кириллические имена (и видеть в кириллице имена имеющихся файлов). Кроме того думаю, что невозможность получить читаемый текст в Vim-e (даже сменой кодировок штатными средствами), точнее в Gvim-е также связанв с с описанным обстоятельством. Ну и mcedit таже история при попытке просмотреть простой текстовый файл содержащий кириллицу.

Я бы мог руссифицировать систему и проблема бы возможно решилась, но мне нужно только то что я написал, где именно это настраивается? Для того, чтобы вам, возможно, легче было вникнуть, привожу рабочий способ руссификации целевой ОС - Slackware 14.0, опустил только руссификацию man-страниц, приглашения  в LILO, сюда это явно не относится.

1) /etc/rc.d/rc.font

#!/bin/sh
setfont -v Cyr_a8x16.psfu.gz
for i in 1 2 3 4 5 6;do
echo -ne "\033%G" >/dev/tty$i
done
chmod +x rc.font

2) /etc/profile.d/lang.sh

#!/bin/sh
export LANG=ru_RU.UTF-8
export LC_COLLATE=C
chmod +x lang.sh

3) /etc/profile.d/lang.csh

#!/bin/csh
setenv LANG=ru_RU.UTF-8
setenv LC_CTYPE=ru_RU.UTF-8
setenv LC_NUMERIC=ru_RU.UTF-8
setenv LC_TIME=ru_RU.UTF-8
setenv LC_COLLATE=C
setenv LC_MONETARY=ru_RU.UTF-8
setenv LC_MESSAGES=ru_RU.UTF-8
setenv LC_PAPER=ru_RU.UTF-8
setenv LC_NAME=ru_RU.UTF-8
setenv LC_ADDRESS=ru_RU.UTF-8
setenv LC_TELEPHONE=ru_RU.UTF-8
setenv LC_MEASUREMENT=ru_RU.UTF-8
setenv LC_IDENTIFICATION=ru_RU.UTF-8
setenv LESSCHARSET=UTF-8
setenv LC_COLLATE C
chmod +x lang.csh

Добавлено только переключение rus-en так.
Копируем файл /usr/share/X11/xorg.conf.d/90-keyboard-layout.conf в /etc/X11/xorg.conf.d/ и правим копию

Option "XkbLayout" "us,ru"
Option "XkbOptions" "grp:lwin_toggle,
grp_led:scroll,terminate:ctrl_alt_bksp"

====================================|
У меня было предположение, что это может настраиваться  в /etc/fstab, но информация в этом плане относится к именам на разделах с FAT/NTFS...
Или может стоит воспользоваться convmv? Но тогда придется постоянно конвертировать. Кроме того, содержимое файлов, насколько я знаю, он не конвертирует.
====================================|

Подскажите пожалуйста.

2

Для задачи

slacker0⇓ пишет:

Нужно только лишь получить возможность в ФМ (Thunar, Dolphin, MC) давать файлам кириллические имена (и видеть в кириллице имена имеющихся файлов).

достаточно установленной переменной окружения LANG, а в консоли -- дополнительно корректного rc.font.
Если есть сведения, что не помогает, описывайте подробнее, что не выходит.

ps. В /etc/fstab настраиваются перекодировки чужих ФС. Перекодировки линуксовых ФС не настраиваются нигде, считается, что кодовая страница имён должна соответствовать кодировке локали. Поэтому, если диск был раньше подключен к системе, использовавшей кодировку KOI8-R, то и имена файлов на родных ФС будут использовать эту кодировку, попытка просмотреть их в системе с локалью UTF-8 приведёт к выводу "кракозябр" у имён за пределами английской части ASCII. Для переноса таких ФС в систему с другой локалью требуется перекодирование/переименование файлов, convmv в помощь.

3 (12.05.2013 19:38:31 отредактировано slacker0)

slacker0⇓ пишет:

3) /etc/profile.d/lang.csh

#!/bin/csh
setenv LANG=ru_RU.UTF-8

bormant, разве приведенная строчка ее не устанавливает?

bormant⇓ пишет:

а в консоли -- дополнительно корректного rc.font.

Приведенный мной выше некорректен?

При попытке создать пустой файл в Thunar при даче ему названия в кириллице, появляется предупреждение: "Cannot convert filename "кириллическое имя" to the local encoding. Invalid byte sequence in convertion input." Файл не создается.
При реализации той же попытки в Dolphin файл создается, но с именем "??????".

4

slacker0 пишет:

У меня есть предположение, что это может настраиваться  в /etc/fstab...

Ну, там можно некоторым типам файловых систем приписать опции типа utf8, iocharset=, conv=, читайте man mount.
А чтобы интерфейс остался английским, достаточно в lang.sh оставить все по умолчанию, изменить только настройки раскладки клавиатуры и шрифта в консоли и раскладки клавиатуры в иксах ab
P.S. Ваше руководство  практически повторяет http://linuxforum.ru/viewtopic.php?id=19691.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

5

Приведенная строчка отработает только если у пользователя шеллом является csh. Для bash и всего семейства отрабатывает /etc/profile.d/lang.sh.

Пакет glibc-i18n установлен?

Фраза "Invalid byte sequence in convertion input" наводит мысль на неправильную раскладку клавиатуры, то есть ввод производится в какой-то другой кодировке, которая не является корректной последовательностью в UTF-8.

6

yars⇓ пишет:

P.S. Ваше руководство  практически повторяет [HOWTO] Русификация Slackware.

Ну, это скорее просто тот вариант, который на моей системе дал 100-процентный результат. ag Многое другое из того что я применял работало криво. И само сабой я не собирался вас учить. Просто мне показалось, что не особо искушенным в вопросе было бы так легче в него вникнуть.
И да, информацию по руссификации я искал когда-то именно на этом форуме и именно он мне наиболее помог.

7

bormant⇓ пишет:

достаточно установленной переменной окружения LANG, а в консоли -- дополнительно корректного rc.font.

То есть иными словами достаточно нижеуказанного?

slacker0⇓ пишет:

1) /etc/rc.d/rc.font

#!/bin/sh
setfont -v Cyr_a8x16.psfu.gz
for i in 1 2 3 4 5 6;do
echo -ne "\033%G" >/dev/tty$i
done

chmod +x rc.font

2) /etc/profile.d/lang.sh

#!/bin/sh
export LANG=ru_RU.UTF-8
export LC_COLLATE=C

chmod +x lang.sh

И объясните пожалуйста назначение строчки

export LC_COLLATE=C

8

slacker0⇓ пишет:

И объясните пожалуйста назначение строчки

export LC_COLLATE=C

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.

Ну, не дословно, но смысл вроде передал ab
«Односторонний эффект новых локалей в том, что порядок сортировки не соответствует значениям кодовой таблицы ASCII, поэтому он изменится при изменении локали. Поскольку это поведение неожиданно и может прервать выполнение скриптов, мы используем традиционную ASCII-сортировку. Если же вы хотите, чтобы порядок сортировки соответствовал вашей настройке $LANG, закомментируйте эту строку.»

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

9

"One side effect ..." -- Один из побочных эффектов ...

Или в целом:

Одним из побочных эффектов новых локалей является то, что порядок сортировки больше не соответствует значениям ASCII, поэтому меняется во многих местах.  Поскольку это может стать неожиданным и способно поломать сценарии, мы используем традиционную сортировку ASCII.  Если предпочитаете сортировку согласно  вашему значению $LANG, закомментируйте эту строку.

10

Спасибо, большое спасибо.
С удоволльствием почитал содержимое lang.sh, выдержку из которого вы мне привели.
Сделал сначала так:

slacker0⇓ пишет:

1) /etc/rc.d/rc.font

#!/bin/sh
setfont -v Cyr_a8x16.psfu.gz
for i in 1 2 3 4 5 6;do
echo -ne "\033%G" >/dev/tty$i
done

chmod +x rc.font

2) /etc/profile.d/lang.sh

#!/bin/sh
export LANG=ru_RU.UTF-8
export LC_COLLATE=C

chmod +x lang.sh

Строка

export LC_COLLATE=C

уже была в файле и раскомментирована, так что добавлять ее не пришлось. Добавил только первую строку. Но это русифицировало, как оказалось, и весь интерфейс. Поэтому я закомментировал добавленное и строку

export LANG=en_US

и раскомментил строку

export LANG=en_US.UTF-8

Это решило проблему - кириллические имена файлов стали отображаться соответсвующе, а интерфейс остался на инглише.

Единственное, остался вопрос, я просто уже не стал проверять, если бы я не внес изменения в rc.font, а внес бы только в lang.sh, ну те что описал, эффект был бы тот же или без установки кириллического шрифта в систему (а именно это я так понял делают директивы в rc.font) изменения кодовой таблицы в lang.sh не возымели бы действия?

11

Они в любом случае действуют, но без rc.font в консоли вы увидите крякозавры вместо русских букв. К настройкам иксов  этот файл не имеет отношения, у них собственные настройки. А без rc.keymap вы не сможете набирать в консоли русские буквы.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580