Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在gettext.po文件中指定有序变量?_Php_Localization_Translation_Gettext_Printf - Fatal编程技术网

Php 如何在gettext.po文件中指定有序变量?

Php 如何在gettext.po文件中指定有序变量?,php,localization,translation,gettext,printf,Php,Localization,Translation,Gettext,Printf,我有一个多语言网站,它使用Zend_Translate PHP数组来处理翻译。它工作得很好,但我正在尝试转换为使用gettext,因为它提供了额外的特性 然而,我还没有发现我在PHP数组翻译中喜欢的功能的gettext等价物:n$position specifier() 我找到了我想要的(注意中英文变量顺序的不同): 但我还没有让它为我工作。我的en/messages.po文件包含以下内容: #, php-format msgid "Earn X cash" msgstr "%1$sEarn 1

我有一个多语言网站,它使用Zend_Translate PHP数组来处理翻译。它工作得很好,但我正在尝试转换为使用gettext,因为它提供了额外的特性

然而,我还没有发现我在PHP数组翻译中喜欢的功能的gettext等价物:n$position specifier()

我找到了我想要的(注意中英文变量顺序的不同):

但我还没有让它为我工作。我的en/messages.po文件包含以下内容:

#, php-format
msgid "Earn X cash"
msgstr "%1$sEarn 1-30%% cash back%2$s, get money-saving coupons, and find the best price on every purchase at %3$s2,500+ stores%4$s."
PHP是这样的(它对数组风格的翻译起作用,我认为它不会改变):


我必须如何编辑.po文件才能工作?或者我不应该使用将.po编译成.mo文件吗?

在我尝试注释这行php-mo.php之后,我的.po和.mo文件工作正常(我的网页看起来很好):

$x=str\u替换(“$”、“\\$”、$x)


事实上,我不知道为什么会有这条线,但删除它让我感到紧张,因为我可能会引入一些我还没有发现的bug。但至少它解决了我能看到的问题

以下是我发现的一个可能有帮助的提示:
#, php-format
msgid "Earn X cash"
msgstr "%1$sEarn 1-30%% cash back%2$s, get money-saving coupons, and find the best price on every purchase at %3$s2,500+ stores%4$s."
<?php echo $this->translate('Earn X cash', '<span class="earnCashBack">', '</span>', '<a href="/stores" class="numStores">', '</a>'); ?>
$sEarn 1-30% cash back$s, get money-saving coupons, and find the best price on every purchase at $s2,500+ stores$s.