Php Gettext&;POedit-使用';%验证文件时出错';

Php Gettext&;POedit-使用';%验证文件时出错';,php,html,gettext,html-entities,poedit,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”

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) 根据,在翻译字符串中使用%%to而不是“%”

3) 使用%;而不是转换字符串中的“%”

4) 在翻译字符串中使用“百分比”而不是“%”

是否缺少某些内容,或者是否应替换源文本中“%”的所有实例

编辑 所以我试着把我的原文弄乱了

我将源代码中的“%”替换为“%”,并能够输入“%;”输入翻译并验证.po文件

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


“%;”实际上没有空格,如果我没有将它们放在那里,它只显示为%,因此我无法显示示例。

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

#, php-format

保持“%”不变并删除它似乎是可行的,尽管我不确定这是否会导致后续问题。

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

/* xgettext: no-php-format */
echo(gettext("string with % sign"));
我不是PHP程序员。如果语法错误,请原谅


xgettext:
特殊注释记录在。

您可以输入您的源代码:% 我想你也可以用%;但我没有试过


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

这是可行的,但无论何时生成
.po
文件的新版本,它都需要手动交互。此外,当您运行
msgfmt--check
编译
.po
文件时,格式规范是有意义的,检查语法正确性非常重要。