КодЯзыка_КодСтраны.Кодировка
Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD .
FreeBSD - это распределенный проект, пользователи и контрибьюторы которого находятся в самых разных частях света. Поэтому FreeBSD поддерживает локализацию на многие языки, что позволяет просматривать, вводить и обрабатывать данные на языках, отличных от английского. Можно выбрать среди большинства основных языков, в том числе: китайский, немецкий, японский, корейский, французский, русский и вьетнамский.
Термин интернационализация (
internationalization
) сокращают до i18n, по числу символов в английском слове. Сокращение L10n аналогично получается от слова
localization
. i18n/L10n методы, протоколы и приложения позволяют пользователям использовать языки по своему выбору.
В этой главе обсуждаются особенности интернационализации и локализации FreeBSD, включая следующие темы:
Схема именования локалей.
Установка региональных настроек для оболочки.
Локализация консоли.
Локализация Xorg.
Поиск i18n-совместимых приложений.
Информация по настройке для некоторых языков.
Перед чтением этой главы вам следует знать:
Настройки локализации состоят из трёх компонентов: код языка, код страны и кодировка. Из этих частей формируются названия локалей:
КодЯзыка_КодСтраны.Кодировка
КодЯзыка и КодСтраны используются для определения страны и конкретного диалекта языка. Основные коды языка и страны содержит некоторые примеры пар КодЯзыка_КодСтраны :
| КодЯзыка_КодСтраны | Описание |
|---|---|
|
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.
Для настроек локализации используется пользовательский ~/.login_conf или инициализационый файл пользовательской оболочки: ~/.profile , ~/.bashrc или ~/.cshrc .
Следует задать две переменные окружения:
LANG
задаёт локаль
*
MM_CHARSET
задаёт набор символов MIME для приложений
В дополнение к настройкам пользовательской оболочки эти переменные также следует задать в конфигурации конкретного приложения и в конфигурации Xorg.
Существует два способа выполнить необходимые присвоения переменным: класс логина , который является рекомендуемым, и файл инициализации . В следующих двух разделах будет показано, как использовать оба способа.
Первый способ является рекомендуемым, поскольку в нём необходимые для выбора локализации и набора символов 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
В дополнение к ручному редактированию /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 имя_пользователя
Второй способ не рекомендуется, поскольку для каждой используемой оболочки требуется ручная конфигурация, при этом в каждой оболочке используется собственный файл конфигурации и разный синтаксис. Например, чтобы задать немецкий язык в оболочке
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
Для консоли имеется несколько локализованных шрифтов. Для их просмотра наберите
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 для всех виртуальных терминалов. Типы терминалов для набора символов содержит доступные типы терминалов:
| Набор символов | Тип терминала |
|---|---|
|
ISO8859-1 or ISO8859-15 |
|
|
ISO8859-2 |
|
|
ISO8859-7 |
|
|
KOI8-R |
|
|
KOI8-U |
|
|
CP437 (VGA default) |
|
|
US-ASCII |
|
Для языков с расширенной или многобайтовой кодировкой установите консоль для данного языка из Коллекции Портов FreeBSD. Доступные консоли из Коллекции Портов содержит доступные порты. После установки смотрите pkg-message или страницы Справочника по конфигурации и использованию данного порта.
| Язык | Расположение порта |
|---|---|
|
Традиционный китайский (BIG-5) |
|
|
Chinese/Japanese/Korean |
|
|
Chinese/Japanese/Korean |
|
|
Japanese |
|
|
Japanese |
|
|
Japanese |
Если moused включен в
/etc/rc.conf
, может потребоваться дополнительная настройка. По умолчанию драйвер
syscons(4)
выделяет для курсора мыши в таблице символов диапазон
0xd0
-
0xd3
. Если в языке этот диапазон используется, переместите диапазон курсора посредством добавления следующей строки в
/etc/rc.conf
:
mousechar_start=3
X Window System описывает процедуру установки и настройки Xorg. Для настройки локализации Xorg в Коллекции Портов FreeBSD имеются дополнительные шрифты и методы ввода. Настройки i18n для отдельных приложений, такие как шрифты и меню, можно внести в ~/.Xresources , чтобы меню в графических приложениях отображались на выбранном языке.
Протокол X Input Method (XIM) - это стандарт Xorg для ввода неанглийских символов. Доступные метода ввода описывает приложения для методов ввода, которые содержатся в Коллекции Портов FreeBSD. Также доступны дополнительные приложения Fcitx и Uim.
| Язык | Метод ввода |
|---|---|
|
китайский |
|
|
китайский |
|
|
китайский |
|
|
китайский |
|
|
китайский |
|
|
китайский |
|
|
китайский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
японский |
|
|
корейский |
|
|
корейский |
|
|
корейский |
|
|
корейский |
|
|
корейский |
|
|
вьетнамский |
|
|
вьетнамский |
i18n приложения пишутся с применением набора i18n в библиотеках. Это позволяет разработчикам писать простые файлы и переводить отображаемые меню и надписи на любые языки.
В
Коллекции портов FreeBSD
содержится множество приложений со встроенной поддержкой символов с расширенным и многобайтовым представлением для нескольких языков. Чтобы упростить поиск таких приложений, в их названии содержится аббревиатура
i18n
. Тем не менее, они не всегда поддерживают нужный язык.
Некоторые приложения могут быть собраны с конкретной кодировкой. Обычно это делается через Makefile порта или передачей параметра configure. Для получения этой информации смотрите документацию i18n для соответствующего порта FreeBSD.
В этом разделе приведены примеры локализации системы FreeBSD на русский язык. В завершение приводится дополнительная информация для локализации на другие языки.
В этом разделе приведены настройки, специфичные для локализации системы 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 на русском может не работать с нелокализованными приложениями. Минимально локализованные приложения должны в начале программы вызывать функцию
|
За дальнейшими инструкциями по локализации приложений Xorg обращайтесь к странице http://koi8.pp.ru/xwin.html . Для получения более общей информации по KOI8-R смотрите http://koi8.pp.ru/ .
В этом разделе приводится дополнительная информация по настройке других локалей.
У проекта FreeBSD-Taiwan есть FreeBSD Chinese HOWTO .
Исчерпывающая статья по поддержке греческого во FreeBSD есть в официальной греческой документации здесь .
Для японского обратитесь к http://www.jp.FreeBSD.org/ , а для корейского к http://www.kr.FreeBSD.org/ .
Контрибьюторы FreeBSD перевели отдельные части документации FreeBSD на другие языки. Эти переводы доступны по ссылкам на сайте FreeBSD или из каталога /usr/shared/doc .
Изменено : 18 февраля 2025 г. by Fernando Apesteguía