aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/functions.inc.php19
-rw-r--r--include/template.class.php30
2 files changed, 36 insertions, 13 deletions
diff --git a/include/functions.inc.php b/include/functions.inc.php
index be6c57114..09d104cdc 100644
--- a/include/functions.inc.php
+++ b/include/functions.inc.php
@@ -900,10 +900,11 @@ function get_name_from_file($filename)
}
/**
- * returns the corresponding value from $lang if existing. Else, the key is
- * returned
- *
- * @param string key
+ * translation function
+ * returns the corresponding value from $lang if existing, else the key is returned
+ * if more than one parameter is provided sprintf is applied
+ * @param string $key
+ * @param mixed $args,... optional arguments
* @return string
*/
function l10n($key)
@@ -914,15 +915,21 @@ function l10n($key)
{
if ($conf['debug_l10n'] and !isset($lang[$key]) and !empty($key))
{
- trigger_error('[l10n] language key "'.$key.'" is not defined', E_USER_WARNING);
+ trigger_error('[l10n] language key "'. $key .'" not defined', E_USER_WARNING);
}
$val = $key;
}
+
+ if (func_num_args() > 1)
+ {
+ $val = vsprintf($val, array_slice(func_get_args(), 1));
+ }
+
return $val;
}
/**
- * returns the prinft value for strings including %d
+ * returns the printf value for strings including %d
* return is concorded with decimal value (singular, plural)
*
* @param singular string key
diff --git a/include/template.class.php b/include/template.class.php
index 6b253120a..3ac6e78db 100644
--- a/include/template.class.php
+++ b/include/template.class.php
@@ -95,7 +95,7 @@ class Template {
$this->smarty->registerPlugin('modifiercompiler', 'translate', array('Template', 'modcompiler_translate') );
$this->smarty->registerPlugin('modifiercompiler', 'translate_dec', array('Template', 'modcompiler_translate_dec') );
$this->smarty->registerPlugin('modifier', 'explode', array('Template', 'mod_explode') );
- $this->smarty->registerPlugin( 'modifier', 'get_extent', array($this, 'get_extent') );
+ $this->smarty->registerPlugin('modifier', 'get_extent', array($this, 'get_extent') );
$this->smarty->registerPlugin('block', 'html_head', array($this, 'block_html_head') );
$this->smarty->registerPlugin('block', 'html_style', array($this, 'block_html_style') );
$this->smarty->registerPlugin('function', 'combine_script', array($this, 'func_combine_script') );
@@ -487,7 +487,7 @@ class Template {
}
}
- static function get_php_str_val($str)
+ private static function get_php_str_val($str)
{
if (is_string($str) && strlen($str)>1)
{
@@ -507,19 +507,35 @@ class Template {
static function modcompiler_translate($params)
{
global $conf, $lang;
- if ( $conf['compiled_template_cache_language']
- && ($key=self::get_php_str_val($params[0])) !== null)
+
+ switch (count($params))
{
- if (isset($lang[$key]))
+ case 1:
+ if ($conf['compiled_template_cache_language']
+ && ($key=self::get_php_str_val($params[0])) !== null
+ && isset($lang[$key])
+ ) {
return var_export($lang[$key], true);
+ }
+ return 'l10n('.$params[0].')';
+
+ default:
+ if ($conf['compiled_template_cache_language'])
+ {
+ $ret = 'sprintf(';
+ $ret .= self::modcompiler_translate( array($params[0]) );
+ $ret .= ','. implode(',', array_slice($params, 1));
+ $ret .= ')';
+ return $ret;
+ }
+ return 'l10n('.$params[0].','.implode(',', array_slice($params, 1)).')';
}
- return 'l10n('.$params[0].')';
}
static function modcompiler_translate_dec($params)
{
global $conf, $lang, $lang_info;
- if ( $conf['compiled_template_cache_language'])
+ if ($conf['compiled_template_cache_language'])
{
$ret = 'sprintf(';
if ($lang_info['zero_plural'])