Helpers to work with model translations.

v1.0.1 2023-01-25 12:04 UTC

This package is auto-updated.

Last update: 2023-01-25 12:04:54 UTC


codecov Continous integration Packagist Total Downloads Packagist Monthly Downloads GitHub tag (latest by date) Packagist Version

This extension provides a package that implements some traits and behaviors to work with model attribute translations.

$ composer require jc-it/yii2-i18n-model

or add

"jc-it/yii2-i18n-model": "^<latest version>"

to the require section of your composer.json file.


Active Record model

Add behavior to you AR model and make sure it has an i18n attribute:

public function behaviors(): array
    return [
        \JCIT\i18n\behaviors\I18nBehavior::class => [
            'class' => \JCIT\i18n\behaviors\I18nBehavior::class,
            'attributes' => [

In the rules, just define the rules as you would normally do:

public function rules(): array
    return [
        [['<attribute>'], \yii\validators\RequiredValidator::class],
        [['<attribute>'], \yii\validators\StringValidator::class],

In order to set properties or save it first set the locale and then save:

$model = new ClassWithI18nBehavior();
$model->locale = 'en-US';
$model-><attribute> = 'value en';

$model->locale = 'nl-NL';
$model-><attribute> = 'value nl';

Fetching values is done automatically to the locale set to the model:

$model = ClassWithI18nBehavior::findOne();
$model->locale = 'en-US';
echo $model-><attribute>; // 'value en'

$model->locale = 'nl-NL';
echo $model-><attribute>; // 'value nl'

Form model

Add the trait to the form model:

class FormModel extends \yii\base\Model
    use \JCIT\i18n\traits\models\I18nTrait;

On rendering the form attributes, the attribute name should be like: i18n[<locale>][<attribute>].


  • Fix PHPStan, re-add to captainhook.json
    • {
          "action": "vendor/bin/phpstan",
          "options": [],
          "conditions": []
  • Add tests



The MIT License (MIT). Please see LICENSE for more information.