我创建了一个覆盖AdminProductController.php并创建新的bulk_action的模块。
<?php
class AdminProductsController extends AdminProductsControllerCore
{
public function __construct()
{
parent::__construct();
$this->bulk_actions['setprice'] = array(
'text' => $this->l('Set a price for selected'),
'icon' => 'icon-price',
);
}
}
现在我需要翻译动作文本并将该翻译与模块一起分发。 问题是,我没有在模块翻译中看到原始文本,而是在后台翻译中可见。
那么,有没有办法将这个字符串添加到模块翻译而不是后台翻译?
答案 0 :(得分:1)
您可以通过创建希望翻译所在的模块实例来实现。
class AdminProductsController extends AdminProductsControllerCore
{
public function __construct()
{
parent::__construct();
$module = Module::getInstanceByName('modulename');
$this->bulk_actions['setprice'] = array(
'text' => $module->l('Set a price for selected'),
'icon' => 'icon-price',
);
}
}
答案 1 :(得分:1)
我在这里找到的主要问题描述:How to get translation from other module in PrestaShop?
这是因为翻译控制器使用正则表达式扫描模块文件夹中的$ this-&gt; l((。*))并将可翻译的字符串添加到文件中 所以我们应该在模块中做这样的事情:
class MyModule extends Module
{
public static $l = null;
public function __construct()
{
parent::__construct();
$this::$l = $this->l('Set a price for selected');
}
}
在控制器中,我们可以做@TheDrot建议的内容:
class AdminProductsController extends AdminProductsControllerCore
{
public function __construct()
{
parent::__construct();
$module = Module::getInstanceByName('modulename');
$this->bulk_actions['setprice'] = array(
'text' => $module->l('Set a price for selected'),
'icon' => 'icon-price',
);
}
}
答案 2 :(得分:0)
尝试使用以下代码代替$ this-&gt; l('为所选'设置价格)
翻译:: getModuleTranslation(YOUR_MODULE_NAME,'为所选',FILE_NAME设置价格);