0 follower

CLocale

Package system.i18n
Inheritance class CLocale » CComponent
Since 1.0
Source Code framework/i18n/CLocale.php
CLocale represents the data relevant to a locale.

The data includes the number formatting information and date formatting information.

Public Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
aMName string the AM name CLocale
currencyFormat string the currency format CLocale
dataPath string the directory that contains the locale data. CLocale
dateFormat string date format CLocale
dateFormatter CDateFormatter the date formatter for this locale CLocale
dateTimeFormat string datetime format, i.e., the order of date and time. CLocale
decimalFormat string the decimal format CLocale
id string the locale ID (in canonical form) CLocale
localeDisplayName string Gets a localized name from i18n data file (one of framework/i18n/data/ files). CLocale
monthNames array Returns the month names in the specified width. CLocale
numberFormatter CNumberFormatter the number formatter for this locale CLocale
orientation string the character orientation, which is either 'ltr' (left-to-right) or 'rtl' (right-to-left) CLocale
pMName string the PM name CLocale
percentFormat string the percent format CLocale
pluralRules array plural forms expressions CLocale
scientificFormat string the scientific format CLocale
timeFormat string date format CLocale
weekDayNames array Returns the week day names in the specified width. CLocale

Public Methods

Hide inherited methods

MethodDescriptionDefined By
__call() Calls the named method which is not a class method. CComponent
__get() Returns a property value, an event handler list or a behavior based on its name. CComponent
__isset() Checks if a property value is null. CComponent
__set() Sets value of a component property. CComponent
__unset() Sets a component property to be null. CComponent
asa() Returns the named behavior object. CComponent
attachBehavior() Attaches a behavior to this component. CComponent
attachBehaviors() Attaches a list of behaviors to the component. CComponent
attachEventHandler() Attaches an event handler to an event. CComponent
canGetProperty() Determines whether a property can be read. CComponent
canSetProperty() Determines whether a property can be set. CComponent
detachBehavior() Detaches a behavior from the component. CComponent
detachBehaviors() Detaches all behaviors from the component. CComponent
detachEventHandler() Detaches an existing event handler. CComponent
disableBehavior() Disables an attached behavior. CComponent
disableBehaviors() Disables all behaviors attached to this component. CComponent
enableBehavior() Enables an attached behavior. CComponent
enableBehaviors() Enables all behaviors attached to this component. CComponent
evaluateExpression() Evaluates a PHP expression or callback under the context of this component. CComponent
getAMName() Returns the AM name CLocale
getCanonicalID() Converts a locale ID to its canonical form. CLocale
getCurrencyFormat() Returns the currency format CLocale
getCurrencySymbol() Returns the localized currency symbol. Null if the symbol does not exist. CLocale
getDateFormat() Returns date format CLocale
getDateFormatter() Returns the date formatter for this locale CLocale
getDateTimeFormat() Returns datetime format, i.e., the order of date and time. CLocale
getDecimalFormat() Returns the decimal format CLocale
getEraName() Returns the era name CLocale
getEventHandlers() Returns the list of attached event handlers for an event. CComponent
getId() Returns the locale ID (in canonical form) CLocale
getInstance() Returns the instance of the specified locale. CLocale
getLanguage() Returns the local display name for the language. Null if the language code does not exist. CLocale
getLanguageID() Converts a locale ID to a language ID. CLocale
getLocaleDisplayName() Gets a localized name from i18n data file (one of framework/i18n/data/ files). CLocale
getLocaleIDs() Returns IDs of the locales which the framework can recognize CLocale
getMonthName() Returns the month name CLocale
getMonthNames() Returns the month names in the specified width. CLocale
getNumberFormatter() Returns the number formatter for this locale CLocale
getNumberSymbol() Returns symbol CLocale
getOrientation() Returns the character orientation, which is either 'ltr' (left-to-right) or 'rtl' (right-to-left) CLocale
getPMName() Returns the PM name CLocale
getPercentFormat() Returns the percent format CLocale
getPluralRules() Returns plural forms expressions CLocale
getScientificFormat() Returns the scientific format CLocale
getScript() Returns the local display name for the script. Null if the script code does not exist. CLocale
getScriptID() Converts a locale ID to a script ID. CLocale
getTerritory() Returns the local display name for the territory. Null if the territory code does not exist. CLocale
getTerritoryID() Converts a locale ID to a territory ID. CLocale
getTimeFormat() Returns date format CLocale
getWeekDayName() Returns the weekday name CLocale
getWeekDayNames() Returns the week day names in the specified width. CLocale
hasEvent() Determines whether an event is defined. CComponent
hasEventHandler() Checks whether the named event has attached handlers. CComponent
hasProperty() Determines whether a property is defined. CComponent
raiseEvent() Raises an event. CComponent

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
__construct() Constructor. CLocale

