Prestashop 1.6L法

Prestashop 1.6L法,prestashop,prestashop-1.6,Prestashop,Prestashop 1.6,翻译有一个问题,如果翻译丢失,prestashop将返回空字符串,而不是键。 有人知道控制器中使用的“l”方法的位置吗 $this->l('string', 'mod'); //This will output '' if string is not translated. 如果值为空,我想修改该方法并使其返回键,但我找不到它。我假设您指的是AdminController,因为它是唯一使用该函数的方法。它使用以下功能: protected function l($string, $cla

翻译有一个问题,如果翻译丢失,prestashop将返回空字符串,而不是键。 有人知道控制器中使用的“l”方法的位置吗

$this->l('string', 'mod'); //This will output '' if string is not translated.

如果值为空,我想修改该方法并使其返回键,但我找不到它。

我假设您指的是AdminController,因为它是唯一使用该函数的方法。它使用以下功能:

protected function l($string, $class = null, $addslashes = false, $htmlentities = true)
{
    if ($class === null || $class == 'AdminTab') {
        $class = substr(get_class($this), 0, -10);
    } elseif (strtolower(substr($class, -10)) == 'controller') {
        /* classname has changed, from AdminXXX to AdminXXXController, so we remove 10 characters and we keep same keys */
        $class = substr($class, 0, -10);
    }
    return Translate::getAdminTranslation($string, $class, $addslashes, $htmlentities);
}
在您的情况下,它将调用Translate::getAdminTranslation('string','mod',false,true)

在Translate::getAdminTranslation中 我们有:

由于它没有$_LANGADM[$class.$key],它将调用:

$str = Translate::getGenericAdminTranslation($string, $key, $_LANGADM);
在您的例子中,$str=Translate::GetGenericadAdminTranslation('string',md5('string'),$\u LANGADM)

在这方面,我们有:

...
if (isset($lang_array['AdminController'.$key])) {
    $str = $lang_array['AdminController'.$key];
} elseif (isset($lang_array['Helper'.$key])) {
    $str = $lang_array['Helper'.$key];
} elseif (isset($lang_array['AdminTab'.$key])) {
    $str = $lang_array['AdminTab'.$key];
} else {
    // note in 1.5, some translations has moved from AdminXX to helper/*.tpl
    $str = $string;
}
return $str;
因此,默认情况下,如果找不到键,则返回尝试转换的相同字符串。因此,不需要更改函数


另一方面,确保字符串已被转换为空字符串。您还可以调试这些函数,以确保您的类是正确的,并且存储相应翻译的文件没有这些字符串的空翻译。

我只能添加文件的位置:classes/Translate.phpOne更多问题。如果翻译丢失,返回空字符串而不是重新运行键,这不是很奇怪吗?我不理解第一条注释。但我碰巧遇到了空字符串。lang文件以某种方式将翻译保存到一个空字段中。例如:$("404(fbda9855d18740f110534305c126")]='';
...
if (isset($lang_array['AdminController'.$key])) {
    $str = $lang_array['AdminController'.$key];
} elseif (isset($lang_array['Helper'.$key])) {
    $str = $lang_array['Helper'.$key];
} elseif (isset($lang_array['AdminTab'.$key])) {
    $str = $lang_array['AdminTab'.$key];
} else {
    // note in 1.5, some translations has moved from AdminXX to helper/*.tpl
    $str = $string;
}
return $str;