Ключевые слова:freebsd, rus, locale, (найти похожие документы)
From: vadim s. sabinich <http://bookshelf.ath.cx/>
Newsgroups: email
Date: Mon, 18 Nov 2003 14:31:37 +0000 (UTC)
Subject: Локализация FreeBSD - I18N/L10N Использование и настройка
Перевод 14 главы из FreeBSD 5.1 HandBook
Глава 14 Локализация - I18N/L10N Использование и настройка
Содержание
14.1 Синтаксис
14.2 Основы
14.3 Использование локализации
14.4 Компилирование I18N-программ
14.5 Локализация FreeBSD на определенные языки
Contributed by Andrey A. Chernov. Rewritten by Michael C. Wu.
14.1 Синтаксис
FreeBSD очень распространенный проект с пользователями и контрибьютерами
по всему миру. Данная глава посвещена интернационализации и локализации
FreeBSD для пользователей, неговорящих на английском. Некоторые аспекты
i18n описаны как на системном, так и на уровне приложений; но все же
следует не пропускать способов локализации приложений, которые описываются
в прилагающейся к ним документации.
После прочтения главы вы узнаете:
* Как раскодировать различные языки и локали в современных
операционных системах.
* Как установить локаль в вашем шелле.
* Как настроить вашу консоль для языков, отличных от английского.
* Как пользоваться X Window с разными языками.
* Где найти больше информации о приложениях, легко поддающихся
локализации.
Перед прочтением, вам следует:
* Знать, как установить дополнительные third-part приложения
(Глава 4).
14.2 Основы
14.2.1 Что такое I18N/L10N?
Разработчики свернули интернационализацию в терминал I18N, считающим число
букв между первым и последним символом интернационализации. L10N
использует подобной схемой, исходя из ``локализации''. Комбинируя эти два
метода, протоколы и приложения, пользователи добиваются использования
языка по их выбору.
I18N-приложения написаны с использованием I18N-библиотек. Что
предоставляет разработчикам возможность написать простой файл и перевод,
выводя меню и тексты в каждый язык. Мы настойчивл рекомендуем
программистам придерживаться этого способа.
14.2.2 Почему мне следует использовать I18N/L10N?
I18N/L10N используется всегда, как только вы хотите посмотреть, ввести или
обработать данные на языке, отличном от английского.
14.2.3 Какие языки поддерживаются в I18N?
I18N и L10N являются специфичными для FreeBSD.
.В данный момент, поддерживается многие из
распространенных языков в Мире, включая: китайский, немецкий, японский,
корейский, французский, русский, вьетнамский и другие.
14.3 Использование локализации
Во всем этом великолепии, I18N не является специфичной для FreeBSD и это,
можно сказать, обычай. Мы поддержим вас в ваших начинаниях по локализации
FreeBSD.
Установки локализации основаны на трех основных terms: Language Code,
Country Code и Encoding. Имена локалей состоят именно из этих частей:
LanguageCode_CountryCode.Encoding
14.3.1 Язык и код страны
В процессе локализации FreeBSD на определенный язык (или какой из других
I18N-поддерживающих Юниксов) пользователю требуется узнать коды для
указания страны и языка (код страны дает понять приложениям, какой из
предложеных вариантов языков использовать). В дополнение, веб-броузеры,
SMTP/POP серверы, веб-серверы и тому подобное, основываются на нем. Ниже
небольшие примеры кодов страны и языка:
en_US Английский - Соединенные Штаты
ru_RU Русский для России
zh_TW Традиционный китайский для Тайваня
14.3.2 Кодировка
Многие языки используют не-ASII кодирование, в том числе и 8-битные,
широкие или многобайтовые символы; для более подробной информации смотрите
мануал multibyte(3). Старые приложения не распознают их и ошибочно
используют эти символы в качестве управляющих. Новые приложения, обычно,
распознают 8-битные символы. В зависимости от запросов, пользователям может
потребоваться компиляция приложения с поддержкой широких или многобайтовых
символов или правильная их настройка. Коллекция портов FreeBSD поставляет
каждый язык с различными программами для возможности ввода и обработки
широких или многобайтовых символов и избежания путаницы. Обратите внимание
на документацию I18N в каждом уважающем себя порте FreeBSD.
Вообще, пользователю следует изучить документацию к приложению для того,
чтобы решить, как ему правильней настроить программу или прописать
корректные значения в configure/Makefile/compiler.
Вещи, которые следует запомнить:
* Определенный язык устанавливается одним символом Си (см.
multibyte(3)), напр., ISO-8859-1, ISO-8859-15, KOI8-R, CP437.
* Широкое или многобайтовое кодирование напр., EUC, Big5.
Вы можете проверить список активных символьных установок в IANA Registry.
Замечание: FreeBSD 4.5 и выше использует X11-совместимое кодирование
локали.
14.3.3 I18N-приложения
В портах FreeBSD и системе пакетов, для более понятной идентификации,
I18N-приложения содержат в своих названиях "I18N". К тому же, они не
всегда поддерживают нужный язык.
14.3.4 Настройка локали
Обычно настройка заключается в экспортировании значения названия локали
в качестве LANG в логине шелла. Это следует сделать в пользовательском
файле ~/.login_conf или стартовом файле пользовательского шелла
(~/.profile, ~./bashrc, ~/.cshrc). Установка LANG не потребует
дополнительной установки значений LC_CTYPE, LC_CTIME. Для более подробной
информации изучите документацию FreeBSD по вопросу установки языка.
Вам следует установить следующие две переменные окружения в
конфигурационных файлах:
* LANG for POSIX setlocale(3) family functions
* MM_CHARSET for applications' MIME character set
Это всталяется в конфигурацию пользовательского шелла, конфигурацию
определенного приложения и X11-конфигурацию.
14.3.4.1 Методы установки локали
Существует два метода установки локали и каждый из них будет описан ниже.
Первый метод (рекомендуемый) построен на добавлении переменных окружения в
login class. Второй - на добавлении в стартовый файл системного шелла.
14.3.4.1.1 Метод Login Class'а
Данный метод предоставляет возможность добавления переменных окружения,
требуемых для названия локали и установки MIME-символа, всего лишь один
раз для всех возможных шеллов, вместо установок для каждого в отдельности.
Настройка на пользовательском уровне может быть выполнена пользователем
самостоятельно, настройка на администраторском уровне требует привилегий
суперпользователя.
14.3.4.1.1.1 Настройка на пользовательском уровне
Это пример минимальной настройки файла .login_conf в домашней директории
пользователя, в которой установлены переменные для кодировки Latin-1:
me:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO8859-1:
А ниже приведен пример того же самого файла .login_cong, в котором
находятся настройки для Традиционного Китайского в кодировке BIG-5.
Заметно, что установлено намного больше переменных; это обьясняется тем,
что многое программное обеспечение не правильно отражает переменные локали
Китая, Японии и Кореи.
#Пользователи, которые не желают пользоваться тайваньским форматом времени
# или денежными знаками, могут изменить каждую переменную вручную
me:\
lang=zh_TW.Big5:\
lc_all=zh_TW.Big:\
lc_collate=zh_TW.Big5:\
lc_ctype=zh_TW.Big5:\
lc_messages=zh_TW.Big5:\
lc_monetary=zh_TW.Big5:\
lc_numeric=zh_TW.Big5:\
lc_time=zh_TW.Big5:\
charset=big5:\
xmodifiers="@im=xcin": #Установка XIM Input Server
Для более подробной информации смотрите главу "Настройка на
администраторском уровне" и мануал login.conf(5).
14.3.4.1.1.2 Настройка на администраторском уровне
Убедитесь, что пользовательский login class в /etc/login.cons содержит
правильную информацию о языке. Вы можете добавить новые или изменить
текущие настройки в /etc/login.conf:
language_name:accounts_title:\
:charset=MIME_charset:\
:lang=locale_name:\
:tc=default:
Основываясь на предыдущем примере, можно получить пример использования
Latin-1. Это будет выглядеть примерно вот так:
german:German Users Accounts:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO8859-1:\
:tc=default:
Изменение Login Classes с помощью vipw(8)
Используйте vipw для добавления новых пользователей, чтобы строка ввода
выглядела примерным образом:
user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh
Изменение Login Classes с помощью adduser(8)
Используйте adduser для добавления новых пользователей и обратите
внимание на следующие моменты:
* Установка defaultclass равнозначна language в /etc/adduser.conf.
Запомните, какой следует вводить defaultclass для пользователейт
вашем случае.
* Альтернативой вышеописанного будет указание language при каждом
новом пользователе
Enter login class: default []:
appears from adduser(8).
* Другой альтернативой может послужит использование следующего для
каждого пользователя, добавляя различный язык по желанию:
# adduser -class language
Изменение Login Classes с помощью pw(8)
Если вы используете pw для добавления новых пользователей, вызывайте
его следующим образом:
# pw useradd user_name -L language
14.3.4.1.2 Метод стартового файла шелла
Замечание: Использование этого метода не рекомендуется в связи с тем, что
требуется различная настройка для каждого из выбранного шелла.
Рекомендуется использовать метод Login Class'а.
Для добавления названия локали и MIME-символа требуется установка всего
лишь двух переменных окружения, показанных ниже, в /etc/profile и/или
/etc/csh.login. Мы будем использовать немецкий язык в качестве примера:
В /etc/profile:
LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET
Или в /etc/csh.login:
setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO-8859-1
В качестве альтернативы, вы можете добавить вышеприведенные конструкции в
/usr/share/skel/dot.profile (подобно тому, что было использовано в
вышеуказанном /etc/profile) или /usr/share/skel/dot.login.
Для X11:
В $HOME/.xinitrc:
LANG=de_DE.ISO8859-1; export LANG
Или:
setenv LANG de_DE.ISO8859-1
Относительно вашего шелла (см. выше).
14.3.5 Настройка консоли
Установите правильный консольный шрифт в /etc/rc.conf для требуемого языка
в следующих строках:
font8x16=font_name
font8x14=font_name
font8x8=font_name
Font_name берется из директории /usr/share/syscons/fonts, без указания
расширения '.fnt'.
Так же будет правильным установить корректные keymap и screenmap вашего
однобайтового набора символов, установленные через /stand/sysinstall. Если быть
точней, то установка находится /stand/sysinstall -> Configure -> Console.
Альтернативой может служить установка этих же значений в /etc/rc.conf:
scrnmap=screenmap_name
keymap=keymap_name
keychange="fkey_number sequence"
Где screenmap_name берется из директории /usr/share/syscons/scrnmaps (без
расширения .scm). Screenmap с соответствующим шрифтом обычно требуется в
качестве расширяющих битность с 8 бит до 9 на VGA адаптерах в области
псевдографики, напр., перемещать буквы в эту область, если экранный шрифт
использует 8 битную колонку.
Если у вас включен демон мыши, установкой следующей строки в /etc/rc.conf:
moused_enable="YES"
то следующий параграф как раз для вас. В нем рассматривается информация о
мышином курсоре.
По умолчанию, курсор мыши занимает место с 0xd0 по 0xd3 в таблице
символов. Если ваш язык использует данный диапазон, вам следует
переместить диапазон курсора мыши. Для включения рабочего окружения для
FreeBSD версий до 5.0, вставьте следующую строку в конфигурацию вашего
ядра:
options SC_MOUSE_CHAR=0x03
Для FreeBSD 4.4 и выше, вставьте следующую строку в /etc/rc.conf:
mousechar_start=3
Keymap_name взят из директории /usr/share/syscons/keymaps (без
расширения). Если вы сомневаетесь в том, какой из keymap использовать, -
прочитайте мануал kbdmap(1) для тестирования разных keymap без
перезагрузки.
Изменение шрифта обычно требуется функциональным клавишам программы для
подстановки выбранного типа терминала, потому что последовательности
функциональных клавиш могут быть не указаны в keymap.
Так же желательно установить правильный тип терминала в /etc/ttys для всех
ttyv*. В данный момент работают ниженаписанные варианты:
Character Set Terminal Type
ISO-8859-1 or ISO-8859-15 cons25l1
ISO-8859-2 cons25l2
ISO-8859-7 cons25l7
KOI8-R cons25r
KOI8-U cons25u
CP437 (VGA default) cons25
US-ASCII cons25w
Для расширенных и многобайтовых языковых символов, используется корректный
порт FreeBSD из директории /usr/ports/<language> (где <language> - язык,
который вы выбрали). Многие порты имеют вид консоли, пока система видит из
как терминалы, следовательно, вы должны зарезервировать несколько
терминалов для X11 и псевдоконсолей. Ниже приведен частичный список
приложений для использования других языков в консоли:
Language Location
Traditional Chinese (BIG-5) chinese/big5con
Japanese japanese/ja-kon2-* or japanese/Mule_Wnn
Korean korean/ko-han
14.3.6 Настройка X11
Хотя X11 и не является частью проекта FreeBSD, мы решили добавить
некоторое количество информации для пользователей. Не мешает так же
изучить информацию с сайта XFree86 о используемом вами X11-сервере.
В ~/.Xresources вы можете внести дополнительные настройки для локализации
шрифтов, меню и тому подобное.
14.3.6.1 Шрифты вывода
Установите X11 True Type-Common server (x11-servers/XttX86srv-common) и
truetype шрифты для вашего языка. Правильная настройка локали позволит вам
видеть выбранный язык в меню и прочих графических приложениях.
14.3.6.2 Ввод не английских символов
X11 Input Metod (XIM) Protocol является новым стандартов для всех
X11-клиентов. Все приложения следует быть написанными как XIM-клиенты, что
даст возможность ввода с серверов XIM Input. Так же, некоторые серверы XIM
уже имеют встроенную поддержку различных языков.
14.3.7 Настройка печати
Некоторые однобитовые таблицы символов обычно перекодируются на аппаратном
уровне принтеров. Расширенные и многобайтовые таблицы символов требуют
специальной настройки и мы рекомендует использовать apsfilter. Так же вы
можете конвертировать документ в формат PostScript или PDF, используя
специфичные для данного языка конверторы.
14.3.8 Ядро и файловые системы
Быстрая файловая система FreeBSD (FFS, от 'fast filesystem') является
8-битной, поэтому она может использоваться с любым однобитовым символьным
набором (см. multibyte(3)), но только там, где нет ни одной
символьной таблицы в файловой системе; напр., ругает 8-битный и не знает
никаких других кодировок. Официально, FFS не поддерживает любые из форм
расширенных и многобайтовых символьных таблиц. Хотя, некоторые их них уже
имеют патчи для FFS, включающие поддержку. Но это всего лишь временные и
непортируемые заплатки или хакерские поделки и мы решили не вставлять из в
дерево исходников.
FreeBSD MS-DOS файловая система может настраиваться на конвертирование
между MS-DOS, Unicode и выбранной символьной таблицей файловой системы
FreeBSD. Подробней можно прочитать в mount_msdos(8).
14.4 Компиляция I18N-программ
Многие программы FreeBSD могут быть портированы с поддержкой I18N. Некоторые
из них имеют отметку '-I18N' в своем названии. Они и многие другие
программы собираются с поддержкой I18N и не требуют специальных ухищрений.
Хотя, некоторый приложения, такие как MySQL, требуют настройку Makefile с
указанной кодировкой. Обычно это проделывается в Makefile или изменяются
некоторые переменные в исходном коде.
14.5 Локализация FreeBSD на определенные языки
14.5.1 Русский (кодировка KOI8-R)
Originally contributed by Andrey A. Chernov.
Для более подробной информации о кодировке KOI8-R, смотри KOI8-R
References (Russian Net Character Set).
14.5.1.1 Настройка локали
Поместите следующие линии в ваш ~/.login_conf:
me:My Account:\
:charset=KOI8-R:\
:lang=ru_RU.KOI8-R:
В начале этой главы были приведены примеры настройки локали.
14.5.1.2 Настройка консоли
* Для версий FreeBSD до 5.0 добавьте следующую строку в
конфигурационный файл вашего ядра:
options SC_MOUSE_CHAR=0x03
Для версия 4.4 и выше, вставьте следующую строку в /etc/rc.conf:
mousechar_start=3
* Используйте следующие установки в /etc/rc.conf:
keymap="ru.koi8-r"
scrnmap="koi8-r2cp866"
font8x16="cp866b-8x16"
font8x14="cp866-8x14"
font8x8="cp866-8x8"
* Для каждой строки ttyv* в /etc/ttys в качестве типа терминала
используйте cons25r.
В начале этой главы были приведены примеры настройки консоли.
14.5.1.3 Настройка принтера
Большинство принтеров для России поставляются с аппаратной кодовой
страницей CP866, поэтому требуются специальный выходной фильтр для
перекодировки с KOI8-R на CP866. По умолчанию, подобный фильт установлен
сюда /usr/libexec/lpr/ru/koi2alt. И настройка для принтера в /etc/printcap
будет выглядеть примерно вот так:
lp|Russian local line printer:\
:sh:of=/usr/libexec/lpr/ru/koi2alt:\
:lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:
Для более подробной информации смотри printcap(5).
14.5.1.4 MS-DOS FS и русские имена файлов
Следующий пример fstab(5) включает поддержку русских имен файлов в
примонитрованное файловой системе MS-DOS:
/dev/ad0s2 /dos/c msdos rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0
Так же смотрите mount_msdos(8) для более подробного описания ключей -W и -L.
14.5.1.5 Настройка X11
1. Настроить не-X локаль, как описано выше.
Замечание: Русская KOI8-R локаль может не работать со старыми релизами
XFree86 (до 3.3 версии включительно). Сейчас по умолчанию используются
XFree86 4.X. Это следует учитывать при использовании старых версий
FreeBSD.
2. Перейдите в директорию russian/X.language и введите следующую
команду:
# make install
После этого установит порт шрифтов KOI8-R последней версии. XFree86 3.3
уже имеет эти шрифты, но лучше их заменить.
Проверьте в файле /etc/XF86Config раздел "Files". Следующие строки должны
быть добавлены перед любыми другими строками FontPath:
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/misc"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi"
Если вы используете видеорежим с высоким разрешением поменяйте местами
строки 75dpi и 100dpi.
3. Активируйте русскую клавиатуру, добавив следующий раздел "Keyboard"
в файл XF86Config.
Для XFree86 3.X:
XkbLayout "ru"
XkbOptions "grp:caps_toggle"
Для XFree86 4.X:
Option "XkbLayout" "ru"
Option "XkbOptions" "grp:caps_toggle"
Так же отключите XkbDisable (просто закоментируйте).
Переключение рус/лат будет производиться с помощью клавиши CapsLock.
Старая функция CapsLocj будет доступна через комбинацию Shift+CapsLock
(только в режиме латиницы).
Если у вас на клавиатуре имеются клавиши ``Windows'' и притензии
некорректной работе каких-нибудь не-алфавитных клавиш в режиме кириллицы,
добавьте следующую строку в XF86Config.
Для XFree86 3.X:
XkbVariant "winkeys"
Для XFree86 4.X:
Option "XkbVariant" "winkeys"
Замечание: Русская XKB-клавиатура может не работать со старыми версиями
XFree86, более подробно описано выше. Так же эта клавиатура может
работать с нелокализованными приложениями не всегда так, как требуется.
Минимально локализованные приложения следует вызывать с помощью
XtSetLanguageProc (NULL, NULL, NULL); старая функция в программе. Для
более подробных инструкций по локазации X11-приложений читайте KOI8-R for
X Window.
14.5.2 Локализация традиционного китайского для Тайваня
Проект FreeBSD-Taiwan имеет руководство по I18N/L10N для FreeBSD на
http://freebsd.sinica.edu.tw/~ncvs/zh-l10n-tut/ используя много китайских
портов. Редактором zh-L10N-tut является Клив Лин (Clive Lin) <Clive@CirX.org..
Так же вы можете обновить через CVS следующие коллекции на
freebsd.sinica.edu.tw:
Collection Description
outta-port tag=. Бета-версия коллекции портов для Китая
zh-L10N-tut tag=. Руководство по локализации FreeBSD на традиционный
китайский в кодировке BIG-5
zh-doc tag=. Перевод документации к FreeBSD на традиционный китайский
в кодировке BIG-5
Хуан-Хсинг Шень (Huan-Hsing Shen) <s874070@mail.yzu.edu.tw.> создал
китайскую коллекцию FreeBSD (CFC) используя zh-L10N-tut. Пакеты и
скрипты можно взять на ftp://ftp.csie.ncu.edu.tw/OS/FreeBSD/taiwan/CFC/.
14.5.3 Локализация для немецкого языка (Для всех языков ISO 8859-1)
Славен Резиц (Slaven Rezic) <eserte@cs.tu-berlin.de.> написал руководство
по обеспечению использования умлаутов под FreeBSD. Данное руководство на
немецком доступно на сайте http://www.de.FreeBSD.org/de/umlaute/.
14.5.4 Локализация японского и корейского языков
Для японского изучите материалы на http://www.jp.FreeBSD.org/, а для
корейского - на http://www.kr.FreeBSD.org/.
14.5.5 Документация по FreeBSD на языках, отличном от английского
Некоторые контрибуторы FreeBSD, при наличие переводов, размещают их на
основных сайтах или в /usr/share/doc.
перевод: vadim s. sabinich <http://bookshelf.ath.cx/>