Языково-культурная среда
Согласно стандарту 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.