PHPackages                             sichkarev/yii2-translatable-attributes - 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. sichkarev/yii2-translatable-attributes

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

sichkarev/yii2-translatable-attributes
======================================

Component add support translatable properties to ActiveRecord models

1.1(5y ago)03.7kMITPHPPHP &gt;=5.6

Since Feb 16Pushed 5y ago1 watchersCompare

[ Source](https://github.com/sichkarev/yii2-translatable-attributes)[ Packagist](https://packagist.org/packages/sichkarev/yii2-translatable-attributes)[ RSS](/packages/sichkarev-yii2-translatable-attributes/feed)WikiDiscussions master Synced today

READMEChangelog (2)Dependencies (5)Versions (3)Used By (0)

Описание
========

[](#описание)

Компонент пригодится вам, если у модели ActiveRecord необходимо переводить какие-либо свойства на разные языки.

**Требования:**

- Yii2
- PHP 5.6 и выше

Установка
=========

[](#установка)

Установка через composer

```
composer require sichkarev/yii2-translatable-attributes "dev-master"

```

Подключение
===========

[](#подключение)

1. Создайте поле для хранения переводов с типом json (лучше всего), text или varchar

```
$this->addColumn('table','translations', $this->json()->comment('Переводы'));

```

2. Подключите компонент TranslatableComponent в секции **components** конфигурационного файла Yii2 и укажите список используемых языков:

```
    'components' => [
        /* другие компоненты */
        'translate' => [
            'class' => TranslatableComponent::class,
            'languages' => [
                Russian::class,
                Ukrainian::class,
                English::class,
            ],
            'defaultLanguage' => Russian::class
        ]
    ]

```

Для добавления нового языка реализуйте LanguageInterface у класса, заполните нужные данные и добавьте в свойство **languages**

3. Подключите TranslateActiveRecordTrait к классу модели, в которой необходимо переводить свойства

```
use TranslateActiveRecordTrait;

```

4. Подключите TranslatableBehavior, например используя **addTranslatableBehavior** (реализован в TranslateActiveRecordTrait)
5. Реализуйте у класса интерфейс TranslatableInterface и создайте метод attributeNameForTranslate(). Этот метод должен вернуть название существующего поля, созданного в п.1.

```
class TestTranslatableModel extends ActiveRecord implements TranslatableInterface
{
    public function behaviors()
    {
        return ArrayHelper::merge (
            parent::behaviors(),
            self::addTranslatableBehavior()
        );
    }

    public function attributeNameForTranslate()
    {
        return 'translations';
    }
}

```

6. В комментариях к классу укажите поля, которые имеют собственные значения для каждого языка добавив слово **@translate**. Свойства с переводами нужно описать для удобства работы с ними, но их можно физически не создавать (они будут созданы динамически). Эти свойства являются частью модели и могут участвовать в валидации и прочих прикладных задачах (например в CRUD). Если требуются произвольные подписи, то вы можете добавить названия полей в метод **attributeLabels()**.

```
/**
 * This is comment of class TestTranslatableModel
 * @property string  name        @translate
 * @property string  description @translate
 *
 * Translatable properties:
 * @property string nameEn
 * @property string nameUa
 * @property string descriptionEn
 * @property string descriptionUa
*/

```

7. Добавьте возможность редактирования поля на форме CRUD:

```

```

свойство **className** указывает имя CSS-класса, которое будет применено для блоков

Функции:
========

[](#функции)

- setContextLanguage(LanguageInterface $lang) - устанавливает языковой контекст
- clearLangContext() - очищает языковой контекст
- andFilterWhereTranslate - добавляет фильтрацию по полю

```
$query->andFilterWhereTranslate(['like', 'nameEn', '%' . $this->nameEn . '%'])

```

Например:

```
if ($promocodeType = PromocodeType::findOne(1)) {
    $promocodeType->name = 'Русский';
    $promocodeType->nameUa = 'Украинский';
    $promocodeType->setLangContext(new Ukrainian());
    echo $promocodeType->name; //Украинский
}

```

Полный пример различных возможностей представлен в атотесте **src/Tests/TranslateActiveRecordTest.php**

Тестовый CRUD
=============

[](#тестовый-crud)

Для понимания того как все работает в проекте есть тестовый CRUD. Для запуска тестового CRUD сделайте следующее:

1. Подключите модуль в один из ваших каталогов (backend, frontend)

```
'modules' => [

    /* другие модули */

    'translate' => [
        'class' => TranslatableCrudModule::class
    ],
]

```

2. Запустите миграцию для создания тестовой таблицы

```
php yii migrate --migrationPath=@vendor/sichkarev/yii2-translatable-attributes/src/Migrations --interactive=0

```

3. Откройте CRUD по адресу /translate/ вашего каталога

Вроде на этом всё, если что пишите комментарии, правьте код и отправляйте реквесты.

###  Health Score

27

—

LowBetter than 47% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 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 ~279 days

Total

2

Last Release

2049d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/16035271?v=4)[Vadim Sichkarev](/maintainers/sichkarev)[@sichkarev](https://github.com/sichkarev)

---

Top Contributors

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

###  Code Quality

TestsCodeception

### Embed Badge

![Health badge](/badges/sichkarev-yii2-translatable-attributes/health.svg)

```
[![Health](https://phpackages.com/badges/sichkarev-yii2-translatable-attributes/health.svg)](https://phpackages.com/packages/sichkarev-yii2-translatable-attributes)
```

###  Alternatives

[craftcms/cms

Craft CMS

3.6k3.6M3.0k](/packages/craftcms-cms)[tigrov/yii2-country

Country data for Yii2 using Intl extension and more.

151.1k](/packages/tigrov-yii2-country)

PHPackages © 2026

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