PHPackages                             umbalaconmeogia/yii2-i18nui - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Localization &amp; i18n](/categories/localization)
4. /
5. umbalaconmeogia/yii2-i18nui

ActiveYii2-extension[Localization &amp; i18n](/categories/localization)

umbalaconmeogia/yii2-i18nui
===========================

GUI for editing i18n translation in database

v1.2.6(1y ago)1171MITPHP

Since Oct 29Pushed 1y ago1 watchersCompare

[ Source](https://github.com/umbalaconmeogia/yii2-i18nui)[ Packagist](https://packagist.org/packages/umbalaconmeogia/yii2-i18nui)[ RSS](/packages/umbalaconmeogia-yii2-i18nui/feed)WikiDiscussions main Synced yesterday

READMEChangelogDependencies (2)Versions (13)Used By (0)

GUI for editing i18n translation in database.
=============================================

[](#gui-for-editing-i18n-translation-in-database)

For more about internationalization in yii2, see [the guide](https://www.yiiframework.com/doc/guide/2.0/en/tutorial-i18n).

This is inspired by [wokster/yii2-translation-manage](https://github.com/wokster/yii2-translation-manager).

Edit composer.json
------------------

[](#edit-composerjson)

Run

```
composer require umbalaconmeogia/yii2-i18nui
```

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

Edit config
-----------

[](#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
------------------

[](#run-yii2-migration)

To add database tables to store i18n data, run migration

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

Access to translation manager
-----------------------------

[](#access-to-translation-manager)

```
https:///?r=i18nui

```

Select language
---------------

[](#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.
      ],
  ],
```

2. 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
----------------------------

[](#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)

categorymessagejaviapphouse家nhàapphome家庭gia đìnhAdd language related menu items
-------------------------------

[](#add-language-related-menu-items)

### Add menu items as sub-menu

[](#add-menu-items-as-sub-menu)

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

[![language sub menu](docs/material/languageSubMenu.png)](docs/material/languageSubMenu.png)

```
    $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-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](https://demos.krajee.com/nav-x) to display sub-sub-menu easily.

[![language sub sub menu](docs/material/languageSubSubMenu.png)](docs/material/languageSubSubMenu.png)

```
    $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
------------------------------------------

[](#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__);
    }
}
```

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance32

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~121 days

Recently: every ~325 days

Total

12

Last Release

686d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e73262b0c606572246aae623de6388d6f0e2abc6338108f0c96a77b3573983f9?d=identicon)[umbalaconmeogia](/maintainers/umbalaconmeogia)

---

Top Contributors

[![umbalaconmeogia](https://avatars.githubusercontent.com/u/179130?v=4)](https://github.com/umbalaconmeogia "umbalaconmeogia (4 commits)")

---

Tags

i18ntranslationmanagerdbyii2extension

### Embed Badge

![Health badge](/badges/umbalaconmeogia-yii2-i18nui/health.svg)

```
[![Health](https://phpackages.com/badges/umbalaconmeogia-yii2-i18nui/health.svg)](https://phpackages.com/packages/umbalaconmeogia-yii2-i18nui)
```

###  Alternatives

[geertw/yii2-translatable-url-rule

A custom URL rule class for Yii 2 which allows to create translated URL rules

1420.3k](/packages/geertw-yii2-translatable-url-rule)[uran1980/yii2-translate-panel

Yii2 Translate Panel makes the translation of your application awesome!

2518.3k1](/packages/uran1980-yii2-translate-panel)[yeesoft/yii2-multilingual

Yii2 Multilingual Module

177.4k1](/packages/yeesoft-yii2-multilingual)[devgroup/yii2-multilingual

Allows building yii2 apps for multiple languages using regional URL's and domains

152.6k2](/packages/devgroup-yii2-multilingual)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
