CDbMessageSource
鍖 | system.i18n |
---|---|
缁ф壙 | class CDbMessageSource » CMessageSource » CApplicationComponent » CComponent |
瀹炵幇 | IApplicationComponent |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: CDbMessageSource.php 3515 2011-12-28 12:29:24Z mdomba $ |
婧愮爜 | framework/i18n/CDbMessageSource.php |
CDbMessageSource浠h〃缈昏瘧娑堟伅鐨勬暟鎹潵婧愬瓨鍌ㄥ湪鏁版嵁搴撲腑銆
鏁版嵁搴撳繀椤诲寘鍚潃涓嬮潰涓や釜琛:
褰cachingDuration璁剧疆涓烘鏁版椂锛岀炕璇戠殑娑堟伅灏嗚缂撳瓨銆
鏁版嵁搴撳繀椤诲寘鍚潃涓嬮潰涓や釜琛:
CREATE TABLE SourceMessage ( id INTEGER PRIMARY KEY, category VARCHAR(32), message TEXT ); CREATE TABLE Message ( id INTEGER, language VARCHAR(16), translation TEXT, PRIMARY KEY (id, language), CONSTRAINT FK_Message_SourceMessage FOREIGN KEY (id) REFERENCES SourceMessage (id) ON DELETE CASCADE ON UPDATE RESTRICT );鈥楽ourceMessage鈥欒〃瀛樺偍鐫瑕佺炕璇戠殑淇℃伅锛屸楳essage鈥欒〃瀛樺偍鐫缈昏瘧濂界殑淇℃伅銆 涓嬮潰杩欎袱涓〃鐨勫悕绉版槸鍙互鑷畾涔夎缃紝 sourceMessageTable 鍜 translatedMessageTable銆
褰cachingDuration璁剧疆涓烘鏁版椂锛岀炕璇戠殑娑堟伅灏嗚缂撳瓨銆
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
behaviors | array | 杩欎釜搴旂敤缁勪欢闄勫姞鐨勮涓恒 杩欐琛屼负灏嗗湪搴旂敤缁勪欢璋冪敤init鏃堕檮鍔犲湪搴旂敤缁勪欢涓娿 璇峰弬鐓CModel::behaviors濡備綍鎸囧畾姝ゅ睘鎬у笺 | CApplicationComponent |
cacheID | string | 鐢ㄦ潵缂撳瓨娑堟伅鐨勭紦瀛樺簲鐢ㄧ粍浠禝D銆 榛樿涓衡榗ache鈥欙紝杩欓噷鎸囧簲鐢ㄧ▼搴忕紦瀛樼粍浠躲 濡傛灉浣犳兂绂佺敤缂撳瓨缁勪欢锛岃灏嗘灞炴ц缃负false銆 | CDbMessageSource |
cachingDuration | integer | 淇濆瓨缂撳瓨淇℃伅鐨勭敓鍛藉懆鏈燂紝鍗曚綅鏄銆 榛樿涓0琛ㄧず璇ョ紦瀛樿绂佺敤銆 | CDbMessageSource |
connectionID | string | 鏁版嵁搴撹繛鎺ョ殑搴旂敤绋嬪簭缁勪欢鐨処D銆傞粯璁ゅ间负鈥榙b鈥欍 | CDbMessageSource |
dbConnection | CDbConnection | 閫傚簲淇℃伅婧愮殑鏁版嵁搴撻摼鎺ャ | CDbMessageSource |
forceTranslation | boolean | 褰撴簮璇█鍜岀洰鏍囪瑷鐩稿悓鏃讹紝鏄惁寮哄埗缈昏瘧淇℃伅銆 榛樿涓篺alse锛屾剰鎬濇槸婧愯瑷鍜岀洰鏍囪瑷涓嶅悓鏃舵墽琛屻 | CMessageSource |
isInitialized | boolean | 妫鏌ュ簲鐢ㄧ粍浠舵槸鍚﹀凡缁忓垵濮嬪寲銆 | CApplicationComponent |
language | string | 杩斿洖婧愪俊鎭殑涔﹀啓璇█銆 榛樿涓application language銆 | CMessageSource |
sourceMessageTable | string | 娑堟伅琛ㄧ殑鍚嶇О锛岄粯璁や负鈥楽ourceMessage鈥欍 | CDbMessageSource |
translatedMessageTable | string | 缈昏瘧鍚庣殑淇℃伅鏁版嵁琛ㄧ殑鍚嶅瓧锛岄粯璁や负鈥楳essage鈥欍 | CDbMessageSource |
鍏叡鏂规硶
鍙椾繚鎶ゆ柟娉
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
loadMessages() | 鍔犺浇鎸囧畾璇█鍜屽垎绫荤殑缈昏瘧淇℃伅銆 | CDbMessageSource |
loadMessagesFromDb() | 浠庢暟鎹簱鍔犺浇淇℃伅銆 | CDbMessageSource |
translateMessage() | 缈昏瘧鎸囧畾淇℃伅銆 | CMessageSource |
灞炴ц缁
cacheID
灞炴
public string $cacheID;
鐢ㄦ潵缂撳瓨娑堟伅鐨勭紦瀛樺簲鐢ㄧ粍浠禝D銆 榛樿涓衡榗ache鈥欙紝杩欓噷鎸囧簲鐢ㄧ▼搴忕紦瀛樼粍浠躲 濡傛灉浣犳兂绂佺敤缂撳瓨缁勪欢锛岃灏嗘灞炴ц缃负false銆
cachingDuration
灞炴
public integer $cachingDuration;
淇濆瓨缂撳瓨淇℃伅鐨勭敓鍛藉懆鏈燂紝鍗曚綅鏄銆 榛樿涓0琛ㄧず璇ョ紦瀛樿绂佺敤銆
connectionID
灞炴
public string $connectionID;
鏁版嵁搴撹繛鎺ョ殑搴旂敤绋嬪簭缁勪欢鐨処D銆傞粯璁ゅ间负鈥榙b鈥欍
dbConnection
灞炴
鍙 锛堝彲鐢ㄨ嚜 v1.1.5锛
public CDbConnection getDbConnection()
閫傚簲淇℃伅婧愮殑鏁版嵁搴撻摼鎺ャ
sourceMessageTable
灞炴
public string $sourceMessageTable;
娑堟伅琛ㄧ殑鍚嶇О锛岄粯璁や负鈥楽ourceMessage鈥欍
translatedMessageTable
灞炴
public string $translatedMessageTable;
缈昏瘧鍚庣殑淇℃伅鏁版嵁琛ㄧ殑鍚嶅瓧锛岄粯璁や负鈥楳essage鈥欍
鏂规硶璇︾粏
getDbConnection()
鏂规硶
锛堝彲鐢ㄨ嚜 v1.1.5锛
public CDbConnection getDbConnection()
| ||
{return} | CDbConnection | 淇℃伅婧愪娇鐢ㄧ殑鏁版嵁搴撹繛鎺ャ |
婧愮爜锛 framework/i18n/CDbMessageSource.php#102 (鏄剧ず)
public function getDbConnection()
{
if($this->_db===null)
{
$this->_db=Yii::app()->getComponent($this->connectionID);
if(!$this->_db instanceof CDbConnection)
throw new CException(Yii::t('yii','CDbMessageSource.connectionID is invalid. Please make sure "{id}" refers to a valid database application component.',
array('{id}'=>$this->connectionID)));
}
return $this->_db;
}
閫傚簲淇℃伅婧愮殑鏁版嵁搴撻摼鎺ャ
loadMessages()
鏂规硶
protected array loadMessages(string $category, string $language)
| ||
$category | string | 淇℃伅鍒嗙被 |
$language | string | 鐩爣璇█ |
{return} | array | 杩斿洖鍔犺浇濂界殑淇℃伅 |
婧愮爜锛 framework/i18n/CDbMessageSource.php#78 (鏄剧ず)
protected function loadMessages($category,$language)
{
if($this->cachingDuration>0 && $this->cacheID!==false && ($cache=Yii::app()->getComponent($this->cacheID))!==null)
{
$key=self::CACHE_KEY_PREFIX.'.messages.'.$category.'.'.$language;
if(($data=$cache->get($key))!==false)
return unserialize($data);
}
$messages=$this->loadMessagesFromDb($category,$language);
if(isset($cache))
$cache->set($key,serialize($messages),$this->cachingDuration);
return $messages;
}
鍔犺浇鎸囧畾璇█鍜屽垎绫荤殑缈昏瘧淇℃伅銆
loadMessagesFromDb()
鏂规硶
锛堝彲鐢ㄨ嚜 v1.1.5锛
protected array loadMessagesFromDb(string $category, string $language)
| ||
$category | string | 淇℃伅鍒嗙被 |
$language | string | 鐩爣璇█ |
{return} | array | 杩斿洖浠庢暟鎹簱鍔犺浇鐨勪俊鎭 |
婧愮爜锛 framework/i18n/CDbMessageSource.php#122 (鏄剧ず)
protected function loadMessagesFromDb($category,$language)
{
$sql=<<<EOD
SELECT t1.message AS message, t2.translation AS translation
FROM {$this->sourceMessageTable} t1, {$this->translatedMessageTable} t2
WHERE t1.id=t2.id AND t1.category=:category AND t2.language=:language
EOD;
$command=$this->getDbConnection()->createCommand($sql);
$command->bindValue(':category',$category);
$command->bindValue(':language',$language);
$messages=array();
foreach($command->queryAll() as $row)
$messages[$row['message']]=$row['translation'];
return $messages;
}
浠庢暟鎹簱鍔犺浇淇℃伅銆 浣犲彲浠ラ噸鍐欒繖涓柟娉曟潵瀹氬埗淇濆瓨鍦ㄦ暟鎹簱鐨勪俊鎭