gettext - xgettext 生成的 .pot 文件顶部的 #,fuzzy 是什么意思?

标签 gettext xgettext

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

# SOME DESCRIPTIVE TITLE.
...
#, fuzzy
...
#, fuzzy有什么用意思?

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

最佳答案

xgettext添加 #, fuzzy当它在消息文件中自动生成项目 header 时,条目位于顶部。评论本身并没有什么特殊意义:它只是指出人类需要站出来填补空白。

让我们更深入地挖掘一下源头。

第一次创建消息文件时,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 entries] usually call for revision by the translator.

关于gettext - xgettext 生成的 .pot 文件顶部的 #,fuzzy 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15653093/

相关文章:

管理页面的 Django 国际化 - 翻译模型名称和属性

django - 获取与 django 1.x 集成的 jinja2 模板的翻译字符串?

php - OSX 中的 xgettext 从 PHP 代码创建 .po 文件

php - 只需要 xgettext 生成的翻译字符串,而不是源文件中的所有字符串

c++ - 使用带有 --extract-all 的 xgettextt 处理复数

wordpress - xgettext 不提取 HTML 属性中的字符串

python - GTK3下如何将文本域绑定(bind)到本地文件夹以获取gettext

php - Gettext 不能通过 php-cli 工作,但可以在 php-apache 中工作

c# - 语言相关部分子串的国际化 (i18n)

translation - 支持 ngettext 样式复数形式的 GNU gettext PO 文件的 Google 翻译服务