From 5c4abb03c2c5d28524700cd838414766894ab4d0 Mon Sep 17 00:00:00 2001 From: lLefevre Date: Wed, 2 May 2012 16:07:45 +0000 Subject: [PATCH] // 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 --- classes/Translate.php | 10 +++++++++- config/smartyadmin.config.inc.php | 2 +- config/smartyfront.config.inc.php | 11 ++++++++++- controllers/admin/AdminTranslationsController.php | 2 +- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/classes/Translate.php b/classes/Translate.php index 8cf54e129..b1486a4b4 100644 --- a/classes/Translate.php +++ b/classes/Translate.php @@ -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]; diff --git a/config/smartyadmin.config.inc.php b/config/smartyadmin.config.inc.php index e13a299bb..6423b3692 100644 --- a/config/smartyadmin.config.inc.php +++ b/config/smartyadmin.config.inc.php @@ -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) == '.') diff --git a/config/smartyfront.config.inc.php b/config/smartyfront.config.inc.php index d9ecccaa5..39bc1e083 100644 --- a/config/smartyfront.config.inc.php +++ b/config/smartyfront.config.inc.php @@ -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); } diff --git a/controllers/admin/AdminTranslationsController.php b/controllers/admin/AdminTranslationsController.php index 8f8926dda..db518fb17 100644 --- a/controllers/admin/AdminTranslationsController.php +++ b/controllers/admin/AdminTranslationsController.php @@ -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':