对于 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% acier inoxydable”)
为了尝试解决这个问题,我尝试过:
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 ;”进入翻译并验证 .po 文件。
但是......它不起作用,我的英文版本现在前端只有“%%”,并且不会翻译成任何语言。
注意
“%”实际上没有空格,如果我不把它们放在那里,它只会显示为 %,所以我无法显示示例。
最佳答案
由于源代码和生成的 .po
文件中缺少示例,我只能猜测。您可能可以在如下来源中解决您的问题:
/* xgettext: no-php-format */
echo(gettext("string with % sign"));
我不是 PHP 程序员。如果语法错误,请原谅。
xgettext:
特殊注释记录在(有点...)https://www.gnu.org/software/gettext/manual/html_node/c_002dformat-Flag.html#c_002dformat-Flag .
关于php - Gettext 和 POedit - 验证文件时出错 '%',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51966306/