代码之家  ›  专栏  ›  技术社区  ›  Paddy Hallihan

Gettext&POedit-验证具有“%”的文件时出错

  •  1
  • Paddy Hallihan  · 技术社区  · 6 年前

    第一:

    a format specification for argument 1 doesn't exist in 'msgstr'
    

    第二:

    msgstr is not a valid PHP string, unlike 'msgid'. Reason: In the directive number 1, the character 'a' is not a valid conversion specifier.
    

    为了解决这个问题,我试过:

    1) 将以下行添加到.po文件头:

    "Content-Type: text/plain; charset=UTF-8\n"
    "X-Poedit-SourceCharset: UTF-8\n"
    

    2) 根据 How can I escape '%' character in a gettext string?

    3) 在转换字符串中使用&37;而不是“%”。

    4) 在转换字符串中使用“percent”而不是“%”。

    我是否丢失了某些内容,或者应该替换源文本中“%”的所有实例?

    编辑

    所以我试着搞乱我的源代码。

    但是。。。。它不起作用,我的英文版现在只有“%”在前端,它不会翻译成任何语言。

    注意

    “&37;”中实际上没有空格,如果我不把它们放在那里,它只显示为%,所以我无法显示示例。

    2 回复  |  直到 5 年前
        1
  •  1
  •   Paddy Hallihan    6 年前

    因此,在POedit中验证文件时,如果出现这种类型的错误,它会向实际文件添加类似的内容:

    #, php-format
    

    保持“%”原有的方式并删除它似乎可以工作,但我不确定这是否会导致问题。

        2
  •  1
  •   Guido Flohr    6 年前

    在源代码中缺少示例 .po 文件,我只能猜测。您可能可以在以下源代码中修复您的问题:

    /* xgettext: no-php-format */
    echo(gettext("string with % sign"));
    

    这个 xgettext: 特别意见记录在 https://www.gnu.org/software/gettext/manual/html_node/c_002dformat-Flag.html#c_002dformat-Flag