common/config/main.php
'language' => 'zh-CN', //yii2默認使用‘en-US’若要設置中文可用
'components' => [
'i18n' => [
'translations' => [
'app*' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@common/messages',
'sourceLanguage' => 'en-US',
'fileMap' => [
'app' => 'app.php',
'app/error' => 'error.php',
],
],
],
],
]
執(zhí)行命令生成i18n設置文件
php yii message/config @common/config/i18n.php
return [
'color' => null,
'interactive' => true,
'help' => null,
'silentExitOnException' => null,
'sourcePath' => '@rootPath', //設置為項目跟地址徘溢,檢索全項目 bootstrap:(Yii::setAlias('@rootPath', dirname(dirname(__DIR__)));)
'messagePath' => '@common/messages', //config設置的basePath抓歼,若無messages文件夾需要自己創(chuàng)建
'languages' => ['zh-CN'], //設置需要轉換的語言
'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,
];
執(zhí)行命令生成映射文件
php yii message @common/config/i18n.php
文件在common/messages/zh-CN/app.php
使用
Yii::t('app', 'This is a english message!')
動態(tài)更改返回中英文
//BaseController
public function beforeAction($action)
{
if (!Yii::$app->request->isOptions) {
if (Yii::$app->request->headers->get('language')) {
Yii::$app->language = Yii::$app->request->headers->get('language') ?: 'en-US';
}
}
return parent::beforeAction($action);
}