CLocale
CLocale represents the data relevant to a locale.
The data includes the number formatting information and date formatting information.
Public Properties
Property |
Type |
Description |
Defined 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 |
Property Details
public string getAMName()
the AM name
public string getCurrencyFormat()
the currency format
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'.
public string getDateFormat(string $width='medium')
date format
public CDateFormatter getDateFormatter()
the date formatter for this locale
public string getDateTimeFormat()
datetime format, i.e., the order of date and time.
public string getDecimalFormat()
the decimal format
public string getId()
the locale ID (in canonical form)
public string getLocaleDisplayName(string $id=NULL, string $category='languages')
Gets a localized name from i18n data file (one of framework/i18n/data/ files).
public array getMonthNames(string $width='wide', boolean $standAlone=false)
Returns the month names in the specified width.
public CNumberFormatter getNumberFormatter()
the number formatter for this locale
public string getOrientation()
the character orientation, which is either 'ltr' (left-to-right) or 'rtl' (right-to-left)
public string getPMName()
the PM name
public string getPercentFormat()
the percent format
public array getPluralRules()
plural forms expressions
public string getScientificFormat()
the scientific format
public string getTimeFormat(string $width='medium')
date format
public array getWeekDayNames(string $width='wide', boolean $standAlone=false)
Returns the week day names in the specified width.
Method Details
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.
public string getAMName() |
{return} | string | the AM name |
public static string getCanonicalID(string $id) |
$id | string | the locale ID to be converted |
{return} | string | the locale ID in canonical form |
Converts a locale ID to its canonical form. In canonical form, a locale ID consists of only underscores and lower-case letters.
public string getCurrencyFormat() |
{return} | string | the currency format |
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;
}
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#140 (
show)
public function getDateFormatter()
{
if($this->_dateFormatter===null)
$this->_dateFormatter=new CDateFormatter($this);
return $this->_dateFormatter;
}
public string getDateTimeFormat() |
{return} | string | datetime format, i.e., the order of date and time. |
public string getDecimalFormat() |
{return} | string | the decimal format |
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 |
public string getId() |
{return} | string | the locale ID (in canonical form) |
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.
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');
}
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 = $this->getCanonicalID($id);
// remove sub tags
if(($underscorePosition=strpos($id, '_'))!== false)
{
$id = substr($id, 0, $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.
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 = $this->getCanonicalID($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).
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;
}
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];
}
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.
Source Code: framework/i18n/CLocale.php#130 (
show)
public function getNumberFormatter()
{
if($this->_numberFormatter===null)
$this->_numberFormatter=new CNumberFormatter($this);
return $this->_numberFormatter;
}
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;
}
public string getOrientation() |
{return} | string | the character orientation, which is either 'ltr' (left-to-right) or 'rtl' (right-to-left) |
public string getPMName() |
{return} | string | the PM name |
public string getPercentFormat() |
{return} | string | the percent format |
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');
}
public string getScientificFormat() |
{return} | string | the scientific format |
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. |
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 = $this->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.
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. |
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 = $this->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.
public string getTimeFormat(string $width='medium') |
$width | string | time format width. It can be 'full', 'long', 'medium' or 'short'. |
{return} | string | date format |
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];
}
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.