abcms/yii2-multilanguage
Composer 安装命令:
composer require abcms/yii2-multilanguage
包简介
README 文档
README
Features:
- Add a language bar widget to your website
- Translate models
- Manage languages from database or configuration
- Message translation CRUD
Install:
composer require abcms/yii2-library:dev-master composer require abcms/yii2-multilanguage:dev-master
Enable multi-language support in your website:
1. Add language and sourceLanguage attributes to your config array.
$config = [ ...... 'language' => 'en', 'sourceLanguage' => 'en', ...... ];
2. Add multilanguage component
[
'components' => [
......
'multilanguage' => [
'class' => 'abcms\multilanguage\Multilanguage',
'languages' => [
'en' => 'English',
'ar' => 'Arabic',
'fr' => 'French',
],
],
],
]
Add the component to the bootstrap array to allow it to read and set the language from cookies and URL:
'bootstrap' => ['log', 'multilanguage'],
3. Add custom URL manager:
This URL manager class will automatically add the language to each URL.
'urlManager' => [ 'class' => abcms\multilanguage\UrlManager::className(), 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '<lang:([a-z]{2,3}(-[A-Z]{2})?)>/<controller>/<action>/' => '<controller>/<action>', ], ],
4. Add a language switcher to the layout.
Using the language bar widget:
<?= abcms\multilanguage\widgets\LanguageBar::widget() ?>
or manually:
<a class="<?= (Yii::$app->language == 'en') ? 'active' : ''; ?>" href="<?= Url::current(['lang' => 'en']) ?>">En</a>
Enable translation for your models and CRUDs:
1. Migration:
1- Add the migration namespaces in the console.php configuration:
'controllerMap' => [ 'migrate' => [ 'class' => 'yii\console\controllers\MigrateController', 'migrationNamespaces' => [ 'abcms\library\migrations', 'abcms\multilanguage\migrations', ], ], ],
2- Run ./yii migrate
You can use abcms/yii2-generators to generate a custom model and CRUD or continue with the manual steps below.
2. Add model behavior:
Add the multi-language behavior and specify which attributes can be translated and the type for each field. If the field type is not specified, text input will be used by default.
[
'class' => \abcms\multilanguage\behaviors\ModelBehavior::className(),
'attributes' => [
'title',
'description:text-area',
],
],
3. Add translation form in the admin panel:
Add in _form.php:
<?= \abcms\multilanguage\widgets\TranslationForm::widget(['model' => $model, 'form' => $form]) ?>
4. Add translation detail view in the admin panel:
Add in view.php:
<?= \abcms\multilanguage\widgets\TranslationView::widget([ 'model' => $model, ]) ?>
5. Enable automatic translation saving in the controller
Add in Controller create and update actions:
$model->automaticTranslationSaving = true;
How to get translated content?
Get a single model translation for the current language:
$translatedModel = $model->translate();
Get multiple models translation for the current language:
$translatedModels = Yii::$app->multilanguage->translateMultiple($models);
abcms/yii2-multilanguage 适用场景与选型建议
abcms/yii2-multilanguage 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 813 次下载、GitHub Stars 达 4, 最近一次更新时间为 2016 年 10 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 abcms/yii2-multilanguage 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 abcms/yii2-multilanguage 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 813
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 3
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: Unknown
- 更新时间: 2016-10-04