php - Gettext 和 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”是“%”符号后面的字母。 (例如“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/

相关文章:

javascript - 如何获取地理位置然后自动提交表单而无需单击按钮

html - <select> 列表增加高度

python - 是否可以从 Sphinx 文档生成单个 .pot 文件?

php - 使用文本文档将大量关键字插入 mysql

php - Laravel 4 HTML 图像

php - 在 php 中创建函数包括 while 循环

c - 如何将目录添加到 autoconf 的库搜索路径

php - php 提供下载后刷新

html - 插件编辑器 HTML TinyMCE vs CKEditor

php - 创建 php 后端替代 poedit