Yii 多语言

http://my.oschina.net/resory/blog/84852

YII有三种翻译类型

  1. CPhpMessageSource : Translations are stored as key-value pairs in a PHP array.
  2. CGettextMessageSource : Translations are stored as GNU Gettext files. (PO Files)
  3. 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>";&nbsp;&nbsp;&nbsp;&nbsp;
echo "password =>".Yii::t('default', 'password');

?>

 output:

username =>用戶名
password =>用戶密碼

 

 

猜你喜欢

转载自hnlixf.iteye.com/blog/1894398