Настройки локализации состоят из трёх компонентов: код языка, код страны и кодировка. Из этих частей формируются названия локалей:
КодЯзыка_КодСтраны.Кодировка
КодЯзыка и
КодСтраны используются для
определения страны и конкретного диалекта языка. Таблица 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; exportLANGMM_CHARSET=ISO-8859-1; exportMM_CHARSET
Тем не менее, путь к файлу конфигурации и используемый
синтаксис отличаются в оболочке csh.
Следующие настройки можно одинаково успешно задать в
~/.csh.login,
/etc/csh.login и
/usr/share/skel/dot.login:
setenvLANGde_DE.ISO8859-1 setenvMM_CHARSETISO-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=название_screenmapkeymap=название_keymapkeychange="последовательность 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>.