Виктор Костромин - Linux для пользователя
- Название:Linux для пользователя
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Виктор Костромин - Linux для пользователя краткое содержание
Linux для пользователя - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
В стандарте POSIX (Portable Operating System) были определены средства локализации, которые состоят из следующих компонент:
• набор библиотечных ( libc) вызовов (locale API): setlocale(), isalpha(), toupper(), и т.д;
• исходные тексты описания средств локализации, в том числе файл(ы) описания кодировки (Character Set Definition File);
• наборы данных для локализации, которые в Linux размещаются в каталогах /usr/share/i18n/* и /usr/share/locale/*;
• утилита для получения информации о средствах локализации: locale;
• утилита для изготовления (компиляции) объектов локализации: localedef;
• переменные окружения, для управления средствами локализации: LANG, LC_ALL, LC_CTYPE, LC_TIME, LC_COLLATE, LC_NUMERIC и LC_MONETARY (они соответствуют категориям локализации).
В табл.11.1 кратко перечислено, на что именно влияет та или иная из этих переменных (или категорий локализации).
Таблица 11.1. Категории локализации.
Категория | Описание |
---|---|
LC_CTYPE | Определяет правила классификации и преобразования одиночных символов . Позволяет правильно определять вид символа: цифра, буква, значок, заглавная буква или прописная и т.д. Другими словами, включает правильную работу системных вызовов isalnum(), isalpha(), iscntrl(), isdigit(),… и т.п. для местного алфавита. Вдобавок, включает правильный перевод строчных - прописных букв: toupper() и tolower() |
LC_COLLATE | Определяет правила сравнения и преобразования строк . Позволяет определять лексикографический порядок символов (порядок сортировки) в местном алфавите. Включает правильную работу strcoll() и strxfrm() . Оказывает непосредственное влияние на работу утилит типа sort и т.д. |
LC_TIME | Определяет правила национального представления времени и даты . Задает именование дней недели, месяцев и т.п. а также задает способ написания даты и времени (12/24). Hепосредственно влияет на strftime() , а через нее на утилиты date и т.д. |
LC_NUMERIC | Определяет правила национального представления чисел с плавающей точкой. Влияет на strtod() и форматы %f и %g printf(), scanf() |
LC_MONETARY | Определяет правила национального представления денежных величин |
Особая переменная LC_ALL служит для обращения одновременно ко всем категориям.
Заметим, что включение средств локализации изменяет также некоторые пути поиска, в частности, пути поиска к файлам помощи (man-страницам), так что вначале команда man ищет переведенные man-страницы и только при их отсутствии выдает информацию на английском.
Подводя краткий итог всему вышеизложенному, можно сказать, что процедура русификации системы состоит из следующих этапов:
• настройка средств локализации;
• русификация текстового режима (консоли);
• русификация графического режима;
• русификация используемого ПО;
• русификация процесса печати.
В последующих разделах каждый из этих этапов рассматривается по отдельности.
11.2. Настройка системных средств локализации
11.2.1. Проверка наличия средств локализации
Современные дистрибутивы Linux (а тем более русифицированные) по умолчанию содержат системные средства локализации, перечисленные в предыдущем разделе.
Чтобы убедиться в этом, проверьте, что у вас имеются каталоги /usr/share/locale/* и /usr/share/i18n/*, а также файл /etc/sysconfig/i18n.
Кроме того, дайте команду
[user]$ locale
В ответ вы должны получить значения, присвоенные переменным окружения для управления средствами локализации. Я, например, увидел следующее:
LANG=ru
LC_CTYPE="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_ALL=ru_RU.KOI8-R
Можно также дать команду locale с параметром, совпадающим с именем одной из переменных окружения, например:
[user]$ locale LC_TIME
(но я не берусь объяснить то, что вы увидите).
Если результат этих проверок отрицательный (что маловероятно), то установите пакет локализации для русского языка. Найти его можно в коллекции средств локализации по адресу http://www.ping.be/linux/locales/ или на www.kiarchive.ru.
После этого надо сказать Linux, какой язык вы хотите использовать, для чего необходимо задать значения переменных окружения для управления средствами локализации: LC_CTYPE, LC_TIME, LC_COLLATE, LC_NUMERIC, и LC_MONETARY. Вообще говоря, достаточно задать всего одну переменную LC_ALL, задание которой одновременно определяет значения всех перечисленных выше переменные.
Есть еще две переменных окружения, которые имеют отношение к локализации: LANG и LINGUAS. Они действуют примерно так же, как и LC_ALL, в том смысле, что они определяют значения по умолчанию всех других переменных локализации, но, в отличие от LC_ALL, они не переопределяют значений других переменных LC_*, для которых значения заданы отдельно.
Переменная LINGUAS является GNU-расширением переменой LANG. Не все программы знают о существовании этой переменой (хотя не знают очень немногие, и таких все меньше), но эта переменная обладает тем преимуществом, что она позволяет задать несколько вариантов локализации, в порядке предпочтения. В большинстве случаев достаточно задать только одну переменную локализации - LANG. Если вы хотите использовать несколько вариантов локализации, то надо задать LANG и LINGUAS. Остальные переменные необходимо задавать только в особых случаях, которые мы здесь не рассматриваем.
11.2.2. Формат задания значений переменных локализации
В качестве значений переменных локализации используются строки формата
ll[_CC[.EEEE]][@dddd],
где
• ll - это двухбуквенный код языка в соответствии со стандартом ISO для названий языков (ISO 639), записываемый в нижнем регистре (строчными латинскими буквами);
• CC - это двухбуквенный код страны в соответствии со стандартом ISO для названий стран (ISO 3166), записываемый в верхнем регистре;
• EEEE - это имя (название) таблицы кодировки, записываемое в верхнем регистре;
• dddd - название диалекта языка, который задается в том случае, если названия кодировки недостаточно для однозначного определения варианта локализации.
Для переменной LINGUAS задаваемые значения разделяются двоеточиями. Пример строки задания значений переменной вы уже видели: ru_RU.KOI8-R.
Как уже говорилось, стандарта на названия кодовых таблиц нет, тем более на название диалектов. То, что в шаблоне дано только 4 символа, ничего не означает - символов может быть и больше, и меньше. Квадратные скобки, как всегда, выделяют необязательные элементы. Обязательным в этом шаблоне является только название языка, но в некоторых источниках рекомендуется для русского языка указывать все три части. Напомню еще, что аббревиатура SU теперь означает Судан, а не нашу страну.
11.2.3 Включение средств локализации
Интервал:
Закладка: