LanguageCode_CountryCode.Encoding
Глава 25. Локализация — использование и настройка i18n/L10n
Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD.
Содержание
25.1. Обзор
FreeBSD — это распределённый проект с пользователями и участниками по всему миру. Поэтому FreeBSD поддерживает локализацию на множество языков, позволяя пользователям просматривать, вводить и обрабатывать данные на языках, отличных от английского. Доступны многие основные языки, включая, но не ограничиваясь: китайский, немецкий, японский, корейский, французский, русский и вьетнамский.
Термин "internationalization" был сокращён до i18n, где число 18 обозначает количество букв между первой и последней буквами слова "internationalization". L10n использует ту же схему сокращения, но от слова "localization". Методы, протоколы и приложения i18n/L10n позволяют пользователям работать на предпочитаемых ими языках.
Эта глава рассказывает о возможностях интернационализации и локализации в FreeBSD. Прочитав эту главу, вы узнаете:
Как формируются названия локалей.
Как установить локаль для входной оболочки.
Как настроить консоль для неанглийских языков.
Как настроить Xorg для разных языков.
Как найти приложения, соответствующие стандарту i18n.
Где найти дополнительную информацию по настройке конкретных языков.
Прежде чем читать эту главу, вы должны:
25.2. Использование локализации
Настройки локализации основаны на трёх компонентах: коде языка, коде страны и кодировке. Названия локалей формируются из этих частей следующим образом:
ЯзыковойКод и КодСтраны используются для определения страны и конкретного варианта языка. Распространённые языковые коды и коды стран содержит несколько примеров ЯзыковойКод_КодСтраны:
| КодЯзыка_КодСтраны | Описание |
|---|---|
en_US | Английский, Соединённые Штаты |
ru_RU | Русский, Россия |
zh_TW | Традиционный китайский, Тайвань |
Полный список доступных локалей можно получить, набрав:
% locale -a | moreДля определения текущих настроек локали:
% localeЯзыковые наборы символов, такие как ISO8859-1, ISO8859-15, KOI8-R и CP437, описаны в multibyte(3). Актуальный список наборов символов доступен в Реестре IANA.
Некоторые языки, такие как китайский или японский, не могут быть представлены с использованием символов ASCII и требуют расширенной кодировки с использованием широких или многобайтовых символов. Примерами широких или многобайтовых кодировок являются EUC и Big5. Старые приложения могут ошибочно принимать эти кодировки за управляющие символы, в то время как новые приложения обычно распознают их правильно. В зависимости от реализации, пользователям может потребоваться скомпилировать приложение с поддержкой широких или многобайтовых символов или правильно его настроить.
FreeBSD использует совместимые с Xorg кодировки локалей. |
Остальная часть этого раздела описывает различные методы настройки локали в системе FreeBSD. Следующий раздел будет посвящен вопросам поиска и компиляции приложений с поддержкой i18n.
25.2.1. Установка локали для входной оболочки
Настройки локали настраиваются либо в файле ~/.login_conf пользователя, либо в стартовом файле его оболочки: ~/.profile, ~/.bashrc или ~/.cshrc.
Должны быть установлены две переменные окружения:
LANG, который устанавливает локальMM_CHARSET, который устанавливает MIME-кодировку, используемую приложениями
В дополнение к настройкам оболочки пользователя, эти переменные также должны быть установлены для конкретной конфигурации приложений и конфигурации Xorg.
Доступны два метода для задания необходимых переменных: метод класса входа, который является рекомендуемым, и метод файла запуска. В следующих двух разделах показано, как использовать оба метода.
25.2.1.1. Метод Классов Входа
Этот первый метод является рекомендуемым, так как он устанавливает необходимые переменные окружения для названия локали и MIME-кодировок символов для всех возможных командных оболочек. Данную настройку может выполнить как каждый пользователь в отдельности, так и суперпользователь для всех пользователей сразу.
Этот минимальный пример устанавливает обе переменные для кодировки Latin-1 в файле .login_conf домашнего каталога отдельного пользователя:
me:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:
Вот пример файла ~/.login_conf пользователя, который устанавливает переменные для традиционного китайского в кодировке BIG-5. Требуется больше переменных, так как некоторые приложения некорректно обрабатывают локали для китайского, японского и корейского языков:
#Users who do not wish to use monetary units or time formats #of Taiwan can manually change each variable me:\ :lang=zh_TW.Big5:\ :setenv=LC_ALL=zh_TW.Big5,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=gcin": #Set gcin as the XIM Input Server
Альтернативно, суперпользователь может настроить локализацию для всех пользователей системы. Следующие переменные в /etc/login.conf используются для установки локали и набора символов MIME:
language_name|Account Type Description:\ :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.conf(5). Обратите внимание, что там уже есть предопределённый класс russian.
При редактировании файла /etc/login.conf не забудьте выполнить следующую команду для обновления базы данных возможностей:
# cap_mkdb /etc/login.confДля конечного пользователя команда |
25.2.1.1.1. Утилиты, изменяющие классы входа в систему
В дополнение к ручному редактированию /etc/login.conf доступно несколько утилит для установки локали для вновь создаваемых пользователей.
При использовании vipw для добавления новых пользователей укажите language, чтобы задать локаль:
user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh
При использовании adduser для добавления новых пользователей язык по умолчанию может быть предварительно настроен для всех новых пользователей или указан для отдельного пользователя.
Если все новые пользователи используют один и тот же язык, укажите defaultclass=language в /etc/adduser.conf.
Чтобы переопределить этот параметр при создании пользователя, введите требуемую локаль в этом запросе:
Enter login class: default []:или указать локаль для установки при вызове adduser:
# adduser -class languageЕсли pw используется для добавления новых пользователей, укажите локаль следующим образом:
# pw useradd user_name -L languageДля изменения класса входа существующего пользователя можно использовать chpass. Запустите её от имени суперпользователя и укажите имя пользователя для редактирования в качестве аргумента.
# chpass user_name25.2.1.2. Метод файла запуска оболочки
Этот второй метод не рекомендуется, так как каждая используемая оболочка требует ручной настройки, причём у каждой оболочки свой файл конфигурации и разный синтаксис. Например, чтобы установить немецкий язык для оболочки sh, можно добавить следующие строки в ~/.profile для настройки оболочки только этого пользователя. Эти же строки можно добавить в /etc/profile или /usr/share/skel/dot.profile, чтобы настроить эту оболочку для всех пользователей:
LANG=de_DE.ISO8859-1; export LANG MM_CHARSET=ISO-8859-1; export MM_CHARSET
Однако имя файла конфигурации и используемый синтаксис отличаются для оболочки csh. Вот эквивалентные настройки для ~/.login, /etc/csh.login или /usr/share/skel/dot.login:
setenv LANG de_DE.ISO8859-1 setenv MM_CHARSET ISO-8859-1
Чтобы усложнить ситуацию, синтаксис, необходимый для настройки Xorg в ~/.xinitrc, также зависит от оболочки. Первый пример приведён для оболочки sh, а второй — для csh:
LANG=de_DE.ISO8859-1; export LANG
setenv LANG de_DE.ISO8859-1
25.2.2. Настройка консоли
Доступно несколько локализованных шрифтов для консоли. Чтобы просмотреть список доступных шрифтов, введите ls /usr/share/syscons/fonts. Для настройки шрифта консоли укажите font_name без суффикса .fnt в файле /etc/rc.conf:
font8x16=font_name font8x14=font_name font8x8=font_name
Раскладки клавиатуры (keymap) и карты экрана (screenmap) можно настроить добавлением следующих команд в /etc/rc.conf:
scrnmap=screenmap_name keymap=keymap_name keychange="fkey_number sequence"
Чтобы просмотреть список доступных карт экрана, введите ls /usr/share/syscons/scrnmaps. Не указывайте суффикс .scm при указании screenmap_name. Обычно требуется карта экрана с соответствующим сопоставленным фонтом в качестве обходного решения для расширения 8-го бита до 9-го в матрице символов шрифта адаптера VGA, чтобы буквы были выведены из области псевдографики, если экранный шрифт использует столбец 8-го бита.
Чтобы просмотреть список доступных раскладок клавиатуры, введите ls /usr/share/syscons/keymaps. При указании keymap_name не включайте суффикс .kbd. Для проверки раскладок без перезагрузки используйте kbdmap(1).
Запись keychange обычно требуется для программирования функциональных клавиш в соответствии с выбранным типом терминала, так как последовательности функциональных клавиш нельзя определить в keymap.
Затем установите правильный тип консольного терминала в /etc/ttys для всех записей виртуальных терминалов. В Определенные типы терминалов для наборов символов приведены доступные типы терминалов:
| Набор символов | Тип терминала |
|---|---|
ISO8859-1 или ISO8859-15 |
|
ISO8859-2 |
|
ISO8859-7 |
|
KOI8-R |
|
KOI8-U |
|
CP437 (VGA default) |
|
US-ASCII |
|
Для языков с широкими или многобайтовыми символами установите консоль для этого языка из коллекции портов FreeBSD. Доступные порты перечислены в Доступные консоли из коллекции портов. После установки обратитесь к pkg-message или man-страницам порта для получения инструкций по настройке и использованию.
| Язык | Расположение порта |
|---|---|
Традиционный китайский (BIG-5) | |
Китайский/Японский/Корейский | |
Китайский/Японский/Корейский | |
Японский | |
Японский | |
Японский |
Если moused включен в /etc/rc.conf, может потребоваться дополнительная настройка. По умолчанию курсор мыши драйвера syscons(4) занимает диапазон 0xd0-0xd3 в наборе символов. Если язык использует этот диапазон, измените диапазон курсора, добавив следующую строку в /etc/rc.conf:
mousechar_start=3
25.2.3. Настройка Xorg
В Система X Window описана установка и настройка Xorg. При настройке Xorg для локализации дополнительные шрифты и методы ввода доступны в коллекции портов FreeBSD. Настройки интернационализации для конкретных приложений, такие как шрифты и меню, можно настроить в ~/.Xresources, что должно позволить пользователям видеть выбранный язык в меню графических приложений.
Протокол X Input Method (XIM) является стандартом Xorg для ввода неанглийских символов. В Доступные методы ввода приведены приложения для ввода, доступные в коллекции портов FreeBSD. Также доступны дополнительные приложения Fcitx и Uim.
| Язык | Метод ввода |
|---|---|
Китайский | |
Китайский | |
Китайский | |
Китайский | |
Китайский | |
Китайский | |
Китайский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Японский | |
Корейский | |
Корейский | |
Корейский | |
Корейский | |
Корейский | |
Вьетнамский | |
Вьетнамский |
25.3. Поиск приложений с поддержкой i18n
Приложения i18n разрабатываются с использованием наборов i18n в библиотеках. Это позволяет разработчикам написать один простой файл и перевести отображаемые меню и тексты на каждый язык.
Коллекция портов FreeBSD (FreeBSD Ports Collection) включает множество приложений со встроенной поддержкой широких или многобайтовых символов для различных языков. Такие приложения содержат в своих названиях i18n для удобства идентификации. Однако они не всегда поддерживают нужный язык.
Некоторые приложения могут быть скомпилированы с указанием конкретной кодировки. Обычно это делается в Makefile порта или путем передачи значения в configure. Для получения дополнительной информации о том, как определить необходимое значение configure или параметры компиляции при сборке порта, обратитесь к документации по i18n в исходном коде соответствующего порта FreeBSD или к Makefile порта.
25.4. Настройка локали для определенных языков
Этот раздел содержит примеры настройки локализации системы FreeBSD для русского языка. Далее приведены дополнительные ресурсы для локализации других языков.
25.4.1. Русский язык (КОИ8-R кодировка)
В этом разделе показаны конкретные настройки, необходимые для локализации системы FreeBSD на русский язык. Подробное описание каждого типа настроек приведено в Использование локализации.
Чтобы установить эту локаль для регистрационной оболочки, добавьте следующие строки в файл ~/.login_conf каждого пользователя:
me:My Account:\ :charset=KOI8-R:\ :lang=ru_RU.KOI8-R:
Для настройки консоли добавьте следующие строки в /etc/rc.conf:
keymap="ru.utf-8" scrnmap="utf-82cp866" font8x16="cp866b-8x16" font8x14="cp866-8x14" font8x8="cp866-8x8" mousechar_start=3
Для каждой записи ttyv в /etc/ttys используйте cons25r в качестве типа терминала.
Для настройки печати необходим специальный выходной фильтр для преобразования из KOI8-R в CP866, так как большинство принтеров с русскими символами используют аппаратную кодовую страницу CP866. FreeBSD включает стандартный фильтр для этой цели — /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) для более подробного объяснения.
Для настройки поддержки русских имен файлов в монтируемых файловых системах MS-DOS® добавьте параметр -L и указание локали при добавлении записи в /etc/fstab:
/dev/ad0s2 /dos/c msdos rw,-Lru_RU.KOI8-R 0 0
Обратитесь к mount_msdosfs(8) для получения дополнительной информации.
Для настройки русских шрифтов в Xorg установите пакет x11-fonts/xorg-fonts-cyrillic. Затем проверьте раздел "Files" в /etc/X11/xorg.conf. Следующая строка должна быть добавлена перед всеми остальными записями FontPath:
FontPath "/usr/local/lib/X11/fonts/cyrillic"
Дополнительные кириллические шрифты доступны в Коллекции портов.
Чтобы активировать русскую раскладку клавиатуры, добавьте следующее в раздел "Keyboard" файла /etc/xorg.conf:
Option "XkbLayout" "us,ru" Option "XkbOptions" "grp:toggle"
Убедитесь, что XkbDisable закомментирован в этом файле.
Для grp:toggle используйте Right Alt, для grp:ctrl_shift_toggle — Ctrl+Shift. Для grp:caps_toggle используйте CapsLock. Прежняя функция CapsLock остаётся доступной только в режиме LAT при использовании Shift+CapsLock. grp:caps_toggle не работает в Xorg по неизвестной причине.
Если на клавиатуре есть клавиши «Windows®» и некоторые неалфавитные клавиши отображаются неправильно, добавьте следующую строку в файл /etc/xorg.conf:
Option "XkbVariant" ",winkeys"
Русская раскладка XKB может не работать с нелокализованными приложениями. Минимально локализованные приложения должны вызывать функцию |
См. http://koi8.pp.ru/xwin.html для получения дополнительных инструкций по локализации приложений Xorg. Более общую информацию о кодировке KOI8-R можно найти на http://koi8.pp.ru/.
25.4.2. Дополнительные ресурсы для конкретных языков
В этом разделе приведены дополнительные ресурсы для настройки других локалей.
- Традиционный китайский для Тайваня
Проект FreeBSD-Taiwan предлагает руководство на китайском языке по FreeBSD по адресу http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/.
- Локализация на греческий язык
Полная статья о поддержке греческого языка в FreeBSD доступна здесь, только на греческом, как часть официальной документации FreeBSD на греческом языке.
- Японская и корейская локализация
Для японского языка обратитесь к http://www.jp.FreeBSD.org/, а для корейского — к http://www.kr.FreeBSD.org/.
- Неанглоязычная документация FreeBSD
Некоторые участники проекта FreeBSD перевели части документации FreeBSD на другие языки. Они доступны по ссылкам на веб-сайте FreeBSD или в /usr/share/doc.
Изменено: 20 октября 2025 г. by Vladlen Popolitov