/**
  * Formats the string
  * 
  * @param   string  $key        Key to translate
  * @param   array   $args       A list of string to substitute [optional]
  * @param   string  $catalogue  Dictionary name [optional]
  * @param   string  $charset    Input AND output charset [optional]
  * @return  string  Translated string
  */
 public function format($key, $args = array(), $catalogue = null, $charset = null)
 {
     if ($catalogue === 'null') {
         return $key;
     }
     if (!$this->transcode) {
         return $this->formatString($key, $args, $catalogue);
     }
     if (empty($charset)) {
         $charset = $this->getCharset();
     }
     $s = $this->formatString(sfToolkit::I18N_toUTF8($key, $charset), $args, $catalogue);
     return sfToolkit::I18N_toEncoding($s, $charset);
 }
Example #2
0
 /**
  * Formats the string. That is, for a particular string find
  * the corresponding translation. Variable subsitution is performed
  * for the $args parameter. A different catalogue can be specified
  * using the $catalogue parameter.
  * The output charset is determined by $this->getCharset();
  *
  * @param string  $string     the string to translate.
  * @param array   $args       a list of string to substitute.
  * @param string  $catalogue  get the translation from a particular message
  * @param string  $charset    charset, the input AND output charset catalogue.
  * @return string translated string.
  */
 public function format($string, $args = array(), $catalogue = null, $charset = null)
 {
     // make sure that objects with __toString() are converted to strings
     $string = (string) $string;
     if (empty($charset)) {
         $charset = $this->getCharset();
     }
     $s = $this->formatString(sfToolkit::I18N_toUTF8($string, $charset), $args, $catalogue);
     return sfToolkit::I18N_toEncoding($s, $charset);
 }
 /**
  * Formats the number for a certain pattern. The valid patterns are
  * 'c', 'd', 'e', 'p' or a custom pattern, such as "#.000" for
  * 3 decimal places.
  *
  * @param mixed   $number   the number to format.
  * @param string  $pattern  the format pattern, either, 'c', 'd', 'e', 'p'
  * or a custom pattern. E.g. "#.000" will format the number to 
  * 3 decimal places.
  * @param string  $currency 3-letter ISO 4217 code. For example, the code 
  * "USD" represents the US Dollar and "EUR" represents the Euro currency.
  * @param string  $charset  The charset
  * @return string formatted number string 
  */
 function format($number, $pattern = 'd', $currency = 'USD', $charset = 'UTF-8')
 {
     $this->setPattern($pattern);
     if (strtolower($pattern) == 'p') {
         $number = $number * 100;
     }
     // avoid conversion with exponents
     // see http://trac.symfony-project.org/ticket/5715
     $precision = ini_set('precision', 14);
     $string = $this->fixFloat($number);
     ini_set('precision', $precision);
     $decimal = $this->formatDecimal($string);
     $integer = $this->formatInteger($this->fixFloat(abs($number)));
     $result = strlen($decimal) > 0 ? $integer . $decimal : $integer;
     // get the suffix
     if ($number >= 0) {
         $suffix = $this->formatInfo->PositivePattern;
     } else {
         if ($number < 0) {
             $suffix = $this->formatInfo->NegativePattern;
         } else {
             $suffix = array('', '');
         }
     }
     // append and prepend suffix
     $result = $suffix[0] . $result . $suffix[1];
     // replace currency sign
     $symbol = @$this->formatInfo->getCurrencySymbol($currency);
     if (null === $symbol) {
         $symbol = $currency;
     }
     $result = str_replace('¤', $symbol, $result);
     return sfToolkit::I18N_toEncoding($result, $charset);
 }
 /**
  * Formats the string. That is, for a particular string find
  * the corresponding translation. Variable subsitution is performed
  * for the $args parameter. A different catalogue can be specified
  * using the $catalogue parameter.
  * The output charset is determined by $this->getCharset();
  *
  * @param string  $string     the string to translate.
  * @param array   $args       a list of string to substitute.
  * @param string  $catalogue  get the translation from a particular message
  * @param string  $charset    charset, the input AND output charset catalogue.
  * @return string translated string.
  */
 public function format($string, $args = array(), $catalogue = null, $charset = null)
 {
     if (empty($charset)) {
         $charset = $this->getCharset();
     }
     $s = $this->formatString(sfToolkit::I18N_toUTF8($string, $charset), $args, $catalogue);
     return sfToolkit::I18N_toEncoding($s, $charset);
 }
 /**
  * Formats a date according to the pattern.
  *
  * @param mixed   $time           the time as integer or string in strtotime format.
  * @param string  $pattern        the pattern
  * @param string  $inputPattern   the input pattern
  * @param string  $charset        the charset
  * @return string formatted date time. 
  */
 public function format($time, $pattern = 'F', $inputPattern = null, $charset = 'UTF-8')
 {
     $date = $this->getDate($time, $inputPattern);
     if (null === $pattern) {
         $pattern = 'F';
     }
     $pattern = $this->getPattern($pattern);
     $tokens = $this->getTokens($pattern);
     for ($i = 0, $max = count($tokens); $i < $max; $i++) {
         $pattern = $tokens[$i];
         if ($pattern[0] == "'" && $pattern[strlen($pattern) - 1] == "'") {
             $tokens[$i] = str_replace('``````', '\'', preg_replace('/(^\')|(\'$)/', '', $pattern));
         } else {
             if ($pattern == '``````') {
                 $tokens[$i] = '\'';
             } else {
                 $function = ucfirst($this->getFunctionName($pattern));
                 if ($function != null) {
                     $fName = 'get' . $function;
                     if (in_array($fName, $this->methods)) {
                         $tokens[$i] = $this->{$fName}($date, $pattern);
                     } else {
                         throw new sfException(sprintf('Function %s not found.', $function));
                     }
                 }
             }
         }
     }
     return sfToolkit::I18N_toEncoding(implode('', $tokens), $charset);
 }
 /**
  * Formats the number for a certain pattern. The valid patterns are
  * 'c', 'd', 'e', 'p' or a custom pattern, such as "#.000" for
  * 3 decimal places.
  *
  * @param mixed   $number   the number to format.
  * @param string  $pattern  the format pattern, either, 'c', 'd', 'e', 'p'
  * or a custom pattern. E.g. "#.000" will format the number to 
  * 3 decimal places.
  * @param string  $currency 3-letter ISO 4217 code. For example, the code 
  * "USD" represents the US Dollar and "EUR" represents the Euro currency.
  * @param string  $charset  The charset
  * @return string formatted number string 
  */
 function format($number, $pattern = 'd', $currency = 'USD', $charset = 'UTF-8')
 {
     $this->setPattern($pattern);
     if (strtolower($pattern) == 'p') {
         $number = $number * 100;
     }
     $string = (string) $number;
     $decimal = $this->formatDecimal($string);
     $integer = $this->formatInteger(abs($number));
     $result = strlen($decimal) > 0 ? $integer . $decimal : $integer;
     // get the suffix
     if ($number >= 0) {
         $suffix = $this->formatInfo->PositivePattern;
     } else {
         if ($number < 0) {
             $suffix = $this->formatInfo->NegativePattern;
         } else {
             $suffix = array('', '');
         }
     }
     // append and prepend suffix
     $result = $suffix[0] . $result . $suffix[1];
     // replace currency sign
     $symbol = @$this->formatInfo->getCurrencySymbol($currency);
     if (is_null($symbol)) {
         $symbol = $currency;
     }
     $result = str_replace('¤', $symbol, $result);
     return sfToolkit::I18N_toEncoding($result, $charset);
 }