Yii2語言國際化的配置教程

2022-09-29 04:45:12 字數 4079 閱讀 9850

前言

最近想將部落格做成支援多語言的,還好yii2支援這個功能,於是檢視了下官方的文件,哎,看了半天不知道幹嘛用的,於是各種百度,google的搜尋,最終才明白原來很簡單,只是官方寫的太複雜

下面介紹下具體的使用步驟,具體介紹我就不寫了,官方寫比我清楚,我就寫怎麼使用

第一步 建立i18n配置檔案

./yii message/config @app/config/i18.php // yii 在專案目錄下 yii2建立的時候自動生成的

執行完命令之後會在專案根目錄config下建立乙個i18n.php檔案

為什麼要建立這個檔案,因為我們為了多語言處理,需要生成乙個對應的對映檔案,只要生成就好了,稍後的配置程式會自動呼叫處理

第二步 修改配置規則

開啟config/i18n.php,看下生成的配置檔案的**,如下:

return [

'color' => null,

'interactive' => true,

'help' => null,

'sourcepath' => '@yii',

'messagepath' => '@yii/messages',

'languages' => ,

'translator' => 'yii::t',

'sort' => false,

'overwrite' => true程式設計客棧,

'removeunused' => false,

'markunused' => true,

'except' => [

'.svn',

'.git',

'.gitignore',

'.gitkeep',

'.hgignore',

'.hgkeep',

'/messages',

'/baseyii.php',

], 'only' => [

'*.php',

], 'format' => 'php',

'db' => 'db',

'sourcemessagetable' => '}',

'messagetable' => '}',

'catalog' => 'messages',

'ignorecategories' => ,

'phpfileheader' => '',

'phpdocblock' => null,

];修改後的**,如下:

return [

'color' => null,

'interactive' => true,

'help' => null,

'sourcepath' => '@app',

'messagepath' => '@app/messages',

'languages' => ['zh-cn', 'ru-ru'],

'translator' => 'yii::t',

'sort' => false,

'overwrite' => true,

'removeunused' => false,

'markunused' => true,

'except' => [

'.svn',

'.git',

'.gitignore',

'.gitkeep',

'.hgignore',

'.hgkeep',

'/messages',

'/baseyii.php',

'vendor',

], 'only' => [

'*.php',

], 'format' => 'php',

'db' => 'db',

'sourcemessagetable' => '}',

'messagetable' => '}',

'catalog' => 'messages',

'ignorecategories' => ,

'phpfileheader' => '',

'phpdocblock' => null,

];我這裡只改了兩個地方

'sourcepath' => '@app', // 將@yii改為@app 只處理我們自己應用中的**

'messagepath' => '@app/messages', // 將@yii/messages改為@app/messages 將需要翻譯的字段提取出來要放的目錄

'languages' => ['zh-cn', 'ru-ru'], // 要翻譯成目標的語言,我這裡定義了乙個"中文"和"俄語"

和'except' => [

'.svn',

'.git',

'.gitignore',

'.gitkeep',

'.hgignore',

'.hgkeep',

'/messages',

'/baseyii.php',

'vendor', // 將vendor目錄下的過濾掉,不然可能太多了

],第三步 生成翻譯配置檔案

執行下面的命令

./yii message/extract @app/config/i18n.php

執行完之後會在messages目錄下(如果沒有messages目錄的話需要手動建立下)得到如下的目錄結構

├── ru-ru

│   └── app.php

└── zh-cn

└── app.php

提示下再做這個操作之前,需要在自己的專案中有類似yii:t()的呼叫,比如我這裡在components/headerwidget.php這個檔案中

yii::t('app', 'home')

這裡的app的作用是用來進行檔案分類的,我這裡暫時沒有計畫生成的時候會將所有需要翻譯的字段放在app開頭命名的php檔案app.php檔案中

如果像下面這樣呼叫的話

yii::t('appp', 'home')

會生成乙個appp.php的檔案

第四步 翻譯配置檔案

看下中文的翻譯檔案messages/zh-cn/app.php,我的是下面這個

return [

'archive' => '',

'autokid' www.cppcns.com=> '',

'blog' => '',

'ctime' => '',

'ip位址' => '',

'useragent' => '',

'主題' => '',

'內容' => '',

'姓名' => '',

'日期' => '',

'郵箱位址' => '',

'頁面路徑' => '',

'home' => '首頁', // 右邊的鍵值對應 yii::t('app', 'home')中的home,只需要在value中寫入程式設計客棧需要的漢字就可以了。

];第五步 修改目標國際化語言

修改配置檔案

'language' => 'zh-cn', // 指定為要翻譯的語言

再開啟網頁,就可以看到已經翻譯成了對應需要的語言,當然這樣的配置很不靈活,如果是部署多型機器並通過網域名稱或者其他方式來實現的話,也是可以的,這裡的話我建議如下方式

建立自己的controller,然後將語言配置放在session中,通過獲取session中的語言來更換全站的語言。具體見後面分享

提示,**很多地方提到要加個配置,官方也是

'i18n' => [

'translations' => [

'app*' => [

'class' => 'yii\i18n\phpmessagesource',

'basepath' => '@app/messages',

'sourcelanguage' => 'en-us',

'filemap' => [

'app' => 'app.php',

],],

],],

我這邊在配置的時候沒有加,執行也都是正常的,如有遇到問題,可以一起溝通交流下。

總結本文標題: yii2語言國際化的配置教程

本文位址: /wangluo/php/237751.html

Yii2 使用十七 國際化

config id basic language en us 加這一句預設語言 basepath dirname dir components i18n translations class yii i18n phpmessagesource 使用php檔案儲存資訊 hello 你好 變更當前語言 ...

Yii 國際化的實現

全域性配置 第一在 main.php 配置檔案裡加上 language zh cn 或 sourcelanguage zh cn 告訴程式這是中文的,你去找中文包去 zh cn 第二在你對應的 model 裡面加上以下 例如 post model,public function rules publ...

yii2框架 yii2的主題化設計 十九

最近發現漏了很重要的一章章節知識點 關於yii2的主題化設計。所謂的主題話設計簡單點說就是通過設定不同的模板主題,可以快速切換,無需更改檢視渲染 的方法。在yii2中使用主題,首先要配置主題,在components中 view theme baseurl web themes blue pathma...