Property Details

aMName property read-only
public string getAMName()

the AM name

currencyFormat property read-only
public string getCurrencyFormat()

the currency format

dataPath property (available since v1.1.0)
public static string $dataPath;

the directory that contains the locale data. If this property is not set, the locale data will be loaded from 'framework/i18n/data'.

dateFormat property read-only
public string getDateFormat(string $width='medium')

date format

dateFormatter property read-only

the date formatter for this locale

dateTimeFormat property read-only
public string getDateTimeFormat()

datetime format, i.e., the order of date and time.

decimalFormat property read-only
public string getDecimalFormat()

the decimal format

id property read-only
public string getId()

the locale ID (in canonical form)

localeDisplayName property read-only (available since v1.1.9)
public string getLocaleDisplayName(string $id=NULL, string $category='languages')

Gets a localized name from i18n data file (one of framework/i18n/data/ files).

monthNames property read-only
public array getMonthNames(string $width='wide', boolean $standAlone=false)

Returns the month names in the specified width.

numberFormatter property read-only

the number formatter for this locale

orientation property read-only (available since v1.1.2)
public string getOrientation()

the character orientation, which is either 'ltr' (left-to-right) or 'rtl' (right-to-left)

pMName property read-only
public string getPMName()

the PM name

percentFormat property read-only
public string getPercentFormat()

the percent format

pluralRules property read-only
public array getPluralRules()

plural forms expressions

scientificFormat property read-only
public string getScientificFormat()

the scientific format

timeFormat property read-only
public string getTimeFormat(string $width='medium')

date format

weekDayNames property read-only
public array getWeekDayNames(string $width='wide', boolean $standAlone=false)

Returns the week day names in the specified width.

Method Details

__construct() method
protected void __construct(string $id)
$id string the locale ID (e.g. en_US)
Source Code: framework/i18n/CLocale.php#97 (show)
protected function __construct($id)
{
    
$this->_id=self::getCanonicalID($id);
    
$dataPath=self::$dataPath===null dirname(__FILE__).DIRECTORY_SEPARATOR.'data' self::$dataPath;
    
$dataFile=$dataPath.DIRECTORY_SEPARATOR.$this->_id.'.php';
    if(
is_file($dataFile))
        
$this->_data=require($dataFile);
    else
        throw new 
CException(Yii::t('yii','Unrecognized locale "{locale}".',array('{locale}'=>$id)));
}

Constructor. Since the constructor is protected, please use getInstance to obtain an instance of the specified locale.

getAMName() method
public string getAMName()
{return} string the AM name
Source Code: framework/i18n/CLocale.php#267 (show)
public function getAMName()
{
    return 
$this->_data['amName'];
}

getCanonicalID() method
public static string getCanonicalID(string $id)
$id string the locale ID to be converted
{return} string the locale ID in canonical form
Source Code: framework/i18n/CLocale.php#114 (show)
public static function getCanonicalID($id)
{
    return 
strtolower(str_replace('-','_',$id));
}

Converts a locale ID to its canonical form. In canonical form, a locale ID consists of only underscores and lower-case letters.

getCurrencyFormat() method
public string getCurrencyFormat()
{return} string the currency format
Source Code: framework/i18n/CLocale.php#176 (show)
public function getCurrencyFormat()
{
    return 
$this->_data['currencyFormat'];
}

getCurrencySymbol() method
public string getCurrencySymbol(string $currency)
$currency string 3-letter ISO 4217 code. For example, the code "USD" represents the US Dollar and "EUR" represents the Euro currency.
{return} string the localized currency symbol. Null if the symbol does not exist.
Source Code: framework/i18n/CLocale.php#151 (show)
public function getCurrencySymbol($currency)
{
    return isset(
$this->_data['currencySymbols'][$currency]) ? $this->_data['currencySymbols'][$currency] : null;
}

getDateFormat() method
public string getDateFormat(string $width='medium')
$width string date format width. It can be 'full', 'long', 'medium' or 'short'.
{return} string date format
Source Code: framework/i18n/CLocale.php#284 (show)
public function getDateFormat($width='medium')
{
    return 
$this->_data['dateFormats'][$width];
}

getDateFormatter() method
public CDateFormatter getDateFormatter()
{return} CDateFormatter the date formatter for this locale
Source Code: framework/i18n/CLocale.php#140 (show)
public function getDateFormatter()
{
    if(
$this->_dateFormatter===null)
        
$this->_dateFormatter=new CDateFormatter($this);
    return 
$this->_dateFormatter;
}

getDateTimeFormat() method
public string getDateTimeFormat()
{return} string datetime format, i.e., the order of date and time.
Source Code: framework/i18n/CLocale.php#301 (show)
public function getDateTimeFormat()
{
    return 
$this->_data['dateTimeFormat'];
}

getDecimalFormat() method
public string getDecimalFormat()
{return} string the decimal format
Source Code: framework/i18n/CLocale.php#168 (show)
public function getDecimalFormat()
{
    return 
$this->_data['decimalFormat'];
}

getEraName() method
public string getEraName(integer $era, string $width='wide')
$era integer era (0,1)
$width string era name width. It can be 'wide', 'abbreviated' or 'narrow'.
{return} string the era name
Source Code: framework/i18n/CLocale.php#259 (show)
public function getEraName($era,$width='wide')
{
    return 
$this->_data['eraNames'][$width][$era];
}

getId() method
public string getId()
{return} string the locale ID (in canonical form)
Source Code: framework/i18n/CLocale.php#122 (show)
public function getId()
{
    return 
$this->_id;
}

getInstance() method
public static CLocale getInstance(string $id)
$id string the locale ID (e.g. en_US)
{return} CLocale the locale instance
Source Code: framework/i18n/CLocale.php#58 (show)
public static function getInstance($id)
{
    static 
$locales=array();
    if(isset(
$locales[$id]))
        return 
$locales[$id];
    else
        return 
$locales[$id]=new CLocale($id);
}

Returns the instance of the specified locale. Since the constructor of CLocale is protected, you can only use this method to obtain an instance of the specified locale.

getLanguage() method (available since v1.1.9)
public string getLanguage(string $id)
$id string Unicode language identifier from IETF BCP 47. For example, the code "en_US" represents U.S. English and "en_GB" represents British English.
{return} string the local display name for the language. Null if the language code does not exist.
Source Code: framework/i18n/CLocale.php#447 (show)
public function getLanguage($id)
{
    
$id $this->getLanguageID($id);
    return 
$this->getLocaleDisplayName($id'languages');
}

getLanguageID() method (available since v1.1.9)
public string getLanguageID(string $id)
$id string the locale ID to be converted
{return} string the language ID
Source Code: framework/i18n/CLocale.php#330 (show)
public function getLanguageID($id)
{
    
// normalize id
    
$id self::getCanonicalID($id);
    
// remove sub tags
    
if(($underscorePosition=strpos($id'_'))!== false)
    {
        
$id substr($id0$underscorePosition);
    }
    return 
$id;
}

Converts a locale ID to a language ID. A language ID consists of only the first group of letters before an underscore or dash.

getLocaleDisplayName() method (available since v1.1.9)
public string getLocaleDisplayName(string $id=NULL, string $category='languages')
$id string array key from an array named by $category.
$category string data category. One of 'languages', 'scripts' or 'territories'.
{return} string the localized name for the id specified. Null if data does not exist.
Source Code: framework/i18n/CLocale.php#418 (show)
public function getLocaleDisplayName($id=null$category='languages')
{
    
$id self::getCanonicalID((string)$id);
    if ((
$category == 'languages') && (isset($this->_data[$category][$id])))
    {
        return 
$this->_data[$category][$id];
    }
    elseif ((
$category == 'scripts') && ($val=$this->getScriptID($id)) && (isset($this->_data[$category][$val])))
    {
        return 
$this->_data[$category][$val];
    }
    elseif ((
$category == 'territories') && ($val=$this->getTerritoryID($id)) && (isset($this->_data[$category][$val])))
    {
        return 
$this->_data[$category][$val];
    }
    elseif (isset(
$this->_data[$category][$id]))
    {
        return 
$this->_data[$category][$id];
    }
    else {
        return 
null;
    }
}

Gets a localized name from i18n data file (one of framework/i18n/data/ files).

