Глава 20. Локализация - использование и настройка i18n/L10n

Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD .

Содержание

20.1. Краткий обзор

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

Термин интернационализация ( internationalization ) сокращают до i18n, по числу символов в английском слове. Сокращение L10n аналогично получается от слова localization . i18n/L10n методы, протоколы и приложения позволяют пользователям использовать языки по своему выбору.

В этой главе обсуждаются особенности интернационализации и локализации FreeBSD, включая следующие темы:

  • Схема именования локалей.

  • Установка региональных настроек для оболочки.

  • Локализация консоли.

  • Локализация Xorg.

  • Поиск i18n-совместимых приложений.

  • Информация по настройке для некоторых языков.

Перед чтением этой главы вам следует знать:

20.2. Использование локализации

Настройки локализации состоят из трёх компонентов: код языка, код страны и кодировка. Из этих частей формируются названия локалей:

КодЯзыка_КодСтраны.Кодировка

КодЯзыка и КодСтраны используются для определения страны и конкретного диалекта языка. Основные коды языка и страны содержит некоторые примеры пар КодЯзыка_КодСтраны :

Таблица 1. Основные коды языка и страны
КодЯзыка_КодСтраны Описание

en_US

Английский, Соединенные Штаты

ru_RU

Русский, Россия

zh_TW

Традиционный китайский, Тайвань

Полный список локалей доступен по команде:

% locale -a | more

Чтобы определить текущую локаль:

% locale

Специфичные для языков наборы символов ISO8859-1, ISO8859-15, KOI8-R, CP437 описаны в multibyte(3) . Актуальный список наборов символов находится на сайте IANA Registry .

Некоторые языки, такие как китайский или японский, не могут быть представлены с использованием символов ASCII, и для них требуется дополненная языковая кодировка с использованием расширенного или многобайтового представления символов. Такими кодировками являются EUC и Big5. Старые приложения могут ошибочно принимать символы в таких кодировках за управляющие, в то время как новые обычно их распознают. В зависимости от реализации, пользователю может потребоваться компиляция приложения с поддержкой расширенного или многобайтового представления символов или правильная его настройка.

Во FreeBSD используются Xorg-совместимые кодировки.

В продолжении этого раздела рассматриваются различные способы настройки локализации в системе FreeBSD. В следующем разделе выносятся соображения по поиску и компиляции приложений с поддержкой i18n.

20.2.1. Настройка локализации для оболочки

Для настроек локализации используется пользовательский ~/.login_conf или инициализационый файл пользовательской оболочки: ~/.profile , ~/.bashrc или ~/.cshrc .

Следует задать две переменные окружения:

  • LANG задаёт локаль *

    MM_CHARSET задаёт набор символов MIME для приложений

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

Существует два способа выполнить необходимые присвоения переменным: класс логина , который является рекомендуемым, и файл инициализации . В следующих двух разделах будет показано, как использовать оба способа.

20.2.1.1. Настройка через классы логина

Первый способ является рекомендуемым, поскольку в нём необходимые для выбора локализации и набора символов MIME значения переменных окружения присваиваются для всех оболочек. Эту процедуру может выполнить пользователь для себя, а также это может сделать в виде настройки суперпользователь для всех пользователей системы.

В этом минимальном примере обе переменные задаются для кодировки Latin-1 в .login_conf домашнего каталога отдельного пользователя:

me:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:

Ниже дан ~/.login_conf , в котором переменные заданы для традиционного китайского в кодировке BIG-5. Здесь нужно больше переменных, потому что некоторые программы некорректно воспринимают переменные окружения локализации для Китая, Японии и Кореи:

#Пользователи, которые не хотят использовать денежные единицы
#и форматы времени Тайваня, могут вручную изменить каждую переменную
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:

название_языка|подробное описание:\
	:charset=кодировка_MIME:\
	:lang=название_локализации:\
	: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
20.2.1.1.1. Утилиты для смены класса логина

В дополнение к ручному редактированию /etc/login.conf имеется несколько утилит, которые позволяют задать локаль при создании новых пользователей:

Если для добавлении новых пользователей используется vipw , то чтобы задать локаль, укажите язык :

user:password:1111:11:язык:0:0:User Name:/home/user:/bin/sh

Если для добавления новых пользователей используется adduser , то язык по умолчанию можно предварительно выбрать для всех новых пользователей или указать его для отдельного пользователя.

