Книга: Linux программирование в примерах

13.3.6. Тестирование переводов в персональном каталоге

13.3.6. Тестирование переводов в персональном каталоге

Коллекция сообщений в программе называется списком сообщений (message catalog). Этот термин применяется также к каждому из переводов сообщений на другой язык. Когда программа установлена, каждый перевод также устанавливается в стандартное место, где gettext() может во время исполнения найти нужный перевод.

Может оказаться полезным разместить переводы не в стандартном, а в другом каталоге, особенно для тестирования программы. Особенно на больших системах, у обычного пользователя может не быть необходимых разрешений для установки файлов в системные каталоги. Функция bindtextdomain() дает gettext() альтернативное место для поиска переводов:

#include <libintl.h> /* GLIBC */
char *bindtextdomain(const char *domainname,
const char *dirname);

Полезные каталоги включают '.' для текущего каталога и /tmp. Может оказаться удобным также получить каталог из переменной окружения, подобно этому:

char *td_dir;
setlocale(LC_ALL, "");
textdomain("killerapp");
if ((td_dir = getenv("KILLERAPP_TD_DIR")) != NULL)
 bindtextdomain("killerapp", td_dir);
bindtextdomain()
должна быть вызвана до вызовов любой из функций из семейства gettext(). Мы увидим пример ее использования в разделе 13.3.8 «Создание переводов»

Оглавление книги


Генерация: 1.156. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз