2016-11-15 3 views
0

Я создал модуль, который переопределяет AdminProductController.php и создает новый массив.PrestaShop: Перевод переопределенного контроллера

<?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', 
     ); 
    } 
} 

Теперь мне нужно перевести текст действия и распространить этот перевод с помощью модуля. Проблема в том, что я не вижу исходный текст внутри модуля, вместо этого он отображается в бэк-офисных переводах.

Итак, есть ли способ добавить эту строку в модульные переводы не к переводу на бэк-офис? .

ответ

1

Основное описание проблемы я нашел здесь: How to get translation from other module in PrestaShop?

Это происходит потому, что translations controller сканирует для $ this-> l ((. *)) внутреннюю папку модуля с помощью regex и добавляет переводимые строки в файл . Поэтому мы должны в модуле сделать что-то вроде этого:

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', 
     ); 
    } 
} 
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', 
     ); 
    } 
} 
+0

Пока это не помогло. Фраза исчезла с вкладки backoffice, но не появилась на вкладке модулей – 1099511627776

0

Попробуйте использовать следующий код вместо $ this-> л («Установить цену на выбранный»)

Перевести :: getModuleTranslation (YOUR_MODULE_NAME, «Задайте цену для выбранного», FILE_NAME);

Смежные вопросы