首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xgettext不识别定义为宏的字符串。

xgettext不识别定义为宏的字符串。
EN

Stack Overflow用户
提问于 2016-09-01 10:08:22
回答 1查看 250关注 0票数 0

对于xgettext工具如何解析C源文件和收集字符串以进行进一步的翻译,我有一些误解。

我使用xgettext工具版本0.10.35,结果发现它在解析过程中不识别像宏一样定义的字符串。

例如,我们有带有下一个内容的test_xgettext.c文件:

代码语言:javascript
复制
#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文件:

代码语言:javascript
复制
# 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 <LL@li.org>\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 ""

这里我们在POT文件中只有"string 2“,我的目标是同时收集"string 1”和"string 2“。

提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-15 19:26:10

如果我们使用数组而不是宏,那么它对xgettext 0.10.35起作用。

修改后的源文件:

代码语言:javascript
复制
#include <stdio.h>

#define    _(str)         str

char    STRING_1[]  =       _("string 1");

int main(void)
{
    printf(STRING_1);
    printf(_("string 2"));
    return 0;
}

在本例中,我们在POT文件中有下一个输出(我忽略了不重要的行):

代码语言:javascript
复制
#: test_xgettext.c:5
msgid "string 1"
msgstr ""

#: test_xgettext.c:10
msgid "string 2"
msgstr ""

结果还发现,它的工作原理与最初预期的xgettext版本0.19.8.1 (Windows 7 Professional)一样。源文件:

代码语言:javascript
复制
#include <stdio.h>

#define    _(str)         str

#define    STRING_1       _("string 1")

int main(void)
{
    printf(STRING_1);
    printf(_("string 2"));
    return 0;
}

生成的POT文件:

代码语言:javascript
复制
#: test_xgettext.c:5
msgid "string 1"
msgstr ""

#: test_xgettext.c:10
#, c-format
msgid "string 2"
msgstr ""
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39268645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档