jc-it / yii2-i18n-model
Helpers to work with model translations.
Requires
- php: >=8.1
- yiisoft/yii2: ~2.0.47
Requires (Dev)
- captainhook/plugin-composer: ^5.3
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.2
- phpstan/phpstan-phpunit: ^1.0
- phpstan/phpstan-strict-rules: ^1.1
- ramsey/conventional-commits: ^1.3
- symfony/console: ^5.4.2
- symplify/easy-coding-standard: ^10.0
This package is auto-updated.
Last update: 2024-11-07 15:36:15 UTC
README
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.