При всем своем величии, I18N не специфична для FreeBSD и является, по сути,
соглашением. Следование этому соглашению помогает FreeBSD, и мы это приветствуем.
Настройки локализации базируются на трех основных терминах: код языка, код страны и
кодировка. Имена локализаций строятся из этих частей следующим образом:
кодязыка_кодстраны.кодировка
Чтобы настроить FreeBSD (или любую другую UNIX®-систему, поддерживающую I18N) на использование
специфического языка, пользователю нужно выяснить коды этого языка и страны (коды страны
сообщают приложению какой именно диалект языка этой страны нужно использовать). К тому
же, веб-браузеры, SMTP/POP серверы, веб-серверы и т.п. делают свой выбор в зависимости от
этого. Далее показаны примеры кодов языка/страны:
Некоторые языки используют не соответствующие ASCII кодировки, которые используют для
кодирования 8 бит, расширенное или многобайтовое представление символов (подробности см.
в multibyte(3)). Старые
приложения не распознают такие кодировки и ошибочно принимают их за управляющие символы.
Новые приложения обычно распознают 8-битные символы. В зависимости от реализации,
пользователю может потребоваться компиляция приложения с поддержкой расширенного или
многобайтного представления символов, или же просто правильная его настройка. Чтобы иметь
возможность вводить и обрабатывать символы с расширенным или многобайтным представлением,
Коллекция портов FreeBSD
предоставляет поддержку разных языков для различных приложений. Смотрите документацию по
I18N в соответствующем порту FreeBSD.
В частности, пользователю необходимо читать прилагаемую к приложению документацию
чтобы решить, как правильно его настроить или указать правильные параметры
configure/Makefile/компилятору.
Следует помнить следующие вещи:
-
Наборы символов, использующие один байт для кодирования символа (см. multibyte(3)),
например, ISO-8859-1, ISO-8859-15, KOI8-R, CP437.
-
Расширенные или многобайтные кодировки, например, EUC, Big5.
Вы можете посмотреть актуальный список наборов символов на сайте IANA
Registry.
Замечание: Вместо этого, FreeBSD версий 4.5 и выше используют X11-совместимые
кодировки для локализации.
В системе Портов и Пакетов FreeBSD в название приложений, поддерживающих I18N,
включена аббревиатура I18N для легкой их идентификации. И, тем
не менее, не все приложения поддерживают требуемый язык.
Обычно достаточно экспортировать значение имени локализации в переменной LANG Вашей оболочки. Это можно сделать в пользовательском ~/.login_conf файле или в инициализационном файле пользовательской
оболочки (~/.profile, ~/.bashrc, ~/.cshrc). Нет надобности устанавливать отдельные параметры
локализации такие как LC_CTYPE, LC_CTIME.
За дополнительной информацией, пожалуйста, обращайтесь к документации FreeBSD по нужному
вам языку.
Вам следует установить следующие переменные окружения в ваших конфигурационных
файлах:
Эти настройки включают конфигурацию оболочки пользователя, конфигурацию конкретных
приложений и конфигурацию X11.
Существует два метода настройки локализации и оба описаны ниже. Первый (рекомендуемый)
заключается в задании переменных в классе
логина, другой метод заключается в задании переменных окружения в инициализационном файле системной
оболочки.
Этот метод позволяет установить переменные окружения, необходимые для установки
локализации и набора символов MIME, однократно для любых оболочек, вместо того, чтобы
добавлять установку этих переменных в инициализационный файл каждой оболочки. Настройка на уровне пользователя может быть
сделана самим пользователем, а Настройка на
уровне администратора требует привилегий суперпользователя.
Вот минимальный пример файла .login_conf в домашнем каталоге
пользователя, в котором задаются обе переменные для кодировки Latin-1:
me:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO8859-1:
Это пример .login_conf, который задает переменные для
Традиционного Китайского языка в кодировке BIG-5. Обратите внимание, что задается намного
больше переменных, потому что некоторое программы некорректно воспринимают переменные
окружения локализации для Китая, Японии и Кореи.
#Пользователи, которые не хотят использовать
денежные единицы
#и форматы времени Тайваня, могут вручную изменить каждую переменную
me:\
:lang=zh_TW.Big5:\
:lc_all=zh_TW.Big:\
: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=xcin": #Setting the XIM Input Server
За подробностями обращайтесь к разделу Настройка на уровне администратора и login.conf(5).
Проверьте, что класс логина пользователя в /etc/login.conf
задает нужный язык. Убедитесь, что эти настройки присутствуют в /etc/login.conf:
language_name:accounts_title:\
: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:
Изменение класса логина с
помощью vipw(8)
Используйте vipw для добавления новых пользователей и
отредактируйте запись о пользователе, чтобы она была похожа на эту:
user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh
Изменение класса логина с
помощью adduser(8)
Используйте adduser для добавления новых пользователей и
сделайте следующее:
-
Установите defaultclass = язык в /etc/adduser.conf.
Помните, что в этом случае вы должны задать default класс для
всех пользователей других языков.
-
Другой способ заключается в задании класса логина каждый раз, когда adduser(8) попросит об
этом:
Enter login class: default []:
-
Еще один способ - использовать следующее для каждого пользователя другого языка,
которого вы хотите добавить:
# adduser -class язык
Изменение класса логина с
помощью pw(8)
Если для добавления новых пользователей вы используете утилиту pw(8), запускайте ее с
такими параметрами:
# pw useradd
имя_пользователя -L язык
Замечание: Этот метод не рекомендуется, потому что он требует разных настроек
для каждой оболочки. Вместо этого используйте Метод класса логина.
Чтобы добавить локализацию и набор символов MIME, просто установите две переменные
окружения, приведенные ниже, в инициализационные файлы оболочек /etc/profile и/или /etc/csh.login. Для
примера мы используем немецкий язык:
В /etc/profile:
LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET
Или в /etc/csh.login:
setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO-8859-1
Как вариант, вы можете добавить установки, приведенные выше в /usr/share/skel/dot.profile (соответствует установкам в /etc/profile выше), или /usr/share/skel/dot.login (соответствует установкам в /etc/csh.login выше).
Для X11:
В $HOME/.xinitrc:
LANG=de_DE.ISO8859-1; export LANG
Или:
setenv LANG de_DE.ISO8859-1
В зависимости от вашей оболочки (см. выше).
Для всех однобайтовых кодовых таблиц, укажите подходящие консольные шрифты в /etc/rc.conf для требуемого языка:
font8x16=имя_шрифта
font8x14=имя_шрифта
font8x8=имя_шрифта
The имя_шрифта берется из каталога /usr/share/syscons/fonts, без указания расширения .fnt.
Убедитесь также в установке правильных значений keymap и screenmap для вашей
однобайтовой кодовой таблицы через /stand/sysinstall. В sysinstall выберите ,
затем . Или добавьте следующие строки в /etc/rc.conf:
scrnmap=screenmap_name
keymap=keymap_name
keychange="fkey_number sequence"
screenmap_name берется из каталога /usr/share/syscons/scrnmaps, без суффикса .scm. Screenmap с соответствующим шрифтом обычно используется в
качестве обходного пути для расширения 8 бит до 9 бит в псевдографическую область VGA
адаптера, например для удаления букв из этой области если используется 8-битный
шрифт.
Если даемон мыши moused включен добавлением в /etc/rc.conf следующей строки:
moused_enable="YES"
прочтите информацию о курсоре мыши в следующем параграфе.
По умолчанию драйвер syscons(4) выделяет
для курсора мыши в таблице символов диапазон 0xd0-0xd3. Если в вашем языке используется
этот диапазон, переместите этот диапазон. В FreeBSD версий до 5.0, добавьте следующую
строку в файл конфигурации ядра:
options SC_MOUSE_CHAR=0x03
Для FreeBSD версий 4.4 и выше включите следующую строку в /etc/rc.conf:
mousechar_start=3
keymap_name берется из каталога /usr/share/syscons/keymaps, без расширения .kbd. Если вы не знаете какую таблицу использовать, запустите kbdmap(1) для
тестирования таблицы без перезагрузки.
keychange обычно требуется для сопоставления функциональных
клавиш выбранному типу терминала, поскольку последовательности функциональных клавиш не
могут быть определены в раскладке клавиатуры.
Убедитесь также, что для всех записей ttyv* в /etc/ttys установлен подходящий тип терминала. Имеющиеся типы
соответствуют следующим кодировкам:
Для расширенных кодировок, а также для многобайтовых кодировок, используйте порт
FreeBSD из каталога /usr/ports/language. Некоторые порты выводят информацию на консоль,
хотя для системы выглядят как последовательные псевдотерминалы, следовательно вы должны
зарезервировать достаточное количество псевдотерминалов и для X11 и для последовательных
псевдоконсолей. Вот неполный список приложений для использования этих кодировок в
консоли:
Хотя X11 не является частью проекта FreeBSD, мы включили сюда некоторую информацию для
пользователей FreeBSD. За детальной информацией обращайтесь к Веб сайту XFree86™ или к сайту того сервера X11, который вы
используете.
В ~/.Xresources, вы можете внести дополнительные I18N
настройки приложений (настройки шрифтов, меню и т.п.).
Установите сервер X11 TrueType® Common (x11-servers/XttXF86srv-common) и TrueType шрифты для используемого языка. После установки
корректного значения locale меню, сообщения и т.д. должны появиться на соответствующем
языке.
Протокол X11 Input Method (XIM) это новый стандарт для всех клиентов X11. Все
приложения X11 должны быть написаны как XIM клиенты, получающие ввод с серверов XIM
Input. Существует несколько XIM серверов, доступных для различных языков.
Некоторые однобайтовые кодовые таблицы обычно поддерживаются принтерами на аппаратном
уровне. Расширенные, или мультибайтовые кодовые таблицы требуют дополнительной настройки.
Мы рекомендуем использование apsfilter. Кроме того, вы можете
преобразовать документ в формат PostScript® или PDF с
помощью поддерживающих соответствующий язык программ.
Файловая система FreeBSD (fast filesystem, FFS) поддерживает 8-битные символы, ее
можно использовать с любой односимвольной кодовой таблицей (см. multibyte(3)), но
кодовые таблицы не хранятся в файловой системе; т.е. ей ничего не известно о порядке
расположения символов в кодовой таблице. Официально FFS пока не поддерживает расширенные
или много символьные кодовые таблицы. Однако, для некоторых расширенных или многобайтовых
кодировок есть неофициальные патчи, включающие их поддержку в FFS. Это всего лишь
временные не переносимые решения или исправления кода и мы решили не включать их в дерево
исходных текстов. Обращайтесь к сайтам по соответствующим языкам за дальнейшей
информацией и патчами.
Файловая система MS-DOS® в FreeBSD может быть
настроена для поддержки перекодировки между MS-DOS,
кодовыми таблицами Unicode и выбранной кодовой таблицей FreeBSD. Обращайтесь к mount_msdos(8) за
подробностями.