123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <?php
- /**
- * CLocalizedFormatter class file.
- *
- * @author Carsten Brandt <mail@cebe.cc>
- * @link http://www.yiiframework.com/
- * @copyright 2008-2013 Yii Software LLC
- * @license http://www.yiiframework.com/license/
- */
- /**
- * CLocalizedFormatter provides a set of commonly used data formatting methods based on the current locale settings.
- *
- * It provides the same functionality as {@link CFormatter}, but overrides all the settings for
- * {@link booleanFormat}, {@link datetimeFormat} and {@link numberFormat} with the values for the
- * current locale. Because of this you are not able to configure these properties for CLocalizedFormatter directly.
- * Date and time format can be adjusted by setting {@link dateFormat} and {@link timeFormat}.
- *
- * It uses {@link CApplication::locale} by default but you can set a custom locale by using {@link setLocale}-method.
- *
- * For a list of recognizable format types, and details on how to call the formatter methods,
- * see {@link CFormatter} documentation.
- *
- * To replace the application component 'format', which is registered by {@link CApplication} by default, you can
- * put this in your application 'components' config:
- * <code>
- * 'format' => array(
- * 'class' => 'CLocalizedFormatter',
- * ),
- * </code>
- *
- * @author Carsten Brandt <mail@cebe.cc>
- * @package system.utils
- * @since 1.1.14
- */
- class CLocalizedFormatter extends CFormatter
- {
- private $_locale;
- /**
- * @var string the width of the date pattern. It can be 'full', 'long', 'medium' and 'short'. Defaults to 'medium'.
- * @see CDateFormatter::formatDateTime()
- */
- public $dateFormat='medium';
- /**
- * @var string the width of the time pattern. It can be 'full', 'long', 'medium' and 'short'. Defaults to 'medium'.
- * @see CDateFormatter::formatDateTime()
- */
- public $timeFormat='medium';
- /**
- * Set the locale to use for formatting values.
- * @param CLocale|string $locale an instance of CLocale or a locale ID
- */
- public function setLocale($locale)
- {
- if(is_string($locale))
- $locale=CLocale::getInstance($locale);
- $this->sizeFormat['decimalSeparator']=$locale->getNumberSymbol('decimal');
- $this->_locale=$locale;
- }
- /**
- * @return CLocale $locale the locale currently used for formatting values
- */
- public function getLocale()
- {
- if($this->_locale === null) {
- $this->setLocale(Yii::app()->locale);
- }
- return $this->_locale;
- }
- /**
- * Formats the value as a boolean.
- * @param mixed $value the value to be formatted
- * @return string the formatted result
- * @see booleanFormat
- */
- public function formatBoolean($value)
- {
- return $value ? Yii::t('yii','Yes') : Yii::t('yii','No');
- }
- /**
- * Formats the value as a date using the {@link locale}s date formatter.
- * @param mixed $value the value to be formatted
- * @return string the formatted result
- * @see dateFormat
- * @see CLocale::getDateFormatter()
- */
- public function formatDate($value)
- {
- return $this->getLocale()->dateFormatter->formatDateTime($this->normalizeDateValue($value), $this->dateFormat, null);
- }
- /**
- * Formats the value as a time using the {@link locale}s date formatter.
- * @param mixed $value the value to be formatted
- * @return string the formatted result
- * @see timeFormat
- * @see CLocale::getDateFormatter()
- */
- public function formatTime($value)
- {
- return $this->getLocale()->dateFormatter->formatDateTime($this->normalizeDateValue($value), null, $this->timeFormat);
- }
- /**
- * Formats the value as a date and time using the {@link locale}s date formatter.
- * @param mixed $value the value to be formatted
- * @return string the formatted result
- * @see dateFormat
- * @see timeFormat
- * @see CLocale::getDateFormatter()
- */
- public function formatDatetime($value)
- {
- return $this->getLocale()->dateFormatter->formatDateTime($this->normalizeDateValue($value), $this->dateFormat, $this->timeFormat);
- }
- /**
- * Formats the value as a number using the {@link locale}s number formatter.
- * @param mixed $value the value to be formatted
- * @return string the formatted result
- * @see CLocale::getNumberFormatter()
- */
- public function formatNumber($value)
- {
- return $this->getLocale()->numberFormatter->formatDecimal($value);
- }
- }
|