zerobug / yii2-multilingual
允许使用区域URL和域名构建支持多语言使用的yii2应用
dev-main
2021-12-16 16:03 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 not auto-updated.
Last update: 2024-09-21 03:03:45 UTC
README
允许使用区域URL和域名构建支持多语言使用的yii2应用
快速开始
警告:本扩展处于积极开发中。
如需支持,请加入 DotPlant2 gitter频道。
安装
安装此扩展的最佳方式是通过 composer。
运行以下命令之一:
php composer.phar require --prefer-dist xerobug/yii2-multilingual "dev-main"
或
"xerobug/yii2-multilingual": "dev-main"
将以下内容添加到您的 composer.json 文件的 require 部分。
用法
配置您的应用
在您的 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(), 'default_language_id' => 1, // 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() ?>
提示
- 请记住在缓存多语言或可翻译内容时注意语言_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 包