如何将翻译从模块传递到 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()
函数放在模块的哪个位置。构造函数、钩子、字符串连接,无处不在。
我正在构建一个模块,并且有这样的东西:
$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()
函数放在模块的哪个位置。构造函数、钩子、字符串连接,无处不在。