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))