getLocaleIDs() method
public static array getLocaleIDs()
{return} array IDs of the locales which the framework can recognize
Source Code: framework/i18n/CLocale.php#70 (show)
public static function getLocaleIDs()
{
    static 
$locales;
    if(
$locales===null)
    {
        
$locales=array();
        
$dataPath=self::$dataPath===null dirname(__FILE__).DIRECTORY_SEPARATOR.'data' self::$dataPath;
        
$folder=@opendir($dataPath);
        while((
$file=@readdir($folder))!==false)
        {
            
$fullPath=$dataPath.DIRECTORY_SEPARATOR.$file;
            if(
substr($file,-4)==='.php' && is_file($fullPath))
                
$locales[]=substr($file,0,-4);
        }
        
closedir($folder);
        
sort($locales);
    }
    return 
$locales;
}

getMonthName() method
public string getMonthName(integer $month, string $width='wide', boolean $standAlone=false)
$month integer month (1-12)
$width string month name width. It can be 'wide', 'abbreviated' or 'narrow'.
$standAlone boolean whether the month name should be returned in stand-alone format
{return} string the month name
Source Code: framework/i18n/CLocale.php#203 (show)
public function getMonthName($month,$width='wide',$standAlone=false)
{
    if(
$standAlone)
        return isset(
$this->_data['monthNamesSA'][$width][$month]) ? $this->_data['monthNamesSA'][$width][$month] : $this->_data['monthNames'][$width][$month];
    else
        return isset(
$this->_data['monthNames'][$width][$month]) ? $this->_data['monthNames'][$width][$month] : $this->_data['monthNamesSA'][$width][$month];
}

getMonthNames() method
public array getMonthNames(string $width='wide', boolean $standAlone=false)
$width string month name width. It can be 'wide', 'abbreviated' or 'narrow'.
$standAlone boolean whether the month names should be returned in stand-alone format
{return} array month names indexed by month values (1-12)
Source Code: framework/i18n/CLocale.php#217 (show)
public function getMonthNames($width='wide',$standAlone=false)
{
    if(
$standAlone)
        return isset(
$this->_data['monthNamesSA'][$width]) ? $this->_data['monthNamesSA'][$width] : $this->_data['monthNames'][$width];
    else
        return isset(
$this->_data['monthNames'][$width]) ? $this->_data['monthNames'][$width] : $this->_data['monthNamesSA'][$width];
}

Returns the month names in the specified width.

getNumberFormatter() method
public CNumberFormatter getNumberFormatter()
{return} CNumberFormatter the number formatter for this locale
Source Code: framework/i18n/CLocale.php#130 (show)
public function getNumberFormatter()
{
    if(
$this->_numberFormatter===null)
        
$this->_numberFormatter=new CNumberFormatter($this);
    return 
$this->_numberFormatter;
}

getNumberSymbol() method
public string getNumberSymbol(string $name)
$name string symbol name
{return} string symbol
Source Code: framework/i18n/CLocale.php#160 (show)
public function getNumberSymbol($name)
{
    return isset(
$this->_data['numberSymbols'][$name]) ? $this->_data['numberSymbols'][$name] : null;
}

getOrientation() method (available since v1.1.2)
public string getOrientation()
{return} string the character orientation, which is either 'ltr' (left-to-right) or 'rtl' (right-to-left)
Source Code: framework/i18n/CLocale.php#310 (show)
public function getOrientation()
{
    return isset(
$this->_data['orientation']) ? $this->_data['orientation'] : 'ltr';
}

getPMName() method
public string getPMName()
{return} string the PM name
Source Code: framework/i18n/CLocale.php#275 (show)
public function getPMName()
{
    return 
$this->_data['pmName'];
}

getPercentFormat() method
public string getPercentFormat()
{return} string the percent format
Source Code: framework/i18n/CLocale.php#184 (show)
public function getPercentFormat()
{
    return 
$this->_data['percentFormat'];
}

getPluralRules() method
public array getPluralRules()
{return} array plural forms expressions
Source Code: framework/i18n/CLocale.php#318 (show)
public function getPluralRules()
{
    return isset(
$this->_data['pluralRules']) ? $this->_data['pluralRules'] : array(0=>'true');
}

getScientificFormat() method
public string getScientificFormat()
{return} string the scientific format
Source Code: framework/i18n/CLocale.php#192 (show)
public function getScientificFormat()
{
    return 
$this->_data['scientificFormat'];
}

getScript() method (available since v1.1.9)
public string getScript(string $id)
$id string Unicode script identifier from IETF BCP 47. For example, the code "en_US" represents U.S. English and "en_GB" represents British English.
{return} string the local display name for the script. Null if the script code does not exist.
Source Code: framework/i18n/CLocale.php#458 (show)
public function getScript($id)
{
    return 
$this->getLocaleDisplayName($id'scripts');
}

