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

下載本文檔

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

文檔簡介

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

這里我們說下Yii2如何實現(xiàn),因為我們上面的一篇文章分享做了語言國際化的配置,也將對應(yīng)的語言翻譯了出來,下面就是需要根據(jù)條件來做切換

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

我想整體對項目的所有內(nèi)容進行語言國際化,唯一我能想到的是修改控制器,有的說是修改入口文件,我覺得修改入口文件有點破壞框架結(jié)構(gòu)了。

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

繼承yii/web/Controller,實現(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

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

classBlogControllerextendsAppController

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

我這里在我的控制器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);

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

第四步前端UI修改

通過在前端加個修改的邏輯,方便前端訪問者進行更改語言設(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è)置完了,可以正常切換語言了。后面如果又加了新的內(nèi)容進去的話,可以直接執(zhí)行上文中提到的命令

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

如有不理解的地方可以加群詳細了解

ps:使用yii生成映射目錄

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

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

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

app.php

return[

'OpenId'='OpenId',

'UserId'='用戶id',

'UserName'='用戶名',

'UserPortrait'='用戶頭像',

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

'Areyousureyouwanttodeletethisitem'='確定要刪除?',

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

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

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

'Delete'='刪除',

'Home'='首頁',

'Login'='登錄',

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

'Myusers'='用戶',

'Res

溫馨提示

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

評論

0/150

提交評論