Prestashop 1.6L法
翻译有一个问题,如果翻译丢失,prestashop将返回空字符串,而不是键。 有人知道控制器中使用的“l”方法的位置吗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
$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;