Что означает #, fuzzy в верхней части файла .pot, сгенерированного xgettext?

При использовании xgettext для создания файла .pot в верхней части сгенерированного файла я получаю следующее:

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

Что означает #, fuzzy?

Я знаю, что это значит, если перевод нечеткий (он плохого качества), но что это значит в верхней части файла .pot?


person Community    schedule 27.03.2013    source источник
comment
Если есть ответ, я полагаю, что он где-то здесь: gnu.org /software/gettext/manual/gettext.html   -  person David Mason    schedule 08.10.2013


Ответы (2)


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 <[email protected]>\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" имеет смысл в этом контексте, как указано в документах:

[Нечеткие записи] обычно требуют исправления переводчиком.

person bishop    schedule 08.06.2017

Из gettext в Fuzzy-Entries:

Нечеткие записи, даже если они учитывают переведенные записи для большинства других целей, обычно требуют исправления переводчиком. Их можно создать, применив программу msgmerge для обновления старых переведенных файлов PO в соответствии с новым файлом шаблона PO, когда этот инструмент предполагает, что какой-то новый msgid был лишь немного изменен по сравнению со старым, и выбирает пару, которую он считает быть старым переводом для новой измененной записи. Небольшие изменения в исходной строке (строке msgid) часто должны отражаться в переведенной строке, и для этого требуется вмешательство переводчика. По этой причине msgmerge может помечать некоторые записи как нечеткие.

Я видел, как #, fuzzy появлялся при создании файла сообщения (.po) с помощью Django, и где исходный текст (msgid) был изменен, и в этом случае переводчик должен знать, что переведенный текст также должен быть изменен.

person EquipDev    schedule 22.10.2015