If you do:php
Yii::t('test', "example message");app
"example message" must be in the language defined over Yii::app()->sourceLanguage. If you set sourceLanguage to something else (eg: xx), you can then provide translation for your original sourceLanguage - "xx" does not exist and is used as a dummy.yii
Yii::app()->sourceLanguage = 'xx';ide
Yii::app()->language = 'en';this
Yii::t('test', "0001");get
You must provide this file: "protected/messages/en/test.php":it
return array(io
'0001' => 'example message';class
);test
在config/main.php 裏設置了sourceLanguage和language。
'sourceLanguage'=>'zh_cn',
'language'=>'zh_cn',
發現yii:t()將不生效 :blink:
緣由在於CMessageSource.php裏76行,
if($language!==$this->getLanguage())
return $this->translateMessage($category,$message,$language);
else
return $message; 這個時候因爲 sourceLanguage = language;直接return $message;
sourceLanguage 表明你的數據源語言標記
language 表示當前語言標記
假如二者相同,就沒有必要轉換了~ 如:
Yii::t('app','Hello');
就標識數據源應該爲英文了
Yii::t('app','您好');
數據源應該爲中文
Yii::t('app', 'Path alias "{alias}" is redefined.', array('{alias}'=>$alias))