[<<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);
      . . .
  }