CPhpMessageSource
鍖 | system.i18n |
---|---|
缁ф壙 | class CPhpMessageSource » CMessageSource » CApplicationComponent » CComponent |
瀹炵幇 | IApplicationComponent |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: CPhpMessageSource.php 3515 2011-12-28 12:29:24Z mdomba $ |
婧愮爜 | framework/i18n/CPhpMessageSource.php |
CPhpMessageSource浠h〃缈昏瘧鐨勪俊鎭拰淇℃伅婧愬瓨鍌ㄥ湪PHP鑴氭湰銆
CPhpMessageSource浣跨敤PHP鏂囦欢鍜屾暟缁勬潵淇濆瓨缈昏瘧淇℃伅銆
鎵╁睍绫荤殑淇℃伅锛堜緥濡傦細鎸備欢锛屾ā鍧楋級鍙互鎸囧畾绠$悊鍜屼娇鐢ㄣ 鐗瑰埆娉ㄦ剰锛 濡傛灉淇℃伅鍚嶆槸Xyz鐨勬墿灞曪紝閭d箞淇℃伅鍒嗙被鍙互鎸囧畾涓'Xyz.categoryName'銆 鐩稿叧淇℃伅鏂囦欢浼氳璁や负鏄楤asePath/messages/LanguageID/categoryName.php鈥欙紝鍦ㄢ楤asePath鈥欏叧鑱斿埌鍖呭惈鎵╁睍绫绘枃浠剁殑鐩綍銆 褰撲娇鐢╕ii::t()鏉ョ炕璇戜竴涓墿灞曚俊鎭椂锛 閭d箞鍒嗙被鍚嶇О浼氳璁句负鈥榅yz.categoryName鈥欍
CPhpMessageSource浣跨敤PHP鏂囦欢鍜屾暟缁勬潵淇濆瓨缈昏瘧淇℃伅銆
- 鎵鏈夌炕璇戣淇濆瓨鍦basePath鐩綍涓嬨
- 姣忕璇█閮戒細淇濆瓨鍦ㄧ嫭绔嬬洰褰曠殑PHP鏂囦欢閲岄潰锛 瀹冪殑鍚嶅瓧璺熻瑷ID鐩稿悓銆 姣忎釜PHP鏂囦欢閮藉寘鍚浉鍚岀殑淇℃伅绫诲埆锛屾枃浠跺悕绉板拰绫诲埆鍚嶇О鐩稿悓銆
- PHP鏂囦欢閲屼細杩斿洖鏁扮粍锛堟簮锛岀炕璇戯級銆
渚嬪锛
return array( 'original message 1' => 'translated message 1', 'original message 2' => 'translated message 2', );
鎵╁睍绫荤殑淇℃伅锛堜緥濡傦細鎸備欢锛屾ā鍧楋級鍙互鎸囧畾绠$悊鍜屼娇鐢ㄣ 鐗瑰埆娉ㄦ剰锛 濡傛灉淇℃伅鍚嶆槸Xyz鐨勬墿灞曪紝閭d箞淇℃伅鍒嗙被鍙互鎸囧畾涓'Xyz.categoryName'銆 鐩稿叧淇℃伅鏂囦欢浼氳璁や负鏄楤asePath/messages/LanguageID/categoryName.php鈥欙紝鍦ㄢ楤asePath鈥欏叧鑱斿埌鍖呭惈鎵╁睍绫绘枃浠剁殑鐩綍銆 褰撲娇鐢╕ii::t()鏉ョ炕璇戜竴涓墿灞曚俊鎭椂锛 閭d箞鍒嗙被鍚嶇О浼氳璁句负鈥榅yz.categoryName鈥欍
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
basePath | string | 缈昏瘧淇℃伅鐨勫熀鏈矾寰勩 榛樿涓簄ull锛岃繖鎰忓懗鐫鈥榤essages鈥欐槸搴旂敤绋嬪簭瀛愮洰褰曪紙濡傦細鈥減rotected/messages鈥濓級銆 | CPhpMessageSource |
behaviors | array | 杩欎釜搴旂敤缁勪欢闄勫姞鐨勮涓恒 杩欐琛屼负灏嗗湪搴旂敤缁勪欢璋冪敤init鏃堕檮鍔犲湪搴旂敤缁勪欢涓娿 璇峰弬鐓CModel::behaviors濡備綍鎸囧畾姝ゅ睘鎬у笺 | CApplicationComponent |
cacheID | string | 鐢ㄦ潵缂撳瓨淇℃伅鐨勭紦瀛樺簲鐢ㄧ▼搴忕粍浠禝D. | CPhpMessageSource |
cachingDuration | integer | 缂撳瓨涓俊鎭殑鐢熷懡鍛ㄦ湡銆 榛樿涓0锛屾剰鎬濊繖涓紦瀛樿绂佹銆 | CPhpMessageSource |
forceTranslation | boolean | 褰撴簮璇█鍜岀洰鏍囪瑷鐩稿悓鏃讹紝鏄惁寮哄埗缈昏瘧淇℃伅銆 榛樿涓篺alse锛屾剰鎬濇槸婧愯瑷鍜岀洰鏍囪瑷涓嶅悓鏃舵墽琛屻 | CMessageSource |
isInitialized | boolean | 妫鏌ュ簲鐢ㄧ粍浠舵槸鍚﹀凡缁忓垵濮嬪寲銆 | CApplicationComponent |
language | string | 杩斿洖婧愪俊鎭殑涔﹀啓璇█銆 榛樿涓application language銆 | CMessageSource |
鍏叡鏂规硶
鍙椾繚鎶ゆ柟娉
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
getMessageFile() | 鍩轰簬鎸囧畾鐨勭被鍒拰璇█鏉ュ喅瀹氫俊鎭枃浠躲 | CPhpMessageSource |
loadMessages() | 鍔犺浇鎸囧畾璇█鍜岀被鍒殑淇℃伅缈昏瘧銆 | CPhpMessageSource |
translateMessage() | 缈昏瘧鎸囧畾淇℃伅銆 | CMessageSource |
灞炴ц缁
basePath
灞炴
public string $basePath;
缈昏瘧淇℃伅鐨勫熀鏈矾寰勩 榛樿涓簄ull锛岃繖鎰忓懗鐫鈥榤essages鈥欐槸搴旂敤绋嬪簭瀛愮洰褰曪紙濡傦細鈥減rotected/messages鈥濓級銆
cacheID
灞炴
public string $cacheID;
鐢ㄦ潵缂撳瓨淇℃伅鐨勭紦瀛樺簲鐢ㄧ▼搴忕粍浠禝D. 榛樿涓衡榗ache鈥欙紝杩欓噷鎸囩紦瀛樺簲鐢ㄧ▼搴忕粍浠躲 璁剧疆涓篺alse锛屽皢绂佹缂撳瓨淇℃伅銆
cachingDuration
灞炴
public integer $cachingDuration;
缂撳瓨涓俊鎭殑鐢熷懡鍛ㄦ湡銆 榛樿涓0锛屾剰鎬濊繖涓紦瀛樿绂佹銆
鏂规硶璇︾粏
getMessageFile()
鏂规硶
protected string getMessageFile(string $category, string $language)
| ||
$category | string | 绫诲埆鍚嶇О |
$language | string | 璇█ID |
{return} | string | 淇℃伅鏂囦欢璺緞 |
婧愮爜锛 framework/i18n/CPhpMessageSource.php#89 (鏄剧ず)
protected function getMessageFile($category,$language)
{
if(!isset($this->_files[$category][$language]))
{
if(($pos=strpos($category,'.'))!==false)
{
$moduleClass=substr($category,0,$pos);
$moduleCategory=substr($category,$pos+1);
$class=new ReflectionClass($moduleClass);
$this->_files[$category][$language]=dirname($class->getFileName()).DIRECTORY_SEPARATOR.'messages'.DIRECTORY_SEPARATOR.$language.DIRECTORY_SEPARATOR.$moduleCategory.'.php';
}
else
$this->_files[$category][$language]=$this->basePath.DIRECTORY_SEPARATOR.$language.DIRECTORY_SEPARATOR.$category.'.php';
}
return $this->_files[$category][$language];
}
鍩轰簬鎸囧畾鐨勭被鍒拰璇█鏉ュ喅瀹氫俊鎭枃浠躲 濡傛灉绫诲埆鍚嶇О鍖呭惈涓涓偣锛屽畠灏嗕細琚垎閰嶆垚妯″潡绫诲悕绉板拰绫诲埆鍚嶇О銆 杩欑鎯呭喌涓嬶紝 淇℃伅鏂囦欢浼氳涓烘槸淇濆瓨鍦ㄦā鍧楃被鏂囦欢鐩綍涓嬬殑鈥榤essages鈥欏瓙鐩綍銆 鍚﹀垯锛屼俊鎭枃浠朵細璁や负淇濆瓨鍦basePath銆
init()
鏂规硶
public void init()
|
婧愮爜锛 framework/i18n/CPhpMessageSource.php#72 (鏄剧ず)
public function init()
{
parent::init();
if($this->basePath===null)
$this->basePath=Yii::getPathOfAlias('application.messages');
}
鍒濆鍖栧簲鐢ㄧ▼搴忕粍浠躲 杩欎釜鏂规硶閲嶅啓浜嗙埗绫绘柟娉曪紝 瀹炵幇浜嗕负鐢ㄦ埛鏁版嵁璇锋眰鍋氫竴浜涢澶勭悊銆
loadMessages()
鏂规硶
protected array loadMessages(string $category, string $language)
| ||
$category | string | 淇℃伅绫诲埆 |
$language | string | 鐩綍璇█ |
{return} | array | 鍔犺浇濂界殑淇℃伅 |
婧愮爜锛 framework/i18n/CPhpMessageSource.php#112 (鏄剧ず)
protected function loadMessages($category,$language)
{
$messageFile=$this->getMessageFile($category,$language);
if($this->cachingDuration>0 && $this->cacheID!==false && ($cache=Yii::app()->getComponent($this->cacheID))!==null)
{
$key=self::CACHE_KEY_PREFIX . $messageFile;
if(($data=$cache->get($key))!==false)
return unserialize($data);
}
if(is_file($messageFile))
{
$messages=include($messageFile);
if(!is_array($messages))
$messages=array();
if(isset($cache))
{
$dependency=new CFileCacheDependency($messageFile);
$cache->set($key,serialize($messages),$this->cachingDuration,$dependency);
}
return $messages;
}
else
return array();
}
鍔犺浇鎸囧畾璇█鍜岀被鍒殑淇℃伅缈昏瘧銆