Xgettext: не могу извлечь строки из исходников на C

Аватар пользователя DRVTiny

Мне нужно извлечь все символьные строки string, оформленные таким вот образом в исходниках на C: _(string), для этого я пытаюсь использовать xgettext, но... почему-то у меня получается извлекать либо вообще все строки, встречающиеся в файле (т.е. буквально всё, что заключено в двойные кавычки), либо совсем ничего. Я перепробовал уже множество вариантов указания опций --keyword и --flag, но, видимо, так и не смог подобрать нужное значение.
Файл, на котором я "тренируюсь", выглядит так:

#include
#include
#if HAVE_UNISTD_H
# include
#endif
#include "gettext.h"
#define _(string) gettext (string)

int main ()
{
setlocale (LC_ALL, "");
textdomain ("hello-c");
bindtextdomain ("hello-c", LOCALEDIR);
printf ("%s\n", _("Hello, world!"));
printf (_("This program is running as process number %d."), getpid ());
putchar ('\n');
return 0;
}

Соответственно, мне нужно, чтобы в msgid попадали только строки Hello, world! и This program is running as process number %d., а не всё подряд (при использовании xgettext -a)! Может, мне стоит плюнуть на xgettext и написать собственный скрипт для извлечения только нужных мне строк?

Аватар пользователя rjaan

Re: xgettext: не могу извлечь строки из исходников на C

По позжее отвечу... вопрос времени

Единственно, что хочу сказать, что копаете в нужном направлении.
проверте наличие hello-c по указзаном пути LOCALEDIR в bindtextdomain.

И все же я бы по правил, но нет времени проверить:

#include 
#include 
#if HAVE_UNISTD_H
# include 
#endif
#include "gettext.h"
#define _(string) gettext (string)

int main ()
{
char* currently_txt_domain;
setlocale (LC_ALL, "");
bindtextdomain ("hello-c", LOCALEDIR);
textdomain ("hello-c");

printf ("%s\n", _("Hello, world!"));
printf (_("This program is running as process number %d."), getpid ());
putchar ('\n');
return 0;

}

По идеи должно работать...

Аватар пользователя DRVTiny

Re: xgettext: не могу извлечь строки из исходников на C

Странно.. А xgettext'у-то зачем эти правки кода на С? Он же, насколько я понимаю, просто оформленные определённым образом строки по всему тексту собирает и формирует из них *.po-файл? Т.е. анализом, и уж тем более - интерпретацией кода xgettext (не путать с gettext'ом!) не занимается, а сборка программы - это уже другая совершенно другая стадия процесса локализации исходников... Или я неправ?..

RSS-материал