http://my.oschina.net/resory/blog/84852
YII有三种翻译类型
- CPhpMessageSource : Translations are stored as key-value pairs in a PHP array.
- CGettextMessageSource : Translations are stored as GNU Gettext files. (PO Files)
- CDbMessageSource : Message translations are stored in database tables.
这里用的CPhpMessage Source翻译类型(YII默认的翻译类型)..CDbMessageSource试了半天(不知道怎么去实现..),还是实现不了.后来想了下,在default文件中.写SQL语句然后返回数据亦可得到同样的效果.~
views/layouts/main.php
<?php echo CHtml:: link ( ' 中文 ' , array ( 'site/index' , 'lang' => 'zh_cn' )) . ' | ' . CHtml:: link ( '繁體' , array ( 'site/index' , 'lang' => 'zh_tw' )) .' | '. CHtml:: link ( 'English' , array ( 'site/index' , 'lang' => 'en_us' ));?>
Controller.php
public function init() { if(isset($_GET['lang'])&&$_GET['lang']!=""){ //當點擊轉換語言時 Yii::app()->user->setState("yuyan",$_GET['lang']); //相當於與設置一個cookie Yii::app()->language = Yii::app()->user->getState("yuyan"); //轉換成相應的記錄語言 } if(Yii::app()->user->getState("yuyan")){ //如果設置了有session記錄 Yii::app()->language = Yii::app()->user->getState("yuyan"); //轉換成相應的記錄語言 }else{ Yii::app()->user->setState("yuyan","en_us"); //沒有session則設置一個session.默認語言為en_us Yii::app()->language = Yii::app()->user->getState("yuyan"); //轉換成相應的記錄語言 } }
messages/zh_cn/default.php
<?php return array( 'username'=>'用戶名', 'password'=>'用戶密碼', } //此處亦可以使用SQL語句,加載數據庫中的翻譯數據.偽CDbMessageSource方式啊- - #
site/index
<?php echo "username =>".Yii::t('default','username')."<br>"; echo "password =>".Yii::t('default', 'password'); ?>
output:
username =>用戶名 password =>用戶密碼