CMessageSource
鍖 | system.i18n |
---|---|
缁ф壙 | abstract class CMessageSource » CApplicationComponent » CComponent |
瀹炵幇 | IApplicationComponent |
瀛愮被 | CDbMessageSource, CGettextMessageSource, CPhpMessageSource |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: CMessageSource.php 3515 2011-12-28 12:29:24Z mdomba $ |
婧愮爜 | framework/i18n/CMessageSource.php |
CMessageSource鏄秷鎭炕璇戠被鐨勫熀绫汇
淇℃伅婧愭槸鎻愪緵淇℃伅鍥介檯鍖栵紙i18n锛夌殑搴旂敤绋嬪簭缁勪欢銆 瀹冨瓨鍌ㄤ笉鍚岀殑缈昏瘧淇℃伅缁撴灉锛 褰撹姹傛椂鎻愪緵杩欎簺缈昏瘧淇℃伅銆
鍏蜂綋绫诲繀闇瀹炵幇loadMessages鎴栭噸鍐translateMessage銆
淇℃伅婧愭槸鎻愪緵淇℃伅鍥介檯鍖栵紙i18n锛夌殑搴旂敤绋嬪簭缁勪欢銆 瀹冨瓨鍌ㄤ笉鍚岀殑缈昏瘧淇℃伅缁撴灉锛 褰撹姹傛椂鎻愪緵杩欎簺缈昏瘧淇℃伅銆
鍏蜂綋绫诲繀闇瀹炵幇loadMessages鎴栭噸鍐translateMessage銆
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
behaviors | array | 杩欎釜搴旂敤缁勪欢闄勫姞鐨勮涓恒 杩欐琛屼负灏嗗湪搴旂敤缁勪欢璋冪敤init鏃堕檮鍔犲湪搴旂敤缁勪欢涓娿 璇峰弬鐓CModel::behaviors濡備綍鎸囧畾姝ゅ睘鎬у笺 | CApplicationComponent |
forceTranslation | boolean | 褰撴簮璇█鍜岀洰鏍囪瑷鐩稿悓鏃讹紝鏄惁寮哄埗缈昏瘧淇℃伅銆 榛樿涓篺alse锛屾剰鎬濇槸婧愯瑷鍜岀洰鏍囪瑷涓嶅悓鏃舵墽琛屻 | CMessageSource |
isInitialized | boolean | 妫鏌ュ簲鐢ㄧ粍浠舵槸鍚﹀凡缁忓垵濮嬪寲銆 | CApplicationComponent |
language | string | 杩斿洖婧愪俊鎭殑涔﹀啓璇█銆 榛樿涓application language銆 | CMessageSource |
鍏叡鏂规硶
鍙椾繚鎶ゆ柟娉
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
loadMessages() | 鍔犺浇鎸囧畾璇█鍜岀被鍨嬬殑淇℃伅缈昏瘧銆 | CMessageSource |
translateMessage() | 缈昏瘧鎸囧畾淇℃伅銆 | CMessageSource |
灞炴ц缁
forceTranslation
灞炴
锛堝彲鐢ㄨ嚜 v1.1.4锛
public boolean $forceTranslation;
褰撴簮璇█鍜岀洰鏍囪瑷鐩稿悓鏃讹紝鏄惁寮哄埗缈昏瘧淇℃伅銆 榛樿涓篺alse锛屾剰鎬濇槸婧愯瑷鍜岀洰鏍囪瑷涓嶅悓鏃舵墽琛屻
language
灞炴
杩斿洖婧愪俊鎭殑涔﹀啓璇█銆 榛樿涓application language銆
鏂规硶璇︾粏
getLanguage()
鏂规硶
public string getLanguage()
| ||
{return} | string | 杩斿洖婧愪俊鎭殑涔﹀啓璇█銆 榛樿涓application language銆 |
婧愮爜锛 framework/i18n/CMessageSource.php#52 (鏄剧ず)
public function getLanguage()
{
return $this->_language===null ? Yii::app()->sourceLanguage : $this->_language;
}
loadMessages()
鏂规硶
abstract protected array loadMessages(string $category, string $language)
| ||
$category | string | 淇℃伅绫诲埆 |
$language | string | 鐩綍璇█ |
{return} | array | 杩斿洖鍔犺浇淇℃伅 |
婧愮爜锛 framework/i18n/CMessageSource.php#46 (鏄剧ず)
abstract protected function loadMessages($category,$language);
鍔犺浇鎸囧畾璇█鍜岀被鍨嬬殑淇℃伅缈昏瘧銆
onMissingTranslation()
鏂规硶
public void onMissingTranslation(CMissingTranslationEvent $event)
| ||
$event | CMissingTranslationEvent | the event parameter |
婧愮爜锛 framework/i18n/CMessageSource.php#124 (鏄剧ず)
public function onMissingTranslation($event)
{
$this->raiseEvent('onMissingTranslation',$event);
}
褰撲俊鎭笉鑳借缈昏瘧鏃跺彂璧枫 澶勭悊瀵硅薄灏嗕繚瀛樹俊鎭埌鏃ュ織锛 鎴栬呭仛涓浜涢粯璁ゅ鐞嗐 灏嗙敱translateMessage杩斿洖CMissingTranslationEvent::message灞炴с
setLanguage()
鏂规硶
public void setLanguage(string $language)
| ||
$language | string | 璁剧疆婧愪俊鎭殑涔﹀啓璇█銆 |
婧愮爜锛 framework/i18n/CMessageSource.php#60 (鏄剧ず)
public function setLanguage($language)
{
$this->_language=CLocale::getCanonicalID($language);
}
translate()
鏂规硶
public string translate(string $category, string $message, string $language=NULL)
| ||
$category | string | 淇℃伅绫诲埆 |
$message | string | 瑕佺炕璇戠殑淇℃伅 |
$language | string | 鐩爣璇█銆傚鏋滀负null锛堥粯璁わ級锛屽垯璋冪敤application language銆 |
{return} | string | 杩斿洖宸茬粡缈昏瘧鐨勪俊鎭紙濡傛灉涓嶉渶瑕佺炕璇戝垯杩斿洖鍘熷淇℃伅锛 |
婧愮爜锛 framework/i18n/CMessageSource.php#81 (鏄剧ず)
public function translate($category,$message,$language=null)
{
if($language===null)
$language=Yii::app()->getLanguage();
if($this->forceTranslation || $language!==$this->getLanguage())
return $this->translateMessage($category,$message,$language);
else
return $message;
}
缈昏瘧淇℃伅鍒版寚瀹氳瑷銆
娉ㄦ剰锛
濡傛灉鎸囧畾璇█涓source message language鐩稿悓鏃跺垯涓嶇炕璇戜俊鎭
濡傛灉娌℃湁鎵惧埌瀵瑰簲鐨勭炕璇戜俊鎭紝
鍒欒皟鐢onMissingTranslation浜嬩欢銆
澶勭悊瀵硅薄鍙互璁板綍杩欎簺淇℃伅鎴栧仛涓浜涢粯璁ゅ鐞嗭紝
鐒跺悗杩斿洖CMissingTranslationEvent::message杩欎釜浜嬩欢鍙傛暟銆
translateMessage()
鏂规硶
protected string translateMessage(string $category, string $message, string $language)
| ||
$category | string | 淇℃伅鎵灞炵殑绫诲埆 |
$message | string | 瑕佺炕璇戠殑娑堟伅 |
$language | string | 鐩爣璇█ |
{return} | string | 杩斿洖宸茬粡缈昏瘧鐨勪俊鎭 |
婧愮爜锛 framework/i18n/CMessageSource.php#100 (鏄剧ず)
protected function translateMessage($category,$message,$language)
{
$key=$language.'.'.$category;
if(!isset($this->_messages[$key]))
$this->_messages[$key]=$this->loadMessages($category,$language);
if(isset($this->_messages[$key][$message]) && $this->_messages[$key][$message]!=='')
return $this->_messages[$key][$message];
else if($this->hasEventHandler('onMissingTranslation'))
{
$event=new CMissingTranslationEvent($this,$category,$message,$language);
$this->onMissingTranslation($event);
return $event->message;
}
else
return $message;
}
缈昏瘧鎸囧畾淇℃伅銆 濡傛灉缈昏瘧淇℃伅娌℃湁琚壘鍒帮紝 鍒欏彂璧onMissingTranslation浜嬩欢銆