xz1mefx/yii2-multilang

多语言工具包

安装: 91

依赖者: 1

建议者: 0

安全性: 0

星标: 4

关注者: 5

分支: 0

开放问题: 0

类型:yii2-extension

v1.2.3 2017-01-13 09:57 UTC

This package is not auto-updated.

Last update: 2024-09-29 01:07:31 UTC


README

Latest Version on Packagist Software License Total Downloads

该扩展是一个工具包,用于在Yii2项目中实现多语言功能

  • 自动将用户重定向到所选(自动或手动)的语言URL,并记住用户选择的语言
  • 自动将所有新的翻译收集到数据库中
  • 有一个小部件可以设置正确的hreflang属性
  • 提供CRUD操作来编辑语言列表和界面翻译
  • 有一个小部件可以创建语言选择器(适用于adminlte主题)
  • 有一个@weblang\别名表示当前语言

安装

  1. 安装此扩展的首选方式是通过composer,运行

    php composer.phar require --prefer-dist xz1mefx/yii2-multilang "~1"
  2. 向通用配置文件添加新的multilangCache组件

    'multilangCache' => [
        'class' => \xz1mefx\multilang\caching\MultilangCache::className(),
    ],
  3. 执行迁移

    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
    {
    }
  4. 在通用配置文件中覆盖组件

    '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(),
    ],
  5. [非必需]如果您使用iiifx-production/yii2-autocomplete-helper,您需要运行

  6. 在控制台配置文件中覆盖一些组件

    'request' => [ // override common config
        'class' => 'yii\console\Request',
    ],
    'urlManager' => [], // override common config
    'i18n' => [], // override common config
  7. 将HrefLangs小部件添加到布局的<head></head>部分

    <?= \xz1mefx\multilang\widgets\HrefLangs::widget() ?>
  8. 添加以下代码的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),视图路径以及索引操作中的控件访问。

    此控制器将控制系统语言。

  9. 添加以下代码的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),视图路径以及索引操作中的控件访问。

    此控制器将控制界面翻译。

  10. [非必需,仅适用于adminlte主题] 将语言选择器小部件添加到header ul.nav

    <?= \xz1mefx\multilang\widgets\adminlte\HeaderDropDownLangSelector::widget() ?>

您可以在xz1mefx/yii2-adminlte中找到AdminLTE主题。