10

当使用xgettext生成.pot文件时,在生成文件的顶部我得到这个:

# SOME DESCRIPTIVE TITLE.
...
#, fuzzy
...

是什么#, fuzzy意思?

我知道如果翻译模糊(质量很差)是什么意思,但文件顶部的意思是.pot什么?

4

2 回答 2

3

xgettext#, fuzzy当它在消息文件中自动生成项目标头时,在顶部添加条目。该评论本身没有特殊含义:它只是指出人类需要出现并填补空白。

让我们深入挖掘一下源。

首次创建消息文件时,xgettext将项目信息添加到生成的消息文件的顶部(除非您通过--omit-header):

$ cat hello.c
int main() {
  printf(gettext("Hello World\n"));
  return 0;
}

$ xgettext -o- hello.c
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-08 11:51-0400\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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: hello.c:3
#, c-format
msgid "Hello World\n"
msgstr ""

支持这一点的逻辑可在xgettext.c:construct_header(). 在该函数的底部,新生成的标题信息被标记为模糊:

mp->is_fuzzy = true;

由于此文本已被标记为模糊,因此将#, fuzzy注释标记添加到文本中。这里的目的是提高意识:计算机程序将文本添加到消息文件中,并且人类需要采取行动。特别是,需要一个人来填写空白:修订日期、翻译者姓名、语言等。

根据文档,在这种情况下使用“#,fuzzy”注释是有意义的:

【模糊词条】通常需要译者修改。

于 2017-06-08T16:11:34.070 回答
2

来自模糊条目上的 gettext

模糊条目,即使它们出于大多数其他目的考虑了翻译条目,通常也需要翻译人员进行修改。这些可以通过应用程序 msgmerge 来根据新的 PO 模板文件更新旧的翻译 PO 文件来生成,当此工具假设某些新的 msgid 仅略微修改了旧的 msgid 并选择配对它的想法时成为新修改条目的旧翻译。原始字符串(msgid 字符串)的细微变化往往会反映在翻译后的字符串中,这需要翻译人员的干预。因此,msgmerge 可能会将某些条目标记为模糊。

#, fuzzy在使用 Django 生成消息文件 (.po) 时看到出现,并且原始文本 ( msgid) 已更改,在这种情况下,翻译人员应该知道翻译后的文本也应该更改。

于 2015-10-22T13:35:15.237 回答