jc-it/yii2-i18n-model

Helpers to work with model translations.

v1.0.2 2023-03-07 12:20 UTC

This package is auto-updated.

Last update: 2024-04-07 14:30:24 UTC


README

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.

Configuration

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' => [
                '<attribute>',
            ],       
        ]       
    ]; 
}

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->save();

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

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

TODO

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

Credits

License

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