Если все новые пользователи используют общий язык, задайте defaultclass= язык в /etc/adduser.conf .

Чтобы переопределить эту настройку при создании пользователя, введите требуемую локаль в запросе командной строки:

Enter login class: default []:

или укажите её в команде adduser(8) :

# adduser -class язык

Если для добавления новых пользователей используется pw , укажите локаль так:

# pw useradd имя_пользователя -L язык

Изменить класс логина у существующего пользователя можно с помощью chpass , передав имя пользователя через параметр:

# chpass имя_пользователя

20.2.1.2. Файл инициализации оболочки

Второй способ не рекомендуется, поскольку для каждой используемой оболочки требуется ручная конфигурация, при этом в каждой оболочке используется собственный файл конфигурации и разный синтаксис. Например, чтобы задать немецкий язык в оболочке sh , эти строчки можно было бы добавить в ~/.profile для настройки оболочки отдельного пользователя. Также их можно было бы добавить в /etc/profile или /usr/shared/skel/dot.profile , чтобы применить ко всем пользователям:

LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET

Тем не менее, путь к файлу конфигурации и используемый синтаксис отличаются в оболочке csh . Следующие настройки можно одинаково успешно задать в ~/.csh.login , /etc/csh.login и /usr/shared/skel/dot.login :

setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO-8859-1

Используемый в ~/.xinitrc синтаксис для настройки Xorg также зависит от оболочки. Первый пример для оболочки sh , и второй для csh :

LANG=de_DE.ISO8859-1; export LANG
setenv LANG de_DE.ISO8859-1

20.2.2. Настройка консоли

Для консоли имеется несколько локализованных шрифтов. Для их просмотра наберите ls /usr/shared/syscons/fonts . Чтобы настроить консольный шрифт, укажите в /etc/rc.conf имя_шрифта без расширения .fnt :

font8x16=имя_шрифта
font8x14=имя_шрифта
font8x8=имя_шрифта

Значения keymap и screenmap можно задать в /etc/rc.conf :

scrnmap=название_screenmap
keymap=название_keymap
keychange="последовательность fkey_number"

Чтобы просмотреть доступные таблицы screenmap, наберите ls /usr/shared/syscons/scrnmaps . Значение screenmap указывается без расширения .scm . Таблица screenmap с соответствующим шрифтом обычно используется в качестве обходного пути для расширения 8 бит до 9 бит в матрице символов шрифта адаптора VGA. Это будет приводить к вынесению букв за границы псевдографической области, если используется 8-битный шрифт.

Чтобы просмотреть доступные таблицы keymap, наберите ls /usr/shared/syscons/keymaps . Значение keymap указывается без расширения .kbd . Чтобы проверить keymap без перезагрузки системы, используйте kbdmap(1) .

Запись keychange обычно нужна для сопоставления функциональных клавиш выбранному типу терминала, поскольку последовательности функциональных клавиш не могут быть определены в keymap.

После этого задайте правильный консольный тип терминала в /etc/ttys для всех виртуальных терминалов. Типы терминалов для набора символов содержит доступные типы терминалов:

Таблица 2. Типы терминалов для набора символов
Набор символов Тип терминала

ISO8859-1 or ISO8859-15

cons25l1

ISO8859-2

cons25l2

ISO8859-7

cons25l7

KOI8-R

cons25r

KOI8-U

cons25u

CP437 (VGA default)

cons25

US-ASCII

cons25w

Для языков с расширенной или многобайтовой кодировкой установите консоль для данного языка из Коллекции Портов FreeBSD. Доступные консоли из Коллекции Портов содержит доступные порты. После установки смотрите pkg-message или страницы Справочника по конфигурации и использованию данного порта.

Таблица 3. Доступные консоли из Коллекции Портов
Язык Расположение порта

Традиционный китайский (BIG-5)

chinese/big5con

Chinese/Japanese/Korean

chinese/cce

Chinese/Japanese/Korean

chinese/zhcon

Japanese

chinese/kon2

Japanese

japanese/kon2-14dot

Japanese

japanese/kon2-16dot

Если moused включен в /etc/rc.conf , может потребоваться дополнительная настройка. По умолчанию драйвер syscons(4) выделяет для курсора мыши в таблице символов диапазон 0xd0 - 0xd3 . Если в языке этот диапазон используется, переместите диапазон курсора посредством добавления следующей строки в /etc/rc.conf :