getScriptID() method (available since v1.1.9)
public string getScriptID(string $id)
$id string the locale ID to be converted
{return} string the script ID
Source Code: framework/i18n/CLocale.php#349 (show)
public function getScriptID($id)
{
    
// normalize id
    
$id self::getCanonicalID($id);
    
// find sub tags
    
if(($underscorePosition=strpos($id'_'))!==false)
    {
        
$subTag explode('_'$id);
        
// script sub tags can be distinguished from territory sub tags by length
        
if (strlen($subTag[1])===4)
        {
            
$id $subTag[1];
        }
        else
        {
            
$id null;
        }
    }
    else
    {
        
$id null;
    }
    return 
$id;
}

Converts a locale ID to a script ID. A script ID consists of only the last four characters after an underscore or dash.

getTerritory() method (available since v1.1.9)
public string getTerritory(string $id)
$id string Unicode territory identifier from IETF BCP 47. For example, the code "en_US" represents U.S. English and "en_GB" represents British English.
{return} string the local display name for the territory. Null if the territory code does not exist.
Source Code: framework/i18n/CLocale.php#468 (show)
public function getTerritory($id)
{
    return 
$this->getLocaleDisplayName($id'territories');
}

getTerritoryID() method (available since v1.1.9)
public string getTerritoryID(string $id)
$id string the locale ID to be converted
{return} string the territory ID
Source Code: framework/i18n/CLocale.php#381 (show)
public function getTerritoryID($id)
{
    
// normalize id
    
$id self::getCanonicalID($id);
    
// find sub tags
    
if (($underscorePosition=strpos($id'_'))!== false)
    {
        
$subTag explode('_'$id);
        
// territory sub tags can be distinguished from script sub tags by length
        
if (isset($subTag[2]) && strlen($subTag[2])<4)
        {
            
$id $subTag[2];
        }
        elseif (
strlen($subTag[1])<4)
        {
            
$id $subTag[1];
        }
        else
        {
            
$id null;
        }
    }
    else
    {
        
$id null;
    }
    return 
$id;
}

Converts a locale ID to a territory ID. A territory ID consists of only the last two to three letter or digits after an underscore or dash.

getTimeFormat() method
public string getTimeFormat(string $width='medium')
$width string time format width. It can be 'full', 'long', 'medium' or 'short'.
{return} string date format
Source Code: framework/i18n/CLocale.php#293 (show)
public function getTimeFormat($width='medium')
{
    return 
$this->_data['timeFormats'][$width];
}

getWeekDayName() method
public string getWeekDayName(integer $day, string $width='wide', boolean $standAlone=false)
$day integer weekday (0-7, 0 and 7 means Sunday)
$width string weekday name width. It can be 'wide', 'abbreviated' or 'narrow'.
$standAlone boolean whether the week day name should be returned in stand-alone format
{return} string the weekday name
Source Code: framework/i18n/CLocale.php#231 (show)
public function getWeekDayName($day,$width='wide',$standAlone=false)
{
    
$day=$day%7;
    if(
$standAlone)
        return isset(
$this->_data['weekDayNamesSA'][$width][$day]) ? $this->_data['weekDayNamesSA'][$width][$day] : $this->_data['weekDayNames'][$width][$day];
    else
        return isset(
$this->_data['weekDayNames'][$width][$day]) ? $this->_data['weekDayNames'][$width][$day] : $this->_data['weekDayNamesSA'][$width][$day];
}

getWeekDayNames() method
public array getWeekDayNames(string $width='wide', boolean $standAlone=false)
$width string weekday name width. It can be 'wide', 'abbreviated' or 'narrow'.
$standAlone boolean whether the week day name should be returned in stand-alone format
{return} array the weekday names indexed by weekday values (0-6, 0 means Sunday, 1 Monday, etc.)
Source Code: framework/i18n/CLocale.php#246 (show)
public function getWeekDayNames($width='wide',$standAlone=false)
{
    if(
$standAlone)
        return isset(
$this->_data['weekDayNamesSA'][$width]) ? $this->_data['weekDayNamesSA'][$width] : $this->_data['weekDayNames'][$width];
    else
        return isset(
$this->_data['weekDayNames'][$width]) ? $this->_data['weekDayNames'][$width] : $this->_data['weekDayNamesSA'][$width];
}

Returns the week day names in the specified width.