// Fix sprintf translation for theme and modules
git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@15015 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
@@ -121,7 +121,7 @@ class TranslateCore
|
||||
* @param string $source
|
||||
* @return string
|
||||
*/
|
||||
public static function getModuleTranslation($module, $string, $source)
|
||||
public static function getModuleTranslation($module, $string, $source, $sprintf = false)
|
||||
{
|
||||
global $_MODULES, $_MODULE, $_LANGADM;
|
||||
|
||||
@@ -176,6 +176,14 @@ class TranslateCore
|
||||
else
|
||||
$ret = stripslashes($string);
|
||||
|
||||
if ($sprintf)
|
||||
{
|
||||
if (!is_array($sprintf))
|
||||
$sprintf = array($sprintf);
|
||||
|
||||
$ret = vsprintf($ret, $sprintf);
|
||||
}
|
||||
|
||||
$lang_cache[$cache_key] = str_replace('"', '"', $ret);
|
||||
}
|
||||
return $lang_cache[$cache_key];
|
||||
|
||||
@@ -42,7 +42,7 @@ function smartyTranslate($params, &$smarty)
|
||||
|
||||
// If the template is part of a module
|
||||
if (!empty($params['mod']))
|
||||
return Translate::getModuleTranslation($params['mod'], $params['s'], basename($filename, '.tpl'));
|
||||
return Translate::getModuleTranslation($params['mod'], $params['s'], basename($filename, '.tpl'), $sprintf);
|
||||
|
||||
// If the tpl is at the root of the template folder
|
||||
if (dirname($filename) == '.')
|
||||
|
||||
@@ -34,6 +34,7 @@ function smartyTranslate($params, &$smarty)
|
||||
if (!isset($params['js'])) $params['js'] = 0;
|
||||
if (!isset($params['pdf'])) $params['pdf'] = false;
|
||||
if (!isset($params['mod'])) $params['mod'] = false;
|
||||
if (!isset($params['sprintf'])) $params['sprintf'] = false;
|
||||
|
||||
$string = str_replace('\'', '\\\'', $params['s']);
|
||||
$filename = ((!isset($smarty->compiler_object) || !is_object($smarty->compiler_object->template)) ? $smarty->template_resource : $smarty->compiler_object->template->getTemplateFilepath());
|
||||
@@ -46,7 +47,7 @@ function smartyTranslate($params, &$smarty)
|
||||
|
||||
$lang_array = $_LANG;
|
||||
if ($params['mod'])
|
||||
return Translate::getModuleTranslation($params['mod'], $params['s'], $basename);
|
||||
return Translate::getModuleTranslation($params['mod'], $params['s'], $basename, $params['sprintf']);
|
||||
else if ($params['pdf'])
|
||||
return Translate::getPdfTranslation($params['s']);
|
||||
|
||||
@@ -60,6 +61,14 @@ function smartyTranslate($params, &$smarty)
|
||||
if ($msg != $params['s'])
|
||||
$msg = $params['js'] ? addslashes($msg) : stripslashes($msg);
|
||||
|
||||
if ($params['sprintf'])
|
||||
{
|
||||
if (!is_array($params['sprintf']))
|
||||
$params['sprintf'] = array($params['sprintf']);
|
||||
|
||||
$msg = vsprintf($msg, $params['sprintf']);
|
||||
}
|
||||
|
||||
return $params['js'] ? $msg : Tools::htmlentitiesUTF8($msg);
|
||||
}
|
||||
|
||||
|
||||
@@ -791,7 +791,7 @@ class AdminTranslationsControllerCore extends AdminController
|
||||
{
|
||||
case 'front':
|
||||
// Parsing file in Front office
|
||||
$regex = '/\{l s=\''._PS_TRANS_PATTERN_.'\'( js=1)?\}/U';
|
||||
$regex = '/\{l s=\''._PS_TRANS_PATTERN_.'\'( sprintf=.*)?( js=1)?\}/U';
|
||||
break;
|
||||
|
||||
case 'back':
|
||||
|
||||
Reference in New Issue
Block a user