溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Yii2語言中配置國際化

發(fā)布時間:2021-05-23 11:31:08 來源:億速云 閱讀:140 作者:Leah 欄目:開發(fā)技術

這篇文章將為大家詳細講解有關怎么在Yii2語言中配置國際化,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

第一步 創(chuàng)建i18n配置文件

./yii message/config @app/config/i18.php // yii 在項目目錄下 Yii2創(chuàng)建的時候自動生成的

執(zhí)行完命令之后會在項目根目錄config下創(chuàng)建一個i18n.php文件

為什么要創(chuàng)建這個文件,因為我們?yōu)榱硕嗾Z言處理,需要生成一個對應的映射文件,只要生成就好了,稍后的配置程序會自動調(diào)用處理

第二步 修改配置規(guī)則

打開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' => '{{%source_message}}',
 'messageTable' => '{{%message}}',
 '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' => '{{%source_message}}',
 'messageTable' => '{{%message}}',
 '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目錄下的過濾掉,不然可能太多了
],

第三步 生成翻譯配置文件

執(zhí)行下面的命令

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

執(zhí)行完之后會在messages目錄下(如果沒有messages目錄的話需要手動創(chuàng)建下)得到如下的目錄結構

├── ru-RU
│   └── app.php
└── zh-CN
    └── app.php

提示下再做這個操作之前,需要在自己的項目中有類似Yii:t()的調(diào)用,比如我這里在components/HeaderWidget.php這個文件中

Yii::t('app', 'Home')

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

如果像下面這樣調(diào)用的話

Yii::t('appp', 'Home')

會生成一個appp.php的文件

第四步 翻譯配置文件

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

return [
 'Archive' => '',
 'Autokid' => '',
 'Blog' => '',
 'Ctime' => '',
 'IP地址' => '',
 'UserAgent' => '',
 '主題' => '',
 '內(nèi)容' => '',
 '姓名' => '',
 '日期' => '',
 '郵箱地址' => '',
 '頁面路徑' => '',
 'Home' => '首頁', // 右邊的鍵值對應 Yii::t('app', 'Home')中的Home,只需要在value中寫入需要的漢字就可以了。
];

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

修改配置文件

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

再打開網(wǎng)頁,就可以看到已經(jīng)翻譯成了對應需要的語言,當然這樣的配置很不靈活,如果是部署多態(tài)機器并通過域名或者其他方式來實現(xiàn)的話,也是可以的,這里的話我建議如下方式

創(chuàng)建自己的Controller,然后將語言配置放在Session中,通過獲取Session中的語言來更換全站的語言。具體見后面分享

提示,網(wǎng)站很多地方提到要加個配置,官方也是

'i18n' => [
 'translations' => [
  'app*' => [
   'class' => 'yii\i18n\PhpMessageSource',
   'basePath' => '@app/messages',
   'sourceLanguage' => 'en-US',
   'fileMap' => [
    'app' => 'app.php',
   ],
  ],
 ],
],

關于怎么在Yii2語言中配置國際化就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI