Я неправильно понимаю, как инструмент xgettext анализирует исходные файлы C и собирает строки для дальнейшего перевода.
Я использую инструмент xgettext версии 0.10.35, и оказалось, что он не распознает строки, определенные как макросы, во время синтаксического анализа.
Например, у нас есть файл test_xgettext.c со следующим содержимым:
#include <stdio.h>
#define _(str) str
#define STRING_1 _("string 1")
int main(void)
{
printf(STRING_1);
printf(_("string 2"));
return 0;
}
Если мы бежим
xgettext.exe test_xgettext.c -o test_xgettext.pot -k_
у нас будет файл test_xgettext.pot со следующим содержимым:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2016-09-01 12:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
#: test_xgettext.c:10
msgid "string 2"
msgstr ""
Здесь у нас есть только «строка 2» в файле POT, и моя цель - собрать как «строку 1», так и «строку 2».
Заранее благодарю за помощь.