// 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:
lLefevre
2012-05-02 16:07:45 +00:00
parent 28c780af86
commit 5c4abb03c2
4 changed files with 21 additions and 4 deletions
+9 -1
View File
@@ -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];
+1 -1
View File
@@ -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) == '.')
+10 -1
View File
@@ -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':