xgettext
adds the #, fuzzy
entry at the top when it auto-generates a project header in the message file. The comment has no special meaning, per se: it's just noting that a human needs to come along and fill in the gaps.
Let's dig a little deeper into the source.
When you first create a message file, xgettext
adds project information to the top of the generated message file (unless you pass --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 ""
The logic backing this is found in xgettext.c:construct_header()
. Way down at the bottom of that function, the newly-generated header information is marked fuzzy:
mp->is_fuzzy = true;
Since this text has been marked as fuzzy, the #, fuzzy
comment tag is added to the text. The intent here is to raise awareness: a computer program added text to the message file, and a human needs to take action. In particular, a human needs to come along and fill in the blanks: revision date, translator name, language, and so on.
Using the "#, fuzzy" annotation makes sense in this context, as per the docs:
[Fuzzy entries] usually call for revision by the translator.