在Prestashop中传递翻译字符串中的变量

时间:2012-07-05 08:43:25

标签: smarty translation prestashop

我需要在Prestashop中传递带有翻译字符串的变量。在后端可以这样做

sprintf($this->l('The number is %1$d'), $number);

但是在使用SMARTY时我需要在前端执行此操作吗?有人帮我吗?

3 个答案:

答案 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$ssource

答案 2 :(得分:0)

这是你如何在变换后的字符串中传递变量

{l s='Comment: # %id%' mod='ayalinecomments' sprintf=['%id%' => $comment.id_ayalinecomments_comment]}

prestashop将通过我的变量$ comment.id_ayalinecomments_comment

替换%id%

TY