我在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文件。
但是...。它不起作用,我的英语版本现在前端只有'%%',并且不会翻译成任何语言。
/ ----------注意---------- \
'%'里面实际上没有空格,如果我不把空格放在那里,它只会显示为%,因此我无法显示示例。
答案 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)
您可以输入您的来源:% 我想您也可以使用%但我没有尝试过。
请记住,如果%符号出现在源代码中而不是翻译中,则会出现问题。您可以在翻译中使用%符号,而不会出现错误。