我需要在Prestashop中传递带有翻译字符串的变量。在后端可以这样做
sprintf($this->l('The number is %1$d'), $number);
但是在使用SMARTY时我需要在前端执行此操作吗?有人帮我吗?
答案 0 :(得分:6)
类似的东西:
{l s='The number is %1$d' sprintf=$number}
答案 1 :(得分:2)
1-在带有@skiplecariboo答案{l s='The number is %1$d' sprintf=$number}
的PrestShop v1.7.4上,我得到了:
可捕获的致命错误:参数2传递给 PrestaShopBundle \ Translation \ TranslatorComponent :: trans()必须为 类型数组,给定的字符串,在 /vagrant/httpdocs/config/smartyfront.config.inc.php行210和 定义
2-对于official 3rd party module translation method {l s='The number is %1$d' sprintf=$number mod='my_module'}
,我遇到了相同的错误:
可捕获的致命错误:参数2传递给 PrestaShopBundle \ Translation \ TranslatorComponent :: trans()必须为 类型数组,给定的字符串,在 /vagrant/httpdocs/config/smartyfront.config.inc.php行210和 定义
3-通过official native module translation method {l s='The number is %1$d' sprintf=$number d='Modules.my_module'}
,我会得到:
无法翻译“数字为%1 $ d” module:my_module / my_module.tpl。 sprintf()参数应为 数组。
所以,对我来说,解决方案是将$number
变量设置为数组:
{l s='The number is %1$d' sprintf=[$number] mod='my_module'}
NB:%1$d
标志用于十进制,对于字符串,请使用:%1$s
(source)
答案 2 :(得分:0)
这是你如何在变换后的字符串中传递变量
{l s='Comment: # %id%' mod='ayalinecomments' sprintf=['%id%' => $comment.id_ayalinecomments_comment]}
prestashop将通过我的变量$ comment.id_ayalinecomments_comment
替换%id%TY