包 | system.i18n |
---|---|
继承 | class CLocale » CComponent |
源自 | 1.0 |
版本 | $Id: CLocale.php 3518 2011-12-28 23:31:29Z alexander.makarow $ |
源码 |
CLocale代表一个区域的相关数据。
这些数据包括数字格式和日期格式信息。
这些数据包括数字格式和日期格式信息。
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
aMName | string | AM名称 | CLocale |
currencyFormat | string | 货币格式 | CLocale |
dataPath | string | 目录包含着区域数据。 如果未设置此属性,区域数据将从‘framework/i18n/data’加载。 | CLocale |
dateFormat | string | 日期格式 | CLocale |
dateFormatter | CDateFormatter | 返回这个区域的日期格式 | CLocale |
dateTimeFormat | string | 日期时间格式,比如:日期和时间的顺序。 | CLocale |
decimalFormat | string | 十进制格式 | CLocale |
id | string | 区域ID(典型格式) | CLocale |
localeDisplayName | string | 获取本地化i18数据文件在(framework/i18n/data/ files)。 | CLocale |
monthNames | array | 返回指定宽度的月份名称。 | CLocale |
numberFormatter | CNumberFormatter | 返回这个区域的数字格式 | CLocale |
orientation | string | 文字方向,要么是‘ltr’(从左到右),要么是‘rtl’(从右到左)。 | CLocale |
pMName | string | PM名称 | CLocale |
percentFormat | string | 百分比格式 | CLocale |
pluralRules | array | 复数形式表达式 | CLocale |
scientificFormat | string | 科学记数法格式 | CLocale |
timeFormat | string | 日期格式 | CLocale |
weekDayNames | array | 返回指定宽度的星期名字。 | CLocale |
公共方法
方法 | 描述 | 定义在 |
---|---|---|
__call() | 如果类中没有调的方法名,则调用这个方法。 | CComponent |
__get() | 返回一个属性值、一个事件处理程序列表或一个行为名称。 | CComponent |
__isset() | 检查一个属性是否为null。 | CComponent |
__set() | 设置一个组件的属性值。 | CComponent |
__unset() | 设置一个组件的属性为null。 | CComponent |
asa() | 返回这个名字的行为对象。 | CComponent |
attachBehavior() | 附加一个行为到组件。 | CComponent |
attachBehaviors() | 附加一个行为列表到组件。 | CComponent |
attachEventHandler() | 为事件附加一个事件处理程序。 | CComponent |
canGetProperty() | 确定属性是否可读。 | CComponent |
canSetProperty() | 确定属性是否可写。 | CComponent |
detachBehavior() | 从组件中分离一个行为。 | CComponent |
detachBehaviors() | 从组件中分离所有行为。 | CComponent |
detachEventHandler() | 分离一个存在的事件处理程序。 | CComponent |
disableBehavior() | 禁用一个附加行为。 | CComponent |
disableBehaviors() | 禁用组件附加的所有行为。 | CComponent |
enableBehavior() | 启用一个附加行为。 | CComponent |
enableBehaviors() | 启用组件附加的所有行为。 | CComponent |
evaluateExpression() | 计算一个PHP表达式,或根据组件上下文执行回调。 | CComponent |
getAMName() | 返回AM名称 | CLocale |
getCanonicalID() | 转换区域ID为典型格式。 | CLocale |
getCurrencyFormat() | 返回货币格式 | CLocale |
getCurrencySymbol() | 返回该区域的货币符号,如果符号不存在则返回null。 | CLocale |
getDateFormat() | 返回日期格式 | CLocale |
getDateFormatter() | 返回返回这个区域的日期格式 | CLocale |
getDateTimeFormat() | 返回日期时间格式,比如:日期和时间的顺序。 | CLocale |
getDecimalFormat() | 返回十进制格式 | CLocale |
getEraName() | 返回年代名称 | CLocale |
getEventHandlers() | 返回一个事件的附加处理程序列表。 | CComponent |
getId() | 返回区域ID(典型格式) | CLocale |
getInstance() | 返回指定区域实例。 | CLocale |
getLanguage() | 返回显示本地化语言名称,如果不存在返回null。 | CLocale |
getLanguageID() | 转换区域ID为语言ID。 | CLocale |
getLocaleDisplayName() | 获取本地化i18数据文件在(framework/i18n/data/ files)。 | CLocale |
getLocaleIDs() | 返回框架可以识别的区域ID。 | CLocale |
getMonthName() | 返回月份名称 | CLocale |
getMonthNames() | 返回指定宽度的月份名称。 | CLocale |
getNumberFormatter() | 返回返回这个区域的数字格式 | CLocale |
getNumberSymbol() | 返回符号 | CLocale |
getOrientation() | 返回文字方向,要么是‘ltr’(从左到右),要么是‘rtl’(从右到左)。 | CLocale |
getPMName() | 返回PM名称 | CLocale |
getPercentFormat() | 返回百分比格式 | CLocale |
getPluralRules() | 返回复数形式表达式 | CLocale |
getScientificFormat() | 返回科学记数法格式 | CLocale |
getScript() | 返回显示本地化脚本名称,如果不存在返回null。 | CLocale |
getScriptID() | 转换区域ID为脚本ID。 | CLocale |
getTerritory() | 返回显示范围名称,如果不存在返回null。 | CLocale |
getTerritoryID() | 转换区域ID为范围ID。 | CLocale |
getTimeFormat() | 返回日期格式 | CLocale |
getWeekDayName() | 返回星期名称 | CLocale |
getWeekDayNames() | 返回指定宽度的星期名字。 | CLocale |
hasEvent() | 确定一个事件是否定义。 | CComponent |
hasEventHandler() | 检查事件是否有附加的处理程序。 | CComponent |
hasProperty() | 确定属性是否被定义。 | CComponent |
raiseEvent() | 发起一个事件。 | CComponent |
受保护方法
方法 | 描述 | 定义在 |
---|---|---|
__construct() | 构造函数。 | CLocale |
属性详细
aMName
属性
只读
public string getAMName()
AM名称
currencyFormat
属性
只读
public string getCurrencyFormat()
货币格式
dataPath
属性
(可用自 v1.1.0)
public static string $dataPath;
目录包含着区域数据。 如果未设置此属性,区域数据将从‘framework/i18n/data’加载。
dateFormat
属性
只读
public string getDateFormat(string $width='medium')
日期格式
dateFormatter
属性
只读
public CDateFormatter getDateFormatter()
返回这个区域的日期格式
dateTimeFormat
属性
只读
public string getDateTimeFormat()
日期时间格式,比如:日期和时间的顺序。
decimalFormat
属性
只读
public string getDecimalFormat()
十进制格式
id
属性
只读
public string getId()
区域ID(典型格式)
localeDisplayName
属性
只读 (可用自 v1.1.9)
public string getLocaleDisplayName(string $id=NULL, string $category='languages')
获取本地化i18数据文件在(framework/i18n/data/ files)。
monthNames
属性
只读
public array getMonthNames(string $width='wide', boolean $standAlone=false)
返回指定宽度的月份名称。
numberFormatter
属性
只读
public CNumberFormatter getNumberFormatter()
返回这个区域的数字格式
orientation
属性
只读 (可用自 v1.1.2)
public string getOrientation()
文字方向,要么是‘ltr’(从左到右),要么是‘rtl’(从右到左)。
pMName
属性
只读
public string getPMName()
PM名称
percentFormat
属性
只读
public string getPercentFormat()
百分比格式
pluralRules
属性
只读
public array getPluralRules()
复数形式表达式
scientificFormat
属性
只读
public string getScientificFormat()
科学记数法格式
timeFormat
属性
只读
public string getTimeFormat(string $width='medium')
日期格式
weekDayNames
属性
只读
public array getWeekDayNames(string $width='wide', boolean $standAlone=false)
返回指定宽度的星期名字。
方法详细
__construct()
方法
protected void __construct(string $id)
| ||
$id | string | 区域ID(例如:en_US) |
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)));
}
构造函数。 由于构造方法受保护, 请使用getInstance来获得指定区域的实例。
getAMName()
方法
public string getAMName()
| ||
{return} | string | AM名称 |
public function getAMName()
{
return $this->_data['amName'];
}
getCanonicalID()
方法
public static string getCanonicalID(string $id)
| ||
$id | string | 要转移的区域ID |
{return} | string | 返回区域ID的典型格式 |
public static function getCanonicalID($id)
{
return strtolower(str_replace('-','_',$id));
}
转换区域ID为典型格式。 在典型格式中,区域ID只能由小写字母和下划线组成。
getCurrencyFormat()
方法
public string getCurrencyFormat()
| ||
{return} | string | 货币格式 |
public function getCurrencyFormat()
{
return $this->_data['currencyFormat'];
}
getCurrencySymbol()
方法
public string getCurrencySymbol(string $currency)
| ||
$currency | string | 3个字母的ISO4217码。比如:“USD”代表美元,“EUR”代表欧元。 |
{return} | string | 该区域的货币符号,如果符号不存在则返回null。 |
public function getCurrencySymbol($currency)
{
return isset($this->_data['currencySymbols'][$currency]) ? $this->_data['currencySymbols'][$currency] : null;
}
getDateFormat()
方法
public string getDateFormat(string $width='medium')
| ||
$width | string | 日期格式宽度。可以是‘full’,‘long’,‘medium’或‘short’。 |
{return} | string | 日期格式 |
public function getDateFormat($width='medium')
{
return $this->_data['dateFormats'][$width];
}
getDateFormatter()
方法
public CDateFormatter getDateFormatter()
| ||
{return} | CDateFormatter | 返回这个区域的日期格式 |
public function getDateFormatter()
{
if($this->_dateFormatter===null)
$this->_dateFormatter=new CDateFormatter($this);
return $this->_dateFormatter;
}
getDateTimeFormat()
方法
public string getDateTimeFormat()
| ||
{return} | string | 日期时间格式,比如:日期和时间的顺序。 |
public function getDateTimeFormat()
{
return $this->_data['dateTimeFormat'];
}
getDecimalFormat()
方法
public string getDecimalFormat()
| ||
{return} | string | 十进制格式 |
public function getDecimalFormat()
{
return $this->_data['decimalFormat'];
}
getEraName()
方法
public string getEraName(integer $era, string $width='wide')
| ||
$era | integer | 年代(0,1) |
$width | string | 年代名称宽度。它可以是‘wide’,‘abbreviated’或‘narrow’。 |
{return} | string | 年代名称 |
public function getEraName($era,$width='wide')
{
return $this->_data['eraNames'][$width][$era];
}
getId()
方法
public string getId()
| ||
{return} | string | 区域ID(典型格式) |
public function getId()
{
return $this->_id;
}
getInstance()
方法
public static CLocale getInstance(string $id)
| ||
$id | string | 区域ID(例如:en_US) |
{return} | CLocale | 返回区域实例 |
public static function getInstance($id)
{
static $locales=array();
if(isset($locales[$id]))
return $locales[$id];
else
return $locales[$id]=new CLocale($id);
}
返回指定区域实例。 由于CLocale的构造方法是受保护的, 你只可以使用这个方法来取得指定区域的实例。
getLanguage()
方法
(可用自 v1.1.9)
public string getLanguage(string $id)
| ||
$id | string | Unicode语言标识符IETF BCP 47。 例如:代码“en_US”英语(美国)和“en_GB”代表英语(英国)。 |
{return} | string | 显示本地化语言名称,如果不存在返回null。 |
public function getLanguage($id)
{
return $this->getLocaleDisplayName($id, 'languages');
}
getLanguageID()
方法
(可用自 v1.1.9)
public string getLanguageID(string $id)
| ||
$id | string | 要转换的区域ID |
{return} | string | 语言ID |
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;
}
转换区域ID为语言ID。 语言ID为下划线前的一组字母。
getLocaleDisplayName()
方法
(可用自 v1.1.9)
public string getLocaleDisplayName(string $id=NULL, string $category='languages')
| ||
$id | string | array key from an array named by $category。 |
$category | string | 数据类别。单一的‘languages’,‘scripts’或‘territories’。 |
{return} | string | 返回指定的本地化名称,如果不存在则返回null。 |
public function getLocaleDisplayName($id=null, $category='languages')
{
$id = $this->getCanonicalID($id);
if (isset($this->_data[$category][$id]))
{
return $this->_data[$category][$id];
}
else if (($category == 'languages') && ($id=$this->getLanguageID($id)) && (isset($this->_data[$category][$id])))
{
return $this->_data[$category][$id];
}
else if (($category == 'scripts') && ($id=$this->getScriptID($id)) && (isset($this->_data[$category][$id])))
{
return $this->_data[$category][$id];
}
else if (($category == 'territories') && ($id=$this->getTerritoryID($id)) && (isset($this->_data[$category][$id])))
{
return $this->_data[$category][$id];
}
else {
return null;
}
}
获取本地化i18数据文件在(framework/i18n/data/ files)。
getLocaleIDs()
方法
public static array getLocaleIDs()
| ||
{return} | array | 框架可以识别的区域ID。 |
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()
方法
public string getMonthName(integer $month, string $width='wide', boolean $standAlone=false)
| ||
$month | integer | 月份(1-12) |
$width | string | 月份名称宽度,它可以是‘wide’,‘abbreviated’或‘narrow’。 |
$standAlone | boolean | 是否返回独立格式的月份名称 |
{return} | string | 月份名称 |
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()
方法
public array getMonthNames(string $width='wide', boolean $standAlone=false)
| ||
$width | string | 月份名称宽度,它可以是‘wide’,‘abbreviated’或‘narrow’。 |
$standAlone | boolean | 是否返回独立格式的月份名称 |
{return} | array | 返回由(1-12)索引的月份名称 |
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];
}
返回指定宽度的月份名称。
getNumberFormatter()
方法
public CNumberFormatter getNumberFormatter()
| ||
{return} | CNumberFormatter | 返回这个区域的数字格式 |
public function getNumberFormatter()
{
if($this->_numberFormatter===null)
$this->_numberFormatter=new CNumberFormatter($this);
return $this->_numberFormatter;
}
getNumberSymbol()
方法
public string getNumberSymbol(string $name)
| ||
$name | string | 符号名称 |
{return} | string | 符号 |
public function getNumberSymbol($name)
{
return isset($this->_data['numberSymbols'][$name]) ? $this->_data['numberSymbols'][$name] : null;
}
getOrientation()
方法
(可用自 v1.1.2)
public string getOrientation()
| ||
{return} | string | 文字方向,要么是‘ltr’(从左到右),要么是‘rtl’(从右到左)。 |
public function getOrientation()
{
return isset($this->_data['orientation']) ? $this->_data['orientation'] : 'ltr';
}
getPMName()
方法
public string getPMName()
| ||
{return} | string | PM名称 |
public function getPMName()
{
return $this->_data['pmName'];
}
getPercentFormat()
方法
public string getPercentFormat()
| ||
{return} | string | 百分比格式 |
public function getPercentFormat()
{
return $this->_data['percentFormat'];
}
getPluralRules()
方法
public array getPluralRules()
| ||
{return} | array | 复数形式表达式 |
public function getPluralRules()
{
return isset($this->_data['pluralRules']) ? $this->_data['pluralRules'] : array();
}
getScientificFormat()
方法
public string getScientificFormat()
| ||
{return} | string | 科学记数法格式 |
public function getScientificFormat()
{
return $this->_data['scientificFormat'];
}
getScript()
方法
(可用自 v1.1.9)
public string getScript(string $id)
| ||
$id | string | Unicode脚本标识符IETF BCP 47。 例如:代码“en_US”英语(美国)和“en_GB”代表英语(英国)。 |
{return} | string | 显示本地化脚本名称,如果不存在返回null。 |
public function getScript($id)
{
return $this->getLocaleDisplayName($id, 'scripts');
}
getScriptID()
方法
(可用自 v1.1.9)
public string getScriptID(string $id)
| ||
$id | string | 要转换的区域ID |
{return} | string | 脚本ID |
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 distigused from territory sub tags by length
if (strlen($subTag[1])===4)
{
$id = $subTag[1];
}
else
{
$id = null;
}
}
else
{
$id = null;
}
return $id;
}
转换区域ID为脚本ID。 脚本ID为下划线后四位字符组成。
getTerritory()
方法
(可用自 v1.1.9)
public string getTerritory(string $id)
| ||
$id | string | Unicode范围标识符IETF BCP 47。 例如:代码“en_US”英语(美国)和“en_GB”代表英语(英国)。 |
{return} | string | 显示范围名称,如果不存在返回null。 |
public function getTerritory($id)
{
return $this->getLocaleDisplayName($id, 'territories');
}
getTerritoryID()
方法
(可用自 v1.1.9)
public string getTerritoryID(string $id)
| ||
$id | string | 要转换的区域ID |
{return} | string | 范围ID |
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 distigused from script sub tags by length
if (strlen($subTag[1])<4)
{
$id = $subTag[1];
}
else
{
$id = null;
}
}
else
{
$id = null;
}
return $id;
}
转换区域ID为范围ID。 范围ID由下划线后2至3位字母和数字组成。
getTimeFormat()
方法
public string getTimeFormat(string $width='medium')
| ||
$width | string | 时间格式宽度。可以是‘full’,‘long’,‘medium’或‘short’。 |
{return} | string | 日期格式 |
public function getTimeFormat($width='medium')
{
return $this->_data['timeFormats'][$width];
}
getWeekDayName()
方法
public string getWeekDayName(integer $day, string $width='wide', boolean $standAlone=false)
| ||
$day | integer | 星期(0-6,0意味着星期天) |
$width | string | 星期名称宽度。它可以是‘wide’,‘abbreviated’或‘narrow’。 |
$standAlone | boolean | 是否返回独立格式的星期名称 |
{return} | string | 星期名称 |
public function getWeekDayName($day,$width='wide',$standAlone=false)
{
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()
方法
public array getWeekDayNames(string $width='wide', boolean $standAlone=false)
| ||
$width | string | 星期名称宽度。它可以是‘wide’,‘abbreviated’或‘narrow’。 |
$standAlone | boolean | 是否返回独立格式的星期名称 |
{return} | array | 由星期值索引 (0-6,0是星期天,1是星期一, ...)的星期名字。 |
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];
}
返回指定宽度的星期名字。