Yii2語(yǔ)言國(guó)際化自動(dòng)配置詳解_第1頁(yè)
Yii2語(yǔ)言國(guó)際化自動(dòng)配置詳解_第2頁(yè)
Yii2語(yǔ)言國(guó)際化自動(dòng)配置詳解_第3頁(yè)
Yii2語(yǔ)言國(guó)際化自動(dòng)配置詳解_第4頁(yè)
Yii2語(yǔ)言國(guó)際化自動(dòng)配置詳解_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第Yii2語(yǔ)言國(guó)際化自動(dòng)配置詳解如何實(shí)現(xiàn)語(yǔ)言國(guó)際自動(dòng)化,大家可能覺(jué)得自動(dòng)化,是不是不需要配置就自動(dòng)切換,這個(gè)思路我之前也想過(guò),能不能根據(jù)IP來(lái)判斷地理位置然后確定其語(yǔ)言,網(wǎng)上找過(guò)一個(gè)"IpToCountry"相關(guān)的,有興趣的可以搜索出來(lái)看看,他會(huì)提供一個(gè)ip對(duì)照的表,每隔一段時(shí)間會(huì)更新一次,不過(guò)這個(gè)暫時(shí)沒(méi)做,后面考慮嘗試下

這里我們說(shuō)下Yii2如何實(shí)現(xiàn),因?yàn)槲覀兩厦娴囊黄恼路窒碜隽苏Z(yǔ)言國(guó)際化的配置,也將對(duì)應(yīng)的語(yǔ)言翻譯了出來(lái),下面就是需要根據(jù)條件來(lái)做切換

從配置文件我們知道只需要更改language這個(gè)配置值就可以了,但是要在哪里更改呢。這里我的操作步驟如下

我想整體對(duì)項(xiàng)目的所有內(nèi)容進(jìn)行語(yǔ)言國(guó)際化,唯一我能想到的是修改控制器,有的說(shuō)是修改入口文件,我覺(jué)得修改入口文件有點(diǎn)破壞框架結(jié)構(gòu)了。

第一步創(chuàng)建一個(gè)AppController

繼承yii/web/Controller,實(shí)現(xiàn)如下

namespaceapp\controllers;

useYii;

useyii\web\Controller;

classAppControllerextendsController

publicfunctioninit()

if(isset(Yii::$app-session['_lang'])){

Yii::$app-language=Yii::$app-session['_lang'];

parent::init();

第二步將所有自己的控制器都繼承AppController

做類似如下操作,我這里只是舉了一個(gè)BlogController的例子

classBlogControllerextendsAppController

第三步實(shí)現(xiàn)設(shè)置多語(yǔ)言的處理

我這里在我的控制器SiteController加了如下Action

publicfunctionactionLanguage($language)

Yii::$app-session['_lang']=$language;

$redirectUrl=Yii::$app-request-headers['Referer'];

if(!$redirectUrl){

$redirectUrl=Yii::$app-homeUrl;

return$this-redirect($redirectUrl);

每次需要修改語(yǔ)言的話,只要將語(yǔ)言傳入actionLanguage,就會(huì)更改session中_lang的值,然后每個(gè)控制器在調(diào)用的時(shí)候都會(huì)先去更改項(xiàng)目的language

第四步前端UI修改

通過(guò)在前端加個(gè)修改的邏輯,方便前端訪問(wèn)者進(jìn)行更改語(yǔ)言設(shè)置

ahref="j#"rel="externalnofollow"data-target="#"data-toggle="dropdown"

{{Yii.t('app','Language')}}

b/b

class="{%ifapp.session['_lang']=='zh-CN'%}active{%endif%}"

href="{{url(['site/language'],{'language':'zh-CN'})}}"rel="externalnofollow"

{{Yii.t('app','Chinese')}}/a

/li

class="{%ifapp.session['_lang']=='en-US'%}active{%endif%}"

href="{{url(['site/language'],{'language':'en-US'})}}"rel="externalnofollow"

{{Yii.t('app','English')}}/a

/li

/ul

/li

/ul

我這里使用的Twig模板。

到這里就都設(shè)置完了,可以正常切換語(yǔ)言了。后面如果又加了新的內(nèi)容進(jìn)去的話,可以直接執(zhí)行上文中提到的命令

./yiimessage/extract@app/config/i18n.php

如有不理解的地方可以加群詳細(xì)了解

ps:使用yii生成映射目錄

./yiimessage/extract@app/config/i18n.php

使用以上命令,實(shí)際上就是按照i18n.php中給定的參數(shù),執(zhí)行掃描操作,將所有形如Yii::t('app','xxx')這樣語(yǔ)句中的xxx取出,放入映射文件中。

這時(shí),在common/messages中會(huì)有zh-CN文件夾生成,里面的app.php即為映射文件。

app.php

return[

'OpenId'='OpenId',

'UserId'='用戶id',

'UserName'='用戶名',

'UserPortrait'='用戶頭像',

'About'='關(guān)于我們',

'Areyousureyouwanttodeletethisitem'='確定要?jiǎng)h除?',

'Contact'='聯(lián)系方式',

'Create'='創(chuàng)建',

'CreateMyuser'='創(chuàng)建用戶',

'Delete'='刪除',

'Home'='首頁(yè)',

'Login'='登錄',

'MyCompany'='我的網(wǎng)站',

'Myusers'='用戶',

'Res

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論