xz1mefx / yii2-multilang
多语言工具包
v1.2.3
2017-01-13 09:57 UTC
Requires
README
该扩展是一个工具包,用于在Yii2项目中实现多语言功能
- 自动将用户重定向到所选(自动或手动)的语言URL,并记住用户选择的语言
- 自动将所有新的翻译收集到数据库中
- 有一个小部件可以设置正确的hreflang属性
- 提供CRUD操作来编辑语言列表和界面翻译
- 有一个小部件可以创建语言选择器(适用于adminlte主题)
- 有一个
@weblang\
别名表示当前语言
安装
-
安装此扩展的首选方式是通过composer,运行
php composer.phar require --prefer-dist xz1mefx/yii2-multilang "~1"
-
向通用配置文件添加新的multilangCache组件
'multilangCache' => [ 'class' => \xz1mefx\multilang\caching\MultilangCache::className(), ],
-
执行迁移
php yii migrate --migrationPath=@vendor/xz1mefx/yii2-multilang/migrations --interactive=0
或者您也可以创建新的迁移并扩展它,例如
require(Yii::getAlias('@vendor/xz1mefx/yii2-multilang/migrations/m161210_131014_multilang_init.php')); /** * Class m161221_135351_multilang_init */ class m161221_135351_multilang_init extends m161210_131014_multilang_init { }
-
在通用配置文件中覆盖组件
'urlManager' => [ 'class' => \xz1mefx\multilang\web\UrlManager::className(), ], 'request' => [ 'class' => \xz1mefx\multilang\web\Request::className(), ], 'i18n' => [ 'class' => \xz1mefx\multilang\i18n\I18N::className(), ], 'lang' => [ 'class' => \xz1mefx\multilang\components\Lang::className(), ],
-
[非必需]如果您使用
iiifx-production/yii2-autocomplete-helper
,您需要运行 -
在控制台配置文件中覆盖一些组件
'request' => [ // override common config 'class' => 'yii\console\Request', ], 'urlManager' => [], // override common config 'i18n' => [], // override common config
-
将HrefLangs小部件添加到布局的
<head></head>
部分<?= \xz1mefx\multilang\widgets\HrefLangs::widget() ?>
-
添加以下代码的LanguageController(或另一个)
use xz1mefx\multilang\actions\language\IndexAction; use xz1mefx\multilang\actions\language\CreateAction; use xz1mefx\multilang\actions\language\UpdateAction; use xz1mefx\multilang\actions\language\DeleteAction; ... /** * @inheritdoc */ public function actions() { return [ 'index' => [ 'class' => IndexAction::className(), // 'theme' => IndexAction::THEME_ADMINLTE, // 'canAdd' => false, // 'canUpdate' => false, // 'canDelete' => false, ], 'create' => [ 'class' => CreateAction::className(), // 'theme' => CreateAction::THEME_ADMINLTE, ], 'update' => [ 'class' => UpdateAction::className(), // 'theme' => UpdateAction::THEME_ADMINLTE, ], 'delete' => [ 'class' => DeleteAction::className(), // 'theme' => DeleteAction::THEME_ADMINLTE, ], ]; }
,其中您可以更改action主题(
THEME_BOOTSTRAP
- 默认或THEME_ADMINLTE
),视图路径以及索引操作中的控件访问。此控制器将控制系统语言。
-
添加以下代码的TranslationController(或另一个)
use xz1mefx\multilang\actions\translation\IndexAction; use xz1mefx\multilang\actions\translation\UpdateAction; ... /** * @inheritdoc */ public function actions() { return [ 'index' => [ 'class' => IndexAction::className(), // 'theme' => IndexAction::THEME_ADMINLTE, // 'canUpdate' => false, ], 'update' => [ 'class' => UpdateAction::className(), // 'theme' => UpdateAction::THEME_ADMINLTE, ], ]; }
,其中您可以更改action主题(
THEME_BOOTSTRAP
- 默认或THEME_ADMINLTE
),视图路径以及索引操作中的控件访问。此控制器将控制界面翻译。
-
[非必需,仅适用于adminlte主题] 将语言选择器小部件添加到
header ul.nav
<?= \xz1mefx\multilang\widgets\adminlte\HeaderDropDownLangSelector::widget() ?>
您可以在xz1mefx/yii2-adminlte
包中找到AdminLTE主题。