alert(Joomla.vmText._('true));?>')); * will generate an alert message containing 'Default' * it will generate a 'Default' string * * @param string $string The string to translate. * @param mixed $jsSafe Boolean: Make the result javascript safe. * @param boolean $interpretBackSlashes To interpret backslashes (\\=\, \n=carriage return, \t=tabulation) * @param boolean $script To indicate that the string will be push in the javascript language store * * @return string The translated string or the key is $script is true * * @since 11.1 */ public static function _($string, $jsSafe = false, $interpretBackSlashes = true, $script = false) { if(!isset(self::$language)){ vmError('vmText self::$languages has no '.self::$language,'There is a problem with the language contact the administrator.',4); } if (is_array($jsSafe)) { if (array_key_exists('interpretBackSlashes', $jsSafe)) { $interpretBackSlashes = (boolean) $jsSafe['interpretBackSlashes']; } if (array_key_exists('script', $jsSafe)) { $script = (boolean) $jsSafe['script']; } if (array_key_exists('jsSafe', $jsSafe)) { $jsSafe = (boolean) $jsSafe['jsSafe']; } else { $jsSafe = false; } } if ($script) { self::$strings[$string] = self::$language->_($string, $jsSafe, $interpretBackSlashes); return $string; } else { return self::$language->_($string, $jsSafe, $interpretBackSlashes); } } /** * Passes a string thru a sprintf. * * Note that this method can take a mixed number of arguments as for the sprintf function. * * The last argument can take an array of options: * * array('jsSafe'=>boolean, 'interpretBackSlashes'=>boolean, 'script'=>boolean) * * where: * * jsSafe is a boolean to generate a javascript safe strings. * interpretBackSlashes is a boolean to interpret backslashes \\->\, \n->new line, \t->tabulation. * script is a boolean to indicate that the string will be push in the javascript language store. * * @param string $string The format string. * * @return string The translated strings or the key if 'script' is true in the array of options. * * @since 11.1 */ public static function sprintf($string) { $args = func_get_args(); $count = count($args); if ($count > 0) { if (is_array($args[$count - 1])) { $args[0] = self::$language->_( $string, array_key_exists('jsSafe', $args[$count - 1]) ? $args[$count - 1]['jsSafe'] : false, array_key_exists('interpretBackSlashes', $args[$count - 1]) ? $args[$count - 1]['interpretBackSlashes'] : true ); if (array_key_exists('script', $args[$count - 1]) && $args[$count - 1]['script']) { self::$strings[$string] = call_user_func_array('sprintf', $args); return $string; } } else { //@Todo creates trouble with %1 ? foreach($args as &$arg){ $arg = self::$language->_($arg); //$arg = preg_replace('/\[\[%([0-9]+):[^\]]*\]\]/', '%\1$s', $arg); //vmdebug('my sprintf $arg', $arg); } } //$args[0] = preg_replace('/\[\[%([0-9]+):[^\]]*\]\]/', '%\1$s', $args[0]); try { return call_user_func_array('sprintf', $args); } catch (Throwable $t) { vmEcho::$logDebug = 1; vmdebug('vmText sprintf throwed error',$args); vmEcho::$logDebug = 0; } //return call_user_func_array('sprintf', $args); } return ''; } /** * Translates a string into the current language. * * Examples: * `` will generate a 'All' string in English but a "Toutes" string in French * `` will generate a 'All' string in English but a "Tous" string in French * * @param string $string The string to translate. * @param string $alt The alternate option for global string * @param mixed $jsSafe Boolean: Make the result javascript safe. * @param boolean $interpretBackSlashes To interpret backslashes (\\=\, \n=carriage return, \t=tabulation) * @param boolean $script To indicate that the string will be pushed in the javascript language store * * @return string The translated string or the key if $script is true * * @since 11.1 */ public static function alt($string, $alt, $jsSafe = false, $interpretBackSlashes = true, $script = false) { if (\vmLanguage::getLanguage()->hasKey($string . '_' . $alt)) { $string .= '_' . $alt; } return static::_($string, $jsSafe, $interpretBackSlashes, $script); } }