YII的国际化使用方法

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

相关文章
相关标签/搜索