devgroup / yii2-multilingual
允许使用区域URL和域名构建支持多语言的yii2应用程序
0.2.1
2016-10-24 13:21 UTC
Requires
- devgroup/yii2-tag-dependency-helper: ~1.4.0
- kartik-v/yii2-icons: ~1.4.0
- yii2tech/filedb: ^1.0@dev
- yiisoft/yii2: ^2.0.6
Requires (Dev)
- devgroup/dotplant-dev: ~1.0.0
This package is auto-updated.
Last update: 2024-09-11 14:26:53 UTC
README
允许使用区域URL和域名构建支持多语言的yii2应用程序
快速开始
警告: 此扩展正在积极开发中。
如需支持 - 加入 DotPlant2 gitter频道。
安装
安装此扩展的首选方法是使用 composer。
运行以下命令之一:
php composer.phar require --prefer-dist devgroup/yii2-multilingual "*"
或者将以下内容添加到你的 composer.json
文件的require部分:
"devgroup/yii2-multilingual": "*"
使用
使用方法
配置你的应用程序
在你的 web.php
配置中添加以下组件
// 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', ],
创建可翻译的ActiveRecord
由于我们的实现基于 creocoder/yii2-translatable
- 创建多语言ActiveRecord的使用方法非常相似。
与 creocoder2/yii2translatable
的主要区别
- 不需要设置
translationAttributes
- 它们会自动从翻译模型中检测 - 语言字段是整数类型的
language_id
在你的ActiveRecord类(例如 Post
)中添加特性和行为
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
在你的布局视图的HEAD部分添加一行
<?= \DevGroup\Multilingual\widgets\HrefLang::widget() ?>
提示
- 记住在缓存多语言或可翻译内容时要留意
language_id
- 在请求排除的路由中可能没有
language_id
,但可能有cookie_language_id
- 如果你要从控制台应用程序生成URL,可能需要配置额外的参数(参见 https://github.com/DevGroup-ru/yii2-multilingual-demo/blob/master/config/console.php)
- MultilingualTrait 添加了默认的查找条件,不是必需的。但如果你不使用它 - 你必须手动配置适当的关联。
- 为你的翻译表添加索引,特别是对于
language_id
和model_id
对。
致谢和灵感来源
- Michael Härtl - codemix/yii2-localeurls 的作者
- 公司 BINOVATOR - SypexGeo 数据库和 php 类的作者
- Alexander Kochetov (@creocoder) - yii2-translatable 包