Gettext和POedit-使用'%'验证文件时出错

时间:2018-08-22 11:54:50

标签: php html gettext html-entities poedit

我在POedit中带有'%'符号的字符串遇到了一些不同的错误。

第一:

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.

在这种情况下,“ a”是“%”符号后面的字母。 (例如,“ 100%不锈钢”变成“ 100%不可氧化”)

要尝试解决此问题,我已经尝试过:

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)使用%而不是翻译字符串中的'%'。

4)在翻译字符串中使用“百分比”代替“%”。

我丢失了某些内容还是应该替换源文本中所有'%'实例?

任何帮助或建议,将不胜感激。

/ ----------编辑---------- \

所以我很想弄乱我的原始文本。

我在源中将'%'替换为'%%',并能够放入'%'进入翻译文件并验证.po文件。

但是...。它不起作用,我的英语版本现在前端只有'%%',并且不会翻译成任何语言。

/ ----------注意---------- \

'%'里面实际上没有空格,如果我不把空格放在那里,它只会显示为%,因此我无法显示示例。

3 个答案:

答案 0 :(得分:1)

我只能猜测一下您的源代码和生成的.po文件中的一个示例。您可能可以通过以下来源解决问题:

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

我不是PHP程序员。如果语法错误,请问。

https://www.gnu.org/software/gettext/manual/html_node/c_002dformat-Flag.html#c_002dformat-Flag中记录了xgettext:特殊注释(种类为...)。

答案 1 :(得分:0)

因此,当您在POedit中验证文件时,如果出现此类错误,则会在实际文件中添加以下内容:

#, php-format

仅保留'%'的样子并删除它似乎可行,尽管我不确定这是否会引起问题。

答案 2 :(得分:0)

您可以输入您的来源:% 我想您也可以使用%但我没有尝试过。

请记住,如果%符号出现在源代码中而不是翻译中,则会出现问题。您可以在翻译中使用%符号,而不会出现错误。