用模块覆盖模板的英文翻译

时间:2015-09-03 08:05:00

标签: php templates module smarty prestashop

我需要覆盖一个类和一个模板。为了实现这一点,我选择创建一个新模块,以便在Prestashop更新时不被阻止。对于压倒一流的课程,我没有问题。

担心是覆盖模板,字段是英文,而在我的网站的其余部分,它们是法语(当我卸载模块时,它们用法语返回)。

在我的模块中,我用这种方式覆盖模板:

public function hookDisplayOverrideTemplate($params)
    {
        $controllerName = get_class($params['controller']);
        $tpl = $this->local_path . 'override/tpl/' . $controllerName . '.tpl';
        if (file_exists($tpl))
        {
            return $tpl;
        }
        return false;
    }

在我的.tpl文件中,未翻译的字段如下:

{l s='Your addresses'}

所以,我试图在/my_module/translations/fr.php中插入fr.php文件,然后我编辑了它:

<?php
global $_MODULE;
$_MODULE = array();
$_MODULE['<{customaddresses}prestashop>customaddresses_3908e1afa0ff22fbf112aff3c5ba55c1'] = 'Vos adresses';

然后,我修改了.tpl文件:

{l s='Your addresses' mod='customaddresses'}

我的领域仍然是英文。 有人有建议的解决方案吗?

1 个答案:

答案 0 :(得分:0)

经过大量的研究,我发现了我的问题。

我的解决方案是:$_MODULE['<{customaddresses}prestashop>address_0f68b904e33d9ac04605aecc958bcf52'] = 'Informations supplémentaires';

我用“address_”(我的重写模板)替换了“customaddresses_”。

我保持:

{l s='Your addresses' mod='customaddresses'}

更合适的是,我改变了一下我的方法hookDisplayOverrideTemplate:

public function hookDisplayOverrideTemplate($params)
{
    $controllerName = get_class($params['controller']);
    $tpl = $this->local_path . 'override/tpl/' . strtolower(str_replace("Controller", "", $controllerName)) . '.tpl';
    if (file_exists($tpl))
    {
        return $tpl;
    }
    return false;
}