Опубликован: 15.06.2004 | Доступ: свободный | Студентов: 2290 / 579 | Оценка: 4.35 / 3.96 | Длительность: 27:47:00
ISBN: 978-5-9556-0011-6
Лекция 14:

Заключение

< Лекция 13 || Лекция 14: 12345678910

Языково-культурная среда

Согласно стандарту POSIX -2001, языково-культурная среда - это часть пользовательского окружения, зависящая от языковых и культурных соглашений.

Под настройкой на языково-культурную среду понимается процесс формирования данных, специфичных для поддержки конкретных естественных языков, местных настроек и кодировок символов. Иногда подобный процесс называют локализацией, в противоположность интернационализации - процессу подготовки приложений, способных настраиваться на различные языково-культурные среды.

языково-культурная среда формируется из данных нескольких именованных категорий. Каждая управляет определенными аспектами поведения компонентов системы. Имена и назначение категорий соответствуют следующим переменным окружения: LC_CTYPE (классификация символов, преобразование регистра), LC_COLLATE (порядок алфавитного сравнения символов ), LC_MONETARY (форматирование денежных величин), LC_NUMERIC (форматирование числовых величин), LC_TIME (форматы даты и времени), LC_MESSAGES (форматы сообщений и интерактивных ответов).

Категории подразделяются на более мелкие элементы , средством именования которых служат ключевые слова.

В каждой реализации определены одна или несколько языково-культурных сред. Поддержка POSIX -среды с именами-синонимами "POSIX"и "C" является обязательной.

Стандартом POSIX -2001 предусмотрены две переменные окружения, определяющие все категории языково-культурной среды: LC_ALL (значение этой переменной учитывается в первую очередь), lang (ее значение учитывается в последнюю очередь).

Общая логика использования средств интернационализации/локализации состоит в следующем. пользователь, присваивая соответствующие значения описанным выше переменным окружения, идентифицирует свою языково-культурную среду. Приложения могут опросить данные о целевой среде с помощью функции setlocale() и произвести настройку интернационализированных компонентов.

При создании новой языково-культурной среды ее определение в исходном формате помещается в файлы, которые должны быть обработаны утилитой localedef.

Для получения информации о языково-культурных средах предназначена служебная программа locale.

Функция setlocale() служит для установки и/или опроса всей языково-культурной среды вызывающего процесса или отдельных категорий.

Получить детальную информацию о категориях LC_MONETARY и LC_NUMERIC текущей языково-культурной среды поможет функция localeconv().

Для преобразования денежных величин в цепочку символов в соответствии с настройками текущей языково-культурной среды можно воспользоваться функцией strfmon(), входящей в XSI -расширение стандарта POSIX -2001.

Если требуется получить детальную информацию обо всех аспектах языково-культурной среды , следует прибегнуть к функции NL_LANGINFO(), также отнесенной стандартом POSIX -2001 к расширению XSI.

Функция strerror() отображает номера (коды) ошибок в сообщения, зависящие от языково-культурной среды .

Развитые средства для работы с каталогами сообщений (диагностических, информационных), выдаваемых приложениями, вынесены в расширение XSI стандарта POSIX -2001. Идея состоит в том, чтобы в интернационализированных программах фигурировали не сами сообщения, а их идентификаторы в каталоге, который для каждой языково-культурной среды может быть своим.

Стандарт не специфицирует формат каталогов сообщений, но предлагает служебную программу gencat для их генерации по исходному описанию.

В прикладной программе работа с каталогами сообщений осуществляется посредством функций catopen(), catgets() и catclose().

Функция catopen() открывает каталог сообщений и возвращает его дескриптор, который затем используется в вызове catgets() для чтения сообщения.

Функция catclose() закрывает каталог сообщений.

На этом мы завершаем описание базовых средств программирования приложений в стандарте POSIX.

< Лекция 13 || Лекция 14: 12345678910
Антон Коновалов
Антон Коновалов

В настоящее время актуальный стандарт - это POSIX 2008 и его дополнение POSIX 1003.13
Планируется ли актуализация материалов данного очень полезного курса?

Павел Храмцов
Павел Храмцов
Россия
Денис Комаров
Денис Комаров
Россия, Москва