[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Руководство по управлению системой: Операционная система и устройства


Применение средств работы с сообщениями

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

Для вывода сообщений с помощью сценариев оболочки или с помощью командной строки применяются следующие две команды работы с сообщениями:

dspcat Показывает весь каталог сообщений или его часть.
dspmsg Показывает выбранное сообщение из каталога

Эти команды используют переменную среды NLSPATH для поиска каталога сообщений. Значение переменной среды NLSPATH представляет собой список каталогов файловой системы, в которых хранятся каталоги сообщений. Поиск в этих каталогах выполняется в том порядке, в котором они заданы в переменной. Например:

NLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/prime/%N

Специальные переменные %L и %N определены следующим образом:

%L Задает каталог файловой системы, в котором хранятся каталоги сообщений для конкретной локали. Имя каталога хранится в переменной LC_MESSAGES или в переменной LANG. Переменным среды LANG, LC_ALL и LC_MESSAGES пользователь присваивает значение локали для каталогов сообщений.
%N Задает имя каталога сообщений, который необходимо открыть.

Если команде dspcat не удается найти указанное сообщение, то она показывает сообщение по умолчанию. Если сообщение по умолчанию содержит строки форматирования %n$, его необходимо заключить в одиночные кавычки. Если команде dspcat не удается найти указанное сообщение и сообщение по умолчанию не задано, то выдается системное сообщение об ошибке.

Следующий пример позволяет просмотреть все сообщения из каталога сообщений msgerrs.cat с помощью команды dspcat:

/usr/lib/nls/msg/$LANG/msgerrs.cat:
dspcat msgerrs.cat

Будут показаны следующие данные:

1:1 Не удалось открыть каталог сообщений %s
Уже открыто максимальное возможное число каталогов
1:2 Файл %s не является исполняемым файлом
2:1 Сообщение %d из набора %d не найдено

Просмотрев таким образом содержимое каталога сообщений, можно определить номера ИД сообщений, связанных с исходным файлом сообщений msgerrs с помощью команды mkcatdefs, и изменить символьные идентификаторы. Символьные идентификаторы нельзя непосредственно использовать в команде dspmsg, но с помощью команды dspcat можно определить номера сообщений.

Ниже приведен пример простого сценария runtest, который показывает, как можно использовать команду dspmsg:

if [ - x ./test ]
    ./test;
else
    dspmsg  msgerrs.cat -s 1 2 '%s НЕ ЯВЛЯЕТСЯ ИСПОЛНИМЫМ ФАЙЛОМ \n' "test";
    exit;

Примечание: Если, как в приведенных примерах, не указывать полный путь, то необходимо предварительно присвоить переменной среды NLSPATH такое значение, чтобы команда dspcat выполняла поиск каталога сообщений в правильном каталоге файловой системы. Значение LC_MESSAGES и LANG также влияет на путь, применяемый при поиске каталога.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]