devgroup/yii2-multilingual
最新稳定版本:0.2.1
Composer 安装命令:
composer require devgroup/yii2-multilingual
包简介
Allows building yii2 apps for multiple languages using regional URL's and domains
README 文档
README
Allows building yii2 apps for multiple languages using regional URL's and domains
Quick start:
WARNING: This extension is under active development.
For support - join DotPlant2 gitter channel.
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist devgroup/yii2-multilingual "*"
or add
"devgroup/yii2-multilingual": "*"
to the require section of your composer.json file.
Usage
Configure your application
In your web.php config add the following components:
// URL Manager is needed to build correct URL's 'urlManager' => [ 'class' => \DevGroup\Multilingual\components\UrlManager::className(), 'excludeRoutes' => [ //'newsletter/index', //'newsletter/test', ], 'rules' => [ '' => 'post/index', ], ], // this is the main language and geo detection component 'multilingual' => [ 'class' => \DevGroup\Multilingual\Multilingual::className(), // the list of handlers that will try to detect information(see also sypex-geo-daemon provider) 'handlers' => [ [ 'class' => \DevGroup\Multilingual\DefaultGeoProvider::className(), 'default' => [ 'country' => [ 'name' => 'England', 'iso' => 'en', ], ], ], ], ], // this is simple storage for Languages configuration 'filedb' => [ 'class' => 'yii2tech\filedb\Connection', 'path' => __DIR__ . '/data', ],
Creating translatable ActiveRecord
As our implementation is based on creocoder/yii2-translatable - the use creation of multilingual ActiveRecords is very similar.
The main differences from creocoder2/yii2translatable:
- no need to set
translationAttributes- they automatically detected from translation model - language field is
language_idof integer type
In your ActiveRecord class(for example Post) add trait and behavior:
use DevGroup\Multilingual\behaviors\MultilingualActiveRecord; use DevGroup\Multilingual\traits\MultilingualTrait; /** * Class Post * @property integer $author_id */ class Post extends \yii\db\ActiveRecord { use MultilingualTrait; /** * @inheritdoc */ public function behaviors() { return [ 'multilingual' => [ 'class' => MultilingualActiveRecord::className(), 'translationPublishedAttribute' => 'is_active', ], ]; } public static function tableName() { return '{{%post}}'; } }
HrefLang
Add one line into your HEAD section of layout view:
<?= \DevGroup\Multilingual\widgets\HrefLang::widget() ?>
Tips
- Remember to take care of language_id when caching multilingual or translatable content
- In requests to excluded routes there may be no
language_id, but probably can becookie_language_id - If you want to generate URL's from console application you may need to configure additional params(see https://github.com/DevGroup-ru/yii2-multilingual-demo/blob/master/config/console.php)
- MultilingualTrait adds default conditions to find and is not required for use. But if you don't use it - you must manually configure proper relations.
- Add indexes to your translation tables, especially for
language_idandmodel_idpair.
Credits and inspiration sources
- Michael Härtl - author of codemix/yii2-localeurls
- Company BINOVATOR - authors of SypexGeo database and php class
- Alexander Kochetov (@creocoder) - yii2-translatable package
统计信息
- 总下载量: 2.64k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 15
- 点击次数: 0
- 依赖项目数: 7
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-09-06