如何将翻译从模块传递到 prestashop 中的 smarty 模板?

How to pass translations from a module to a smarty template in prestashop?

我正在构建一个模块,并且有这样的东西:

$custom_menu = '<ul class="main-menu custom-menu">'.
  '<li class="collections">' . $this->l("Collections") . $this->get_collections_menu($collections) . '</li>'.
  '<li class="styles">' . $this->l("Styles") . $this->get_styles_menu($collections) . '</li>'.
  '<li class="pearls">' . $this->l("Pearls") . $this->get_pearls_menu($collections_category_link) . '</li>'.
  '<li class="prices">' . $this->l("Prices") . $this->get_prices_menu($collections_category_link) . '</li>'.
  '<li class="categories hide-for-large-up">' . $this->l("Categories") . $this->get_categories_menu() . '</li>'.
'</ul>';

$this->context->smarty->assign('custom_menu', $custom_menu);

一切顺利,菜单会出现。我的问题是翻译:我无法在后台找到它们进行编辑。这段代码有什么问题?

翻译php

$this->l('Text')

翻译 tpl

{l s='Text' mod='Name Module'}

你的情况

'<li class="collections">{l s='Collections' mod='Name Module'}'

好的,我刚刚找到了解决方案:字符串必须用单引号分隔,而不是双引号。所以不是这个:

'<li class="collections">' . $this->l("Collections") . $this->get_collections_menu($collections) . '</li>'

使用这个:

'<li class="collections">' . $this->l('Collections') . $this->get_collections_menu($collections) . '</li>'

换句话说:$this->('your string') 可以。

然后您会在后台翻译面板上的 'module translations' 翻译类型下找到要翻译的字段。

而且无论您将 l() 函数放在模块的哪个位置。构造函数、钩子、字符串连接,无处不在。