定制 umbalaconmeogia/yii2-i18nui 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

umbalaconmeogia/yii2-i18nui

Composer 安装命令:

composer require umbalaconmeogia/yii2-i18nui

包简介

GUI for editing i18n translation in database

README 文档

README

For more about internationalization in yii2, see the guide.

This is inspired by wokster/yii2-translation-manage.

Edit composer.json

Run

composer require umbalaconmeogia/yii2-i18nui

or add "umbalaconmeogia/yii2-i18nui": "*" to composer.json then run composer update

Edit config

Add to modules in config

'modules' => [
    'i18nui' => [
        'class' => 'umbalaconmeogia\i18nui\Module',
        'languages' => ['en', 'ja', 'vi'], // Any languages that you want to use
    ],
    // Other stuffs
],

Config i18n like:

'components' => [
    'i18n' => [
        'translations' => [
            'yii*' => [
                'class' => 'yii\i18n\PhpMessageSource',
                'basePath' => '@vendor/yiisoft/yii2/messages',
                'sourceLanguage' => 'en'
            ],
            'app' => [
                'class' => 'yii\i18n\DbMessageSource',
                'forceTranslation' => true,
                //'enableCaching' => false,
                //'cachingDuration' => 3600,
            ],
        ],
    ],
    // Other stuffs
],

Run yii2 migration

To add database tables to store i18n data, run migration

php yii migrate --migrationPath=@yii/i18n/migrations/

Access to translation manager

https://<your domain>/?r=i18nui

Select language

This module contains some function to set language for your yii2 application.

  1. To change language, add the config below into your web config (config/web.php or frontend/config/main.php)
  return [
      'bootstrap' => [
          [
              'class' => 'umbalaconmeogia\i18nui\components\LanguageSelector',
              'supportedLanguages' => ['vi', 'ja'],
          ],
          // Other stuffs.
      ],
  ],
  1. To add link to change config, use /i18nui/default/set-language. For example, add to menu
  $languages = [
      'vi' => 'Tiếng Việt',
      'ja' => '日本語',
  ];
  $callbackUrl = Yii::$app->request->getAbsoluteUrl();

  foreach ($languages as $langCode => $langName) {
      $menuItems[] = [
          'label' => $langName,
          'url' => Url::to(['/i18nui/default/set-language',
          'language' => $langCode, 'callbackUrl' => $callbackUrl]),
      ];
  }

Import message data from CSV

To import i18n data from CSV, run command

php yii i18nui/import/csv i18n.csv

while i18n.csv is created as bellow (the first row is the header, with the first key is category, the second key is message, follow by language codes)

category message ja vi
app house nhà
app home 家庭 gia đình

Add language related menu items

Add menu items as sub-menu

Add language related menu as sub menu items on menu bar.

language sub menu

    $languageMenuItems = [];
    $languageMenuItems[] = ['label' => Yii::t('app', 'Translation manager'), 'url' => ['/i18nui']];

    $languages = [
        'vi' => 'Tiếng Việt',
        'ja' => '日本語',
    ];
    $callbackUrl = Yii::$app->request->getAbsoluteUrl();

    foreach ($languages as $langCode => $langName) {
        $languageMenuItems[] = ['label' => $langName, 'url' => Url::to(['/i18nui/default/set-language', 'language' => $langCode, 'callbackUrl' => $callbackUrl])];
    }

    $menuItems[] = [
        'label' => Yii::t('app', 'Language'),
        'items' => $languageMenuItems,
    ];

Add menu items as sub-sub-menu

Add language related menu as an item of sub menu on menu bar.

Use kartik-v/yii2-nav-x to display sub-sub-menu easily.

language sub sub menu

    $languageMenuItems = [];
    $languageMenuItems[] = ['label' => Yii::t('app', 'Translation manager'), 'url' => ['/i18nui']];

    $languages = [
        'vi' => 'Tiếng Việt',
        'ja' => '日本語',
    ];
    $callbackUrl = Yii::$app->request->getAbsoluteUrl();

    foreach ($languages as $langCode => $langName) {
        $languageMenuItems[] = ['label' => $langName, 'url' => Url::to(['/i18nui/default/set-language', 'language' => $langCode, 'callbackUrl' => $callbackUrl])];
    }
    $adminMenuItems[] = [
        'label' => Yii::t('app', 'Language'),
        'items' => $languageMenuItems,
    ];

    $menuItems[] = [
        'label' => Yii::t('app', 'Admin'),
        'items' => $adminMenuItems,
    ];
    // Other stuffs

    echo NavX::widget([
        // 'options' => ['class' => 'ml-3 navbar-nav navbar-left'],
        'options' => ['class' => 'navbar-nav navbar-right'],
        'encodeLabels' => FALSE,
        'items' => $menuItems,
    ]);

Use another Message, SourceMessage classes

If you want to use your own Message, SourceMessage classes, define them and declared in configuration of i18nui.

For example.

Config

    'modules' => [
        'i18nui' => [
            'class' => 'umbalaconmeogia\i18nui\Module',
            'languages' => ['ja', 'vi'], // Any languages that you want to use
            'modelMessageClass' => 'frontend\models\NewMessage',
        ],
    ],

Class frontent\models\NewMessage

namespace frontend\models;
class NewMessage extends \umbalaconmeogia\i18nui\models\Message
{
    public function afterSave($insert, $changedAttributes)
    {
        parent::afterSave($insert, $changedAttributes);

        \Yii::trace('New afterSave', __METHOD__);
    }
}

统计信息

  • 总下载量: 171
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-10-29

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固