/** * 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); }
/** * 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); }