Yii Framework v1.1.10 绫诲弬鑰

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鏂囦欢鍜屾暟缁勬潵淇濆瓨缈昏瘧淇℃伅銆
  • 鎵鏈夌炕璇戣淇濆瓨鍦basePath鐩綍涓嬨
  • 姣忕璇█閮戒細淇濆瓨鍦ㄧ嫭绔嬬洰褰曠殑PHP鏂囦欢閲岄潰锛 瀹冪殑鍚嶅瓧璺熻瑷ID鐩稿悓銆 姣忎釜PHP鏂囦欢閮藉寘鍚浉鍚岀殑淇℃伅绫诲埆锛屾枃浠跺悕绉板拰绫诲埆鍚嶇О鐩稿悓銆
  • PHP鏂囦欢閲屼細杩斿洖鏁扮粍锛堟簮锛岀炕璇戯級銆 渚嬪锛
    return array(
        'original message 1' => 'translated message 1',
        'original message 2' => 'translated message 2',
    );
    
cachingDuration璁剧疆涓烘鏁帮紝缈昏瘧鐨勪俊鎭皢琚紦瀛樸

鎵╁睍绫荤殑淇℃伅锛堜緥濡傦細鎸備欢锛屾ā鍧楋級鍙互鎸囧畾绠$悊鍜屼娇鐢ㄣ 鐗瑰埆娉ㄦ剰锛 濡傛灉淇℃伅鍚嶆槸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

鍏叡鏂规硶

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
__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() 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 CComponent
getEventHandlers() 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 CComponent
getIsInitialized() 妫鏌ュ簲鐢ㄧ粍浠舵槸鍚﹀凡缁忓垵濮嬪寲銆 CApplicationComponent
getLanguage() 杩斿洖杩斿洖婧愪俊鎭殑涔﹀啓璇█銆 榛樿涓application language CMessageSource
hasEvent() 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 CComponent
hasEventHandler() 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 CComponent
hasProperty() 纭畾灞炴ф槸鍚﹁瀹氫箟銆 CComponent
init() 鍒濆鍖栧簲鐢ㄧ▼搴忕粍浠躲 CPhpMessageSource
onMissingTranslation() 褰撲俊鎭笉鑳借缈昏瘧鏃跺彂璧枫 CMessageSource
raiseEvent() 鍙戣捣涓涓簨浠躲 CComponent
setLanguage() 璁剧疆璁剧疆婧愪俊鎭殑涔﹀啓璇█銆 CMessageSource
translate() 缈昏瘧淇℃伅鍒版寚瀹氳瑷銆 CMessageSource

鍙椾繚鎶ゆ柟娉

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
getMessageFile() 鍩轰簬鎸囧畾鐨勭被鍒拰璇█鏉ュ喅瀹氫俊鎭枃浠躲 CPhpMessageSource
loadMessages() 鍔犺浇鎸囧畾璇█鍜岀被鍒殑淇℃伅缈昏瘧銆 CPhpMessageSource
translateMessage() 缈昏瘧鎸囧畾淇℃伅銆 CMessageSource

浜嬩欢

闅愯棌缁ф壙浜嬩欢

浜嬩欢鎻忚堪瀹氫箟鍦
onMissingTranslation 褰撲俊鎭笉鑳借缈昏瘧鏃跺彂璧枫 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>&& $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();
}

鍔犺浇鎸囧畾璇█鍜岀被鍒殑淇℃伅缈昏瘧銆

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.