yiimaker / yii2-translatable
Translatable behavior aggregates logic of linking translations to the primary model
Installs: 25 779
Dependents: 1
Suggesters: 0
Security: 0
Stars: 15
Watchers: 4
Forks: 1
Type:yii2-extension
Requires
- yiisoft/yii2: ^2.0.0
Requires (Dev)
- codeception/codeception: ~3.0
This package is auto-updated.
Last update: 2024-10-29 04:47:31 UTC
README
Translatable behavior
Translatable behavior aggregates logic of linking translations to the primary model.
Installation
The preferred way to install this extension is through composer.
Either run
$ composer require yiimaker/yii2-translatable
or add
"yiimaker/yii2-translatable": "~1.0"
to the require
section of your composer.json
.
Usage
- Add behavior to the your primary model
public function behaviors() { return [ // ... 'translatable' => [ 'class' => TranslatableBehavior::className(), // 'translationRelationName' => 'translations', // 'translationLanguageAttrName' => 'language', // 'attributeNamePattern' => '%name% [%language%]', 'translationAttributeList' => [ 'title', 'description', ], ], ]; }
- And use
getTranslation()
ortranslateTo()
methods
// product is an active record model with translatable behavior $product = new Product(); // sets translation for default application language $product->title = 'PhpStrom 2018.1'; $product->description = 'Лицензия PhpStrom IDE версия 2018.1'; // gets translation for English language $translation = $product->getTranslation('en'); $translation->title = 'PhpStrom 2018.1'; $translation->description = 'License of the PhpStrom IDE version 2018.1'; // sets description for French language $product->translateTo('fr')->description = 'La licence de PhpStorm IDE la version 2018.1'; $product->insert();
translateTo()
it's just an alias for getTranslation()
method.
After saving the model you can fetch this model from the database and translatable behavior will fetch all translations automatically.
$product = Product::find() ->where(['id' => 1]) ->with('translations') ->one() ; // gets translation for English language $product->translateTo('en')->description; // License of the PhpStrom IDE version 2018.1 // gets translation for French language $product->translateTo('fr')->description; // La licence de PhpStorm IDE la version 2018.1 // check whether Ukrainian translation not exists if (!$product->hasTranslation('uk')) { $product->translateTo('uk')->description = 'Ліцензія PhpStrom IDE версія 2018.1'; } // update Enlish translation $product->translateTo('en')->title = 'PhpStorm IDE'; $product->update();
Tests
You can run tests with composer command
$ composer test
or using following command
$ codecept build && codecept run
Contributing
For information about contributing please read CONTRIBUTING.md.
Sponsoring
License
This project is released under the terms of the BSD-3-Clause license.
Copyright (c) 2017-2022, Yii Maker