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

问题描述 投票:0回答:4

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

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

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

smarty translation prestashop
4个回答
7
投票

类似这样的:

{l s='The number is %1$d' sprintf=$number}

2
投票

1 - 在 PrestShop v1.7.4 上,@skiplecariboo 回答

{l s='The number is %1$d' sprintf=$number}
我得到:

可捕获的致命错误:参数 2 传递给 PrestaShopBundle\Translation\TranslatorComponent::trans() 必须是 类型数组,给定的字符串,调用 /vagrant/httpdocs/config/smartyfront.config.inc.php 第 210 行和 定义

2 - 使用官方第3方模块翻译方法

{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 - 通过官方原生模块翻译方法

{l s='The number is %1$d' sprintf=$number d='Modules.my_module'}
,我得到:

无法翻译“The number is %1$d” 模块:my_module/my_module.tpl。 sprintf() 参数应该是 数组。

所以,我的解决方案是将

$number
变量设置为数组:

{l s='The number is %1$d' sprintf=[$number] mod='my_module'}

注意:

%1$d
标志代表十进制,对于字符串,使用:
%1$s
source


1
投票

这是在翻译后的字符串中传递变量的方法

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

prestashop 将用我的变量 $comment.id_ayalinecomments_comment 替换 %id%


0
投票

这个适用于文本字符串:

{l s="Search in %s" sprintf=[$your_var] d="Shop.YourTextDomain"}
© www.soinside.com 2019 - 2024. All rights reserved.