msgmerge:打印带有美元符号的价格时“无效的控制序列”
msgmerge: `invalid control sequence` when printing a price with a dollar sign
我想打印,例如 $10,其中数字存储在变量中,我还希望能够围绕价格本地化字符串。
这是我的代码:
__("I understand I will be charged ${$cost} for listing this item.");
这会打印:
I understand I will be charged for listing this item.
如果我不在变量前使用 \$,我会得到以下不带美元符号或成本的内容:
我知道发布此项目需要付费。
好的,没关系。
除了当我 运行 msgmerge 生成用于翻译目的的本地化文件时,它会抱怨:invalid control sequence
似乎不喜欢“\$”部分,因为当我删除它时它就通过了。但我不确定如何安抚 msgmerge 并获得正确打印的成本。
恐怕这不是 gettext 的用途。 PHP 源代码中对国际化函数的调用需要具有静态字符串文字。否则,像 msgmerge 这样的辅助工具无法看到文本,因为它们不执行 PHP,它们只是读取源代码。
通常的做法是这样的:
// Print to stdout
printf(_('I understand I will be charged $%s for listing this item.'), $cost);
... 或:
// Save to a variable
$string = sprintf(_('I understand I will be charged $%s for listing this item.'), $cost);
我想打印,例如 $10,其中数字存储在变量中,我还希望能够围绕价格本地化字符串。
这是我的代码:
__("I understand I will be charged ${$cost} for listing this item.");
这会打印:
I understand I will be charged for listing this item.
如果我不在变量前使用 \$,我会得到以下不带美元符号或成本的内容:
我知道发布此项目需要付费。
好的,没关系。
除了当我 运行 msgmerge 生成用于翻译目的的本地化文件时,它会抱怨:invalid control sequence
似乎不喜欢“\$”部分,因为当我删除它时它就通过了。但我不确定如何安抚 msgmerge 并获得正确打印的成本。
恐怕这不是 gettext 的用途。 PHP 源代码中对国际化函数的调用需要具有静态字符串文字。否则,像 msgmerge 这样的辅助工具无法看到文本,因为它们不执行 PHP,它们只是读取源代码。
通常的做法是这样的:
// Print to stdout
printf(_('I understand I will be charged $%s for listing this item.'), $cost);
... 或:
// Save to a variable
$string = sprintf(_('I understand I will be charged $%s for listing this item.'), $cost);