Общие вопросы русификации и локализации. (Кодировки, раскладки, шрифты, русификация печати.)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

malor
Сообщения: 335

Общие вопросы русификации и локализации.

Сообщение malor »

1.Чем отличаются kbd и consoletools? Причины перехода(или неперехода) от одной из них к другой(в разных дистрах).
2. В каких случаях драйвер текстового режима определяет, что ему нужно работать в режиме UTF или в байтовом режиме?
3.Что представляет из себя таблица перекодировки символов ACM(Application Charset Map)?
4. Зачем среди четырех таблиц перекодировки ACM в ядре нужны 437 кодовая страница IBM(cp437), таблица для набора символов терминала DEC VT100(vt100)?
5. Консольный драйвер, экранный драйвер, драйвер терминала - синонимы?
6. Если в файл вводятся символы разных языков, то как потом приложение получая последовательности байт с носителя(хард, компакт etc) распознает какие байты в символы какого языка отображать?
7. Что задает переменная LC_LANG в локали? Формат вывода чего?
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: Общие вопросы русификации и локализации.

Сообщение alv »

1) именами команд и наборами опций
причины - чисто исторические
2) внутреннее представление символов в Линуксовой консоли - 16-битное, 8-битный режим лишь эмулируется
3) именно это из себя и представляет :)
4) cp437 обеспечивает адекватный вывод псевдографики; в любом чарсете, таковой предполагающем, символы псевдографики должны быть на тех же местах, что и в cp437
сомневающимся - просьба смотреть на mc при экранном выводе в cp1251 (по предоставлении справки от невропатолога о полной психологической устойчивости)
vt100 - тип терминала, эмулируемый всеми консольными драйверами (не только линуксовым)
5) кроме первого, с остальными не сталкивался; это в переводе? если да, нужно смотреть контекст оригинала
6) приложение никаких языков не распознает; вывод на экран (если это имелось ввиду) осуществляется в соответствие с экранным шрифтом и картой соответствия; язык тут не при чем вообще
7) LC_LANG определяет все остальные локально зависимые переменные, но, в отличие от LC_ALL, не запрещает в переопределить каждую из них отдельно (например, указать вывод сообщений по аглицки для нелюбителей ридной мовы, определить десятичную точку вместо запятой и т.д.)

PS часть из затронутых вопросов освящена здесь:
http://posix.ru/system/linux_console/
Спасибо сказали:
malor
Сообщения: 335

Re: Общие вопросы русификации и локализации.

Сообщение malor »

alv писал(а):
22.07.2006 22:12
2) внутреннее представление символов в Линуксовой консоли - 16-битное, 8-битный режим лишь эмулируется
Что в чего необходимость возникает перекодировать с помощью ACM? Вот идет на консольный драйвер поток байтов в кодировке ASCII(подразумевается cp866?), остается только перекодировать их с помощью алгоритма UTF в UNICODE, обратится к SFM-файлу и выдать изображение символов.
alv писал(а):
22.07.2006 22:12
5) кроме первого, с остальными не сталкивался; это в переводе? если да, нужно смотреть контекст оригинала
"экранный драйвер" - Костромин "Linux для пользователя", стр. 318.
Выражение "драйвер терминала" везде в нете,
например:http://www.citforum.ru/operating_systems/linux/HOWTO/Text-Terminal-HOWTO-14.shtml
alv писал(а):
22.07.2006 22:12
6) приложение никаких языков не распознает; вывод на экран (если это имелось ввиду) осуществляется в соответствие с экранным шрифтом и картой соответствия; язык тут не при чем вообще
Допустим, есть некий текстовой файл, содержимое которого - смесь русского и английского(кириллицы и латиницы) на каком этапе и кем решается каким образом(рус/англ) отображать очередной считываемый байт на экране?
alv писал(а):
22.07.2006 22:12
7) LC_LANG определяет все остальные локально зависимые переменные, но, в отличие от LC_ALL, не запрещает в переопределить каждую из них отдельно (например, указать вывод сообщений по аглицки для нелюбителей ридной мовы, определить десятичную точку вместо запятой и т.д.)
Все остальные - это какие например?
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: Общие вопросы русификации и локализации.

Сообщение alv »

2) не все шрифты имеют встроенную SFM-таблицу
и потом, SFM и ACM - это из разных пакетов управления консолью (одна - из kbd, вторая - из console-tools)

5) Костромин часто занимается словтворчеством, экранного драйвера нет, есть драйвер консоли Линукс; а в BSD-системах, например, можно использовать разные драйвера консоли - syscons (умолчание FreeBSD), wscons, и так далее
во втором случае, видимо, имеется ввиду драйвер конкретного терминального устройства - вчитываться лень, честно говоря

6) русские и английские символы имеют разные коды в любой кодовой таблице :)

7)
$ locale
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
любая из этих переменных может быть изменена независимо
например, если Вы не любите русских сообщений, определяется:
export LC_MESSAGES="POSIX"
Спасибо сказали:
malor
Сообщения: 335

Re: Общие вопросы русификации и локализации.

Сообщение malor »

alv писал(а):
23.07.2006 14:57
2) не все шрифты имеют встроенную SFM-таблицу
А что у них есть за место sfm-таблицы? Как изображение символа получать?

Цитаты из "Заметки о Linux-консоли Украшение консоли"
"Полная коллекция кириллических экранных шрифтов включает наборы для всех традиционных кодировок Великого и Могучего, получивших распространение на родных просторах - DOS, Windows, KOI8, ISO8859-5, которые опознаются по именам шрифтовых файлов."
Какая связь между шрифтами и кодировками? Какая разница каким шрифтом изображать буквы закодированные в компе с помощью различных кодировок(cp866,cp1251,koi8,ISO8859-5)? Как шрифт может быть привязан к кодировке(учитывая, что все - кириллические)?

"$ setfont UniCyr-sans
Указанной команды достаточно, если мы работаем в режиме trivial, и притом только с одной и той же кодировкой ввода и вывода. На практике же в наших условиях такого почти не бывает - для вывода используется кодировка DOS, для ввода - обычно KOI8-R (или CP1251)."
Речь о вводе с чего? С клавиатуры?
alv писал(а):
23.07.2006 14:57
7)
$ locale
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
любая из этих переменных может быть изменена независимо
например, если Вы не любите русских сообщений, определяется:
export LC_MESSAGES="POSIX"
Какой смысл присутствия переменной LANG? Мы можем их разом все конвертануть во что угодно, написав команду export LC_ALL, где LC_ALL=то_что_надо. Если кто-то что-то не любит, то как вы написали, он это изменит личным обращением к нужной переменной. В чем польза LANG?
Спасибо сказали: