[Comm] [JT] Linux i18n

Alexej Kryukov =?iso-8859-1?q?akrioukov_=CE=C1_mail=2Eru?=
Вт Янв 25 17:56:18 MSK 2005


On Tuesday 25 January 2005 01:44, Alexey Rusakov wrote:
> Alexej Kryukov пишет:
>
> Простите, но я не очень понимаю, зачем для нескольких слов ставить
> целую немецкую/французскую/шведскую раскладку. Достаточно, зная о
> возможности подобного сценария, иметь на машине раскладку, если мне
> не изменяет память, us_intl 

Видите ли, поставить отдельную раскладку для каждого языка --
это, я бы сказал, более очевидное решение, ввиду чего именно
его приходится ждать от простого пользователя (встречал людей,
державших немецкую и французскую раскладку одновременно, хотя
немецкая позволяет вводить и французские аксаны также, а
французская при американской маркировке крайне неудобна).

Впрочем, у такого решения есть и свои плюсы: ведь национальная
раскладка -- это часть языковой культуры, которую при глубоком
знакомстве с данным языком имеет смысл освоить. А ко всяким
us_intl и их аналогам в винде я так и не смог привыкнуть:
страшно раздражает, когда ради ввода какой-нибудь кавычки
нужно жать на клавишу два раза.

> (это в X Window System), которая 
> позволяет вводить соответствующие символы через dead keys. 

И эти deadkeys у Вас работать не будут (кроме приложений,
основанных на GTK2), если только Вы не возьмете привычку всё 
запускать в UTF-8 или не настроите Compose. А это придется
делать вручную.

> Немного 
> сложнее с некоторыми специфическими наборами символов (например, мне
> нужно набирать символы эсперанто), однако если необходимость в них
> возникает редко, их можно набрать и из таблицы символов, если часто -
> имеет смысл опять же иметь нужную раскладку заранее настроенной, а не
> добавлять-убирать.ее на каждый чих.

А кто будет раскладку-то сочинять и настраивать?

> Даже если вам приспичило-таки поставить отдельную раскладку под
> какой-либо язык - GNOME позволяет это сделать, не прерывая сессию, из
> удобного интуитивно, извините за банальность, понятного интерфейса.

Ох, не говорите мне про гномовскую переключалку... Попробуйте-ка
с ее помощью добавить, скажем, русскую раскладку. На выбор предлагается
четыре варианта с абсолютно непонятными названиями (чем, по-Вашему,
отличается "Раскладка для русского языка" от "Раскладки для простого
русского языка"?). И есть еще "Раскладка XKB для русского языка":
чтобы сообразить, что надо выбрать именно ее, нужно знать, что
такое XKB. Далее, этой раскладке сопоставлена команда setxkbmap ru,
что, естественно, даст клавиатуру в досовском варианте. Хотите
исправить -- читайте man setxkbmap... А Вы говорите, интуитивно
понятно...

> Что-то мне подсказывает, что в KDE это тоже возможно. 

KDEшный переключатель, как Вы, вероятно, слышали, при всем своем
удобстве в настройке практически неприменим в наших условиях,
т. к. не позволяет повесить раскладку на нормальную комбинацию
клавиш (то есть можно, на самом-то деле, но для этого как раз надо
теорию знать). Посему он играет роль замечательной ловушки для
новичков, которые на него натыкаются в первую очередь, а потом
не могут настроить, пока кто-нибудь не объяснит, что на эту
бяку надо забить, а раскладки прописывать в XF86Config. Хочешь
знать, чем одно отличается от другого -- опять же учи теорию...

> Значительно 
> труднее разобраться с дополнительными раскладками в tty, однако
> принцип тот же: ставить/сносить целую раскладку ради нескольких слов
> - нерационально.

Там этого не придется делать потому только, что для многоязычного
текста нужен Юникод, а с ним в консоли умеет работать только vim,
в коем раскладки свои. Но вот если вдруг не устраивает переключатель,
то да, придется таки поменять раскладку: он же в ней прошит.

> Не вижу принципиальных сложностей для автоматизации/прикручивания
> удобного интерфейса для настройки.

Их и нет. Проблема в другом: выбор между KOI8 и CP1251 (не говоря
уж об UTF-8) должен быть сознательным, и в случае ошибки новичок
должен иметь возможность ее исправить. И то, и другое требует
определенных познаний.

> >Или разброс параметров, относящихся к локализации разных подсистем,
> > по разным же конфигам.
>
> По-моему, их не так уж много.

Ключевая проблема -- XF86Config (см. ниже).

> >Плюс XF86Config с его специфическим синтаксисом, для которого ручное
> >редактирование (или пересоздание с последующим редактированием)
> >всегда будет удобнее любой конфигурялки.
>
> Если вы говорите о секции Keyboard, причем ее части, касающейся xkb,

С этой частью как раз всё относительно просто (хотя большинство
конфигурялок именно с ней-то и не справляются: например, до сих
пор не знают о возможности указывать несколько раскладок через
запятую). Настоящая проблема в том, что в том же конфиге описывается
и мышь, и видеокарта. А поскольку конфиг один, то переписывать его
надо всегда целиком. Поэтому всегда есть риск, что при настройке
видеокарты программа выкинет непонятные для нее опции клавиатуры,
и наоборот. В конечном счете ручное редактирование оказывается
дешевле с точки зрения нервов.

> то вышеупомянутая тулза из GNOME, имхо, предоставляет необходимую
> функциональность. 

На самом деле эта тулза как раз и близко не трогает XF86Config: 
она его скорее подменяет, что, естественно, работает только
внутри самого Гнома.

> В любом случае я не могу назвать редактирование 
> xorg.conf/XF86Config удачным способом временного(!) добавления
> раскладок.

И не нужно. Правильный ответ примерно таков:
$ setxkbmap -layout "us,de,ru"
Но чтобы этим воспользоваться, нужно учить именно XF86Config.

> Вы ответили не на мой вопрос. Еще раз: при условии указания списка
> необходимых раскладок при установке Linux, зачем "обычному человеку"
> TM может понадобиться добавлять/удалять раскладки в дальнейшем on a
> regular basis? 

Ну вот не указал он при установке нужный язык: не знал, что понадобится,
или начал изучать его уже потом. С другой стороны, если какая-то
раскладка используется редко, то ее присутствие в списке, естественно,
замедляет работу с остальными (переключатель-то общий). В таком
случае временное удаление вполне целесообразно.

И, наконец, я знаю людей, которые держат в винде по пять раскладок.
А иксы, между прочим, позволяют только четыре за раз. Вот вам
и повод для смены списка.

> Возможно, здесь вы сделали ошибку. Linux - это совершенно другая
> операционная система, и подходить к ней с виндовыми мерками я не могу
> признать корректным. В частности, i18n в Linux сделана совершенно
> иначе и очень многие вещи можно сделать проще, если отказаться от
> крупноблочного подхода, характерного для виндов.

Вот здесь категорически не согласен. Винде свойственно как раз 
точечное конфигурирование, поскольку любой ключ реестра можно
изменить независимо от остальных, и это ничуть не похоже на
файлы типа XF86Config, которые нужно переписывать непременно
целиком (см. выше).

Или вспомните вкладку "Языки и региональные настройки" в винде:
тут тебе время, тут тебе формат даты, отдельно десятичный
разделитель (можно выбрать любой!), отдельно валюта. А я что-то
не припомню ни одной графической конфигурялки для Linux, которая
позволяла бы *отдельно*, а не скопом, задать значения переменных 
из группы LC_*. Так что опять-таки, если кому это надо, остается
только редактировать файл.

> Я работаю с SuSE ежедневно. Мне пришлось подкручивать русификацию в
> какой-то момент, когда SuSE пересаживалась на UTF-8. Я по-прежнему НЕ
> ЗНАЮ, в каких файлах что у них лежит в отношении i18n. Все (ну
> хорошо, почти все) было сделано из YaST, который действительно
> является совершенно потрясающим средством настройки. Поэтому я не
> могу утверждать, что имея за плечами настройку русского языка в SuSE,
> человек знает "большинство тонкостей" на уровне где какие файлы
> редактировать.

Мне тоже очень нравится YaST, но локализацию в нем (я видел 9-ю
версию) было сделать нельзя из-за отсутствия представления о том,
что один и тот же язык может быть сопоставлен разным кодировкам.
Поменять KOI8 на CP1251 я смог только вручную, и после этого любой
запуск соответствующего модуля YaST привел бы к сбросу моих настроек. 
А еще в том SuSE слетала console magic (может, теперь поправили?), 
ввиду чего русификация консоли ни в каком виде не работала, и 
для починки ее, естественно, опять же требовались некоторые
теоретические познания.

Впрочем, это обсуждение не имеет большого значения, т. к. я
сделал ошибку в предыдущем письме: русификацией SuSE приходилось
заниматься не зачинщику треда, а другому его участнику :)

> >Да потому, что так от веку делалось во всех дистрибутивах,
>
> Это слабый аргумент, как вы, я надеюсь, понимаете.

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

> Ну слава Богу, но зачем все языки сразу ставить-то? Кстати, вы в
> пан-европейской версии Windows поддержку восточных языков включаете?
> Это всего лишь одна галочка в настройках.

А вот здесь крупноблочный подход как раз пригодился бы. Я не против
исключить именно и только CJK локали, но уж лучше я их поставлю,
только чтобы быть уверенным, что вся Западная Европа тоже осталась
в неприкосновенности. Потому что я не могу гарантировать, что завтра
у меня не возникнет потребности взглянуть на Abiword с исландским
интерфейсом.

> Насчет многих - верится слабо. Подобное положение дел наблюдается в
> ALT Linux уже достаточно давно (поправьте меня, если я неправ),
> поэтому сюрпризом это может стать только для переходящих с других
> дистрибутивов, у которых сюрпризы в любом случае будут, наподобие
> важности той же группы wheel.

Наблюдаются, на самом деле, колебания, о чем свидетельствует та
самая бага 4048.

> >А уж если вам очень хочется такое умолчание изменить,
>
> Пардон - это вам хочется изменить умолчание :)

Ничего подобного: за умолчание при нынешнем состоянии инсталлятора
следует считать поведение в режиме не-эксперта.

> Требования к понятности и доступности документации в любом случае
> высоки.

Когда как :)

> Ну, там вообще-то внизу экрана написано про раскладки. Правда, про
> то, что к выбору раскладок надо отнестись максимально рационально и
> не бежать от русификации как французы в 1812-м (никаких намеков на
> Mandrake), там, кажется не упомянуто. Промашка, согласен.

Раскладки здесь как раз ни при чем. Речь совсем о другом: дело в 
том, что в большинстве виденных мною инсталляторов уже довольно
давно предлагается выбрать сперва язык инсталляции, а потом --
дополнительные языки, для которых требуется поддержка. Также
давно известно, что практически выбор этих языков никогда ни
на что серьезное не влияет. Зная об этом, я такой диалог обычно
пропускаю, т. к. соображать, какие же именно языки мне могут
понадобиться и щелкать галочки, довольно лениво, а если вдруг
и окажется пропущено что-то важное, то это можно донастроить
и позднее.

С другой стороны *все* языки сразу я тоже едва ли выберу 
просто из общих соображений, т. к. заранее трудно сказать, не 
приведет ли это, например, к установке всех пакетов kde-i18n-* 
объемом в сотни метров. 

Вот потому-то нужно не общее объяснение типа "здесь вы можете
выбрать языки, с которыми собираетесь работать", а предельно
четкое предупреждение о том, что на сей раз выбор действительно
важен и от него будет зависеть установка файлов локализации
каждого пакета.

> Честно говоря, натянутый пример. Мне не нужно представлять себе, я и
> есть разработчик, занимающийся локализацией и своих, и чужих
> программ. Я не использую при тестировании переводов rpm-пакеты - их
> как правило, на этом этапе просто нет, особенно если дело касается
> моих программ.

Ничего не имею против, но, впрочем, удивляюсь, как это Вячеслав
Диконов Вас за это не скушал :)

А так я согласен: пример натянутый, но только слегка (ведь тестируете
же Вы свои rpm?) Чаще бывает другое: чтобы поправить свою локализацию,
нужно поглядеть на чужую. Естественно, для этого надо иметь понятие
о языке хотя бы на уровне алфавита. Скажем, занимаясь локализацией
CyrillicTools, я поглядывал на украинский интерфейс gnumeric. А между
тем наверняка мне не пришло бы в голову явным образом пометить
украинский при инсталляции, т. к. вообще-то он мне не нужен.



Подробная информация о списке рассылки community