Настройки локализации состоят из трёх компонентов: код языка, код страны и кодировка. Из этих частей формируются названия локалей:
КодЯзыка
_КодСтраны
.Кодировка
КодЯзыка
и
КодСтраны
используются для
определения страны и конкретного диалекта языка. Таблица 20.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.
Для настроек локализации используется
пользовательский ~/.login_conf
или
инициализационый файл пользовательской оболочки:
~/.profile
,
~/.bashrc
или
~/.cshrc
.
Следует задать две переменные окружения:
В дополнение к настройкам пользовательской оболочки эти переменные также следует задать в конфигурации конкретного приложения и в конфигурации 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/share/skel/dot.profile
, чтобы
применить ко всем пользователям:
LANG
=de_DE.ISO8859-1; exportLANG
MM_CHARSET
=ISO-8859-1; exportMM_CHARSET
Тем не менее, путь к файлу конфигурации и используемый
синтаксис отличаются в оболочке csh
.
Следующие настройки можно одинаково успешно задать в
~/.csh.login
,
/etc/csh.login
и
/usr/share/skel/dot.login
:
setenvLANG
de_DE.ISO8859-1 setenvMM_CHARSET
ISO-8859-1
Используемый в ~/.xinitrc
синтаксис для настройки Xorg
также зависит от оболочки. Первый пример для оболочки
sh
, и второй для
csh
:
LANG
=de_DE.ISO8859-1; exportLANG
setenv LANG
de_DE.ISO8859-1
Для консоли имеется несколько локализованных шрифтов.
Для их просмотра наберите
ls /usr/share/syscons/fonts
.
Чтобы настроить консольный шрифт,
укажите в /etc/rc.conf
имя_шрифта
без расширения
.fnt
:
font8x16=имя_шрифта
font8x14=имя_шрифта
font8x8=имя_шрифта
Значения keymap и screenmap можно задать в
/etc/rc.conf
:
scrnmap=название_screenmap
keymap=название_keymap
keychange="последовательность fkey_number
"
Чтобы просмотреть доступные таблицы screenmap, наберите
ls /usr/share/syscons/scrnmaps
. Значение
screenmap
указывается без
расширения .scm
. Таблица screenmap с
соответствующим шрифтом обычно используется в качестве
обходного пути для расширения 8 бит до 9 бит в матрице символов
шрифта адаптора VGA. Это будет приводить к вынесению букв за
границы псевдографической области,
если используется 8-битный шрифт.
Чтобы просмотреть доступные таблицы keymap, наберите
ls /usr/share/syscons/keymaps
. Значение
keymap
указывается без расширения
.kbd
. Чтобы проверить keymap без
перезагрузки системы, используйте kbdmap(1).
Запись keychange
обычно нужна для
сопоставления функциональных клавиш выбранному типу
терминала, поскольку последовательности функциональных клавиш
не могут быть определены в keymap.
После этого задайте правильный консольный тип терминала
в /etc/ttys
для всех виртуальных
терминалов. Таблица 20.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. Таблица 20.3, <<Доступные консоли из Коллекции Портов>> содержит доступные
порты. После установки смотрите
pkg-message
или страницы Справочника
по конфигурации и использованию данного порта.
Язык | Расположение порта |
---|---|
Традиционный китайский (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
Глава 6, X Window System описывает процедуру установки и
настройки Xorg. Для настройки
локализации Xorg в Коллекции
Портов FreeBSD имеются дополнительные шрифты и методы ввода.
Настройки i18n для отдельных приложений,
такие как шрифты и меню, можно внести в
~/.Xresources
, чтобы меню в графических
приложениях отображались на выбранном языке.
Протокол X Input Method (XIM) - это стандарт Xorg для ввода неанглийских символов. Таблица 20.4, <<Доступные метода ввода>> описывает приложения для методов ввода, которые содержатся в Коллекции Портов FreeBSD. Также доступны дополнительные приложения Fcitx и Uim.
Язык | Метод ввода |
---|---|
китайский | 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 |
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.