Prestashop 1.6升方法

问题描述:

翻译有问题,如果翻译缺失prestashop正在返回空字符串,而不是关键字。 有没有人知道在控制器中使用'l'方法的位置?Prestashop 1.6升方法

$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); 
} 

在你的情况下,它会叫翻译:: getAdminTranslation( '串', '国防部',假,真)

在翻译:: getAdminTranslation 我们:

[$类$键]
... 
$string = preg_replace("/\\\*'/", "\'", $string); 
$key = md5($string); 
if (isset($_LANGADM[$class.$key])) { 
    $str = $_LANGADM[$class.$key]; 
} else { 
    $str = Translate::getGenericAdminTranslation($string, $key, $_LANGADM); 
} 
... 

既然不会有$ _LANGADM,它会调用:

$str = Translate::getGenericAdminTranslation($string, $key, $_LANGADM); 

你的情况$ str = Translate :: getGenericAdminTranslation('string',md5('string'),$ _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; 

所以,在默认情况下,如果没有键被找到,返回试图翻译相同的字符串。所以不需要改变功能。

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

+0

我只能添加文件的位置:classes/Translate.php – nikksan

+0

还有一个问题。如果翻译缺失而不是重新调用密钥,返回空字符串是不是很奇怪? – nikksan

+0

我没有理解第一个评论。但正如我所遇到的空弦一样。 lang文件以某种方式将翻译保存为空白字段。例如:$ _LANG ['404_d0fbda9855d118740f1105334305c126'] =''; – sadlyblue