[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Получение текстовой строки
gettxt(3C) считывает текстовую строку из файла сообщений. Параметры
gettxt(3C): идентификатор сообщения msgid и строка по умолчанию,
dflt_str, которая будет использована, если поиск строки в файле будет
неудачным.
Файлы, содержащие определенные локалью текстовые строки, создаются
командой mkmsgs(1M). Затем эти файлы устанавливаются в директории
/usr/lib/locale/locale/LC_MESSAGES, где locale - это язык, на котором
написаны текстовые строки.
Пользователь может запросить вывод сообщений на заданном языке,
установив переменную среды LC_MESSAGES равной locale. Если LC_MESSAGES
не установлена, будет использована переменная LANG. Если LANG не
установлена, будет использована локаль C. Локаль может также быть
установлена функцией setlocale(3C).
Если gettxt(3C) не сможет найти сообщение в заданной локали, она
попытается считать то же сообщение из локали C. Если она не может
найти сообщение и там, она возвратит dflt_str, если это не пустая
строка. Если dflt_str - пустая строка, то будет возвращен указатель на
строку Message not found!\n локали C.
Первый параметр, msgid - это указатель на строку, содержащую два поля,
разделенных двоеточием. Первое поле определяет имя файла, который
содержит текстовые строки. Этот файл должен находиться в директории
/usr/lib/locale/locale/LC_MESSAGES. Следующее поле - это
последовательный номер строки в файле. Строки нумеруются от 1 до n,
где n - число строк в файле. Например:
char *p;
p = gettxt("UX:10", "hello world\n");
gettxt(3C) возвращает десятую строку в файле
/usr/lib/locale/locale/LC_MESSAGES/UX. Если найти такую строку не
удается, будет возвращен адрес строки по умолчанию, hello world\n.
char *p;
gettxt("app1:3", "");
gettxt(3C) возвращает третью строку в файле
/usr/lib/locale/locale/LC_MESSAGES/app1. Если найти такую строку не
удается, будет возвращен указатель на текстовую строку Message not
found\n.
ПОЛУЧЕНИЕ ТЕКСТОВОЙ СТРОКИ
gettxt(3C)
ИМЯ
gettxt - получить текстовую строку
ИСПОЛЬЗОВАНИЕ
#include <unistd.h>
char * gettxt (const char *msgid, const char *dflt_str);
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
успех - текстовое сообщение
Базы данных сообщений
Когда программа преобразована для использования gettxt(3C),
предоставление поддержки новой локали требует только перевода текста
сообщений на новый язык/набор символов и построения базы данных
командой mkmsgs(1M).
Программа на следующей странице демонстрирует использование
gettxt(3C). Программа считывает сообщение номер 9 из файла сообщений
app2, расположенного в директории LC_MESSAGES локали, определяемой
переменными среды LC_MESSAGES или LANG. gettxt(3C) возвращает
указатель на определяемую локалью текстовую строку. Затем адрес этой
строки передается общей функции, которая выдает пользователю
определенное локалью сообщение.
БАЗЫ ДАННЫХ СООБЩЕНИЙ
main()
{
char *p;
setlocale(LC_MESSAGES, "");
p = gettxt("app2:9", "Enter file name:");
name = ask_file(p);
. . .
}