mousechar_start=3

20.2.3. Настройка Xorg

X Window System описывает процедуру установки и настройки Xorg. Для настройки локализации Xorg в Коллекции Портов FreeBSD имеются дополнительные шрифты и методы ввода. Настройки i18n для отдельных приложений, такие как шрифты и меню, можно внести в ~/.Xresources , чтобы меню в графических приложениях отображались на выбранном языке.

Протокол X Input Method (XIM) - это стандарт Xorg для ввода неанглийских символов. Доступные метода ввода описывает приложения для методов ввода, которые содержатся в Коллекции Портов FreeBSD. Также доступны дополнительные приложения Fcitx и Uim.

Таблица 4. Доступные метода ввода
Язык Метод ввода

китайский

chinese/gcin

китайский

chinese/ibus-chewing

китайский

chinese/ibus-pinyin

китайский

chinese/oxim

китайский

chinese/scim-fcitx

китайский

chinese/scim-pinyin

китайский

chinese/scim-tables

японский

japanese/ibus-anthy

японский

japanese/ibus-mozc

японский

japanese/ibus-skk

японский

japanese/im-ja

японский

japanese/kinput2

японский

japanese/scim-anthy

японский

japanese/scim-canna

японский

japanese/scim-honoka

японский

japanese/scim-honoka-plugin-romkan

японский

japanese/scim-honoka-plugin-wnn

японский

japanese/scim-prime

японский

japanese/scim-skk

японский

japanese/scim-tables

японский

japanese/scim-tomoe

японский

japanese/scim-uim

японский

japanese/skkinput

японский

japanese/skkinput3

японский

japanese/uim-anthy

корейский

korean/ibus-hangul

корейский

korean/imhangul

корейский

korean/nabi

корейский

korean/scim-hangul

корейский

korean/scim-tables

вьетнамский

vietnamese/xvnkb

вьетнамский

vietnamese/x-unikey

20.3. Поиск приложений i18n

i18n приложения пишутся с применением набора i18n в библиотеках. Это позволяет разработчикам писать простые файлы и переводить отображаемые меню и надписи на любые языки.

В Коллекции портов FreeBSD содержится множество приложений со встроенной поддержкой символов с расширенным и многобайтовым представлением для нескольких языков. Чтобы упростить поиск таких приложений, в их названии содержится аббревиатура i18n . Тем не менее, они не всегда поддерживают нужный язык.

Некоторые приложения могут быть собраны с конкретной кодировкой. Обычно это делается через Makefile порта или передачей параметра configure. Для получения этой информации смотрите документацию i18n для соответствующего порта FreeBSD.

20.4. Настройка локализации для некоторых языков

В этом разделе приведены примеры локализации системы FreeBSD на русский язык. В завершение приводится дополнительная информация для локализации на другие языки.

20.4.1. Русский язык (кодировка KOI8-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®, включите в добавляемую в /etc/fstab запись -L с названием локали:

/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"

Дополнительные кириллические шрифты доступны в Коллекции Портов.

Для настройки ввода на русском языке добавьте следующие строки в /etc/xorg.conf , раздел "Keyboard" :

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 на русском может не работать с нелокализованными приложениями. Минимально локализованные приложения должны в начале программы вызывать функцию XtSetLanguageProc (NULL, NULL, NULL); .

За дальнейшими инструкциями по локализации приложений Xorg обращайтесь к странице http://koi8.pp.ru/xwin.html . Для получения более общей информации по KOI8-R смотрите http://koi8.pp.ru/ .

20.4.2. Информация для других языков

В этом разделе приводится дополнительная информация по настройке других локалей.

Традиционный китайский для Тайваня

У проекта FreeBSD-Taiwan есть FreeBSD Chinese HOWTO .

Локализация на греческий язык

Исчерпывающая статья по поддержке греческого во FreeBSD есть в официальной греческой документации здесь .

Локализация на японский и корейский языки

Для японского обратитесь к http://www.jp.FreeBSD.org/ , а для корейского к http://www.kr.FreeBSD.org/ .

Неанглоязычная документация FreeBSD

Контрибьюторы FreeBSD перевели отдельные части документации FreeBSD на другие языки. Эти переводы доступны по ссылкам на сайте FreeBSD или из каталога /usr/shared/doc .


Изменено : 18 февраля 2025 г. by Fernando Apesteguía