Yii框架的缺省語言是美國英語en_us
本次需求是全網(wǎng)能達到中英文切換
- 1闲昭、全局語言配置
和其它application 級別的配置一樣拂铡,系統(tǒng)的缺省語言可以在protected/config/main.php 中設置
return array(
'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
'language'=>'zh_cn', *** 不設置的話缺省為 en_us
'sourceLanguage'=>'en_us',
- 2、Controller中的初始化
由于Yii 框架中Controller 掌控幾乎全部的Views 牵触,所以我們可以通過在Controller 的初始化函數(shù)中指定該Controller 控制的所有Views 的缺省語言梗夸。
public function beforeAction(){
if ( isset($_SESSION['hl_language']) && !empty($_SESSION['hl_language']))
{
Yii::app()->language = $_SESSION['hl_language'];
}
}
- 3、準備語言包
在項目的主目錄下新建messages文件夾界轩,繼續(xù)在messages文件夾下新建對應的語言id文件夾,我本次新建的是中文闭树,那么對應的文件夾為zh_cn耸棒,文件夾結(jié)構(gòu)目錄如下:
文件app.php的內(nèi)容如下:
<?php
return array(
'My Web Application' => '我的web站點',
'首頁' => 'home',
'系統(tǒng)' => 'system',
'用戶管理' => 'UserAdminstration',
'About' => '關(guān)于',
'Contact' => '聯(lián)系我們',
'Login' => '登錄',
'Logout' => '退出',
'Yii Blog Demo' => 'Yii事例博客'
);
- 4、經(jīng)過前面三步我們已經(jīng)配置好了所有的環(huán)境报辱,現(xiàn)在我們開始正式使用
- (1)找一個合適的地方放置我們觸發(fā)切換語言的按鈕,我是在一個頁面的底部,我們只要加上如下代碼
<?php echo CHtml::link('中文',array('Flow_report/ChangeLanguage','language'=>'en_us'),array('class'=>'search-button')); ?> | <?php echo CHtml::link('English',array('Flow_report/ChangeLanguage','language'=>'zh_cn'),array('class'=>'search-button')); ?>
* 建立Flow_report控制器和對應的ChangeLanguage方法
function actionChangeLanguage(){
$hPost = $this->getParam();//獲取頁面?zhèn)鲄? $_SESSION['hl_language'] = $hPost->language;
return $this->redirect(Yii::app()->request->urlReferrer);//返回原來的鏈接
}
- 其他的一些事例代碼
$locale = Yii::app()->getLocale('it');
print_r($locale->monthNames);
Yii::app()->messages->forceTranslation = true;
echo Yii::t('app','首頁');echo "<br>";
var_dump(Yii::app()->language);
var_dump(Yii::app()->sourceLanguage);
Yii::app()->language = 'en_us';
- 5碍现、到此我們已經(jīng)完成了語言切換功能幅疼。(本次實例是在yii1.1.17版本下做的測試,請對號入座)