Gettext 和 POedit - 验证带有“%”的文件时出错
Gettext & POedit - Errors validating files with '%'
对于 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) 使用 & #37 ;而不是翻译字符串中的“%”。
4) 在翻译字符串中使用 'percent' 而不是 '%'。
我是不是遗漏了什么或者我应该替换源文本中所有“%”的实例?
编辑
所以我试着修改我的源文本。
我将源代码中的“%”替换为“%%”,并且能够输入“& #37 ;”进入翻译并验证 .po 文件。
但是...它不起作用,我的英文版本现在只有前端的“%%”,不会翻译成任何语言。
备注
'& #37 ;'它实际上没有空格,如果我不把它们放在那里,它只会显示为 %,所以我无法展示示例。
因此,当您在 POedit 中验证文件时,如果存在此类错误,它会在实际文件中添加如下内容:
#, php-format
将“%”保留原样并删除它似乎可行,但我不确定这是否会导致后续问题。
在您的源代码和生成的 .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。
您可以输入来源:%
我想你也可以使用 %但是我没试过。
请记住,如果 % 符号在源代码中而不是在翻译中,就会出现问题。您可以在翻译中使用 % 符号而不会出错。
对于 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) 使用 & #37 ;而不是翻译字符串中的“%”。
4) 在翻译字符串中使用 'percent' 而不是 '%'。
我是不是遗漏了什么或者我应该替换源文本中所有“%”的实例?
编辑
所以我试着修改我的源文本。
我将源代码中的“%”替换为“%%”,并且能够输入“& #37 ;”进入翻译并验证 .po 文件。
但是...它不起作用,我的英文版本现在只有前端的“%%”,不会翻译成任何语言。
备注
'& #37 ;'它实际上没有空格,如果我不把它们放在那里,它只会显示为 %,所以我无法展示示例。
因此,当您在 POedit 中验证文件时,如果存在此类错误,它会在实际文件中添加如下内容:
#, php-format
将“%”保留原样并删除它似乎可行,但我不确定这是否会导致后续问题。
在您的源代码和生成的 .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。
您可以输入来源:% 我想你也可以使用 %但是我没试过。
请记住,如果 % 符号在源代码中而不是在翻译中,就会出现问题。您可以在翻译中使用 % 符号而不会出错。