当使用xgettext生成.pot文件时,在生成的文件顶部我得到如下信息:
# SOME DESCRIPTIVE TITLE.
...
#, fuzzy
...#, fuzzy是什么意思?
如果翻译是模糊的(质量很差),我知道这意味着什么,但是在顶级中.pot文件意味着什么呢?
发布于 2017-06-08 16:11:34
当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“注释在此上下文中是有意义的,如文档所示:
模糊条目通常需要译者进行修改。
发布于 2015-10-22 13:35:15
来自模糊项的gettext
模糊条目,即使它们解释了大多数其他目的的翻译条目,通常需要译者进行修改。这些可能是通过应用程序msgmerge来根据新的PO模板文件更新旧的已翻译的PO文件来产生的,当这个工具假设一些新的msgid只被稍微修改了一些旧的msgid,并选择对它认为是新修改的条目的旧翻译。原始字符串( msgid字符串)的轻微更改通常应该反映在已翻译的字符串中,这需要译者的干预。因此,msgmerge可能会将一些条目标记为模糊的。
我看到了#, fuzzy在使用Django生成消息文件(.po)时出现,以及原始文本(msgid)被更改的地方,在这种情况下,译者应该知道翻译文本也应该更改。
https://stackoverflow.com/questions/15653093
复制相似问题