PHPackages                             e282486518/dcat-admin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. e282486518/dcat-admin

ActiveLibrary[Admin Panels](/categories/admin)

e282486518/dcat-admin
=====================

dcat admin

1.7.9(5y ago)08MITPHPPHP &gt;=7.1.0

Since Mar 4Pushed 10mo agoCompare

[ Source](https://github.com/e282486518/dcat-admin)[ Packagist](https://packagist.org/packages/e282486518/dcat-admin)[ Docs](https://github.com/jqhph/dcat-admin)[ RSS](/packages/e282486518-dcat-admin/feed)WikiDiscussions 2.0 Synced 1mo ago

READMEChangelogDependencies (9)Versions (79)Used By (0)

这是一个`Dcat-Admin(2.2.3-bate)`的多语言方案, 在不改变`dcat-admin`原使用习惯的前提下, 兼容数据库多语言方案. 由于 `Dcat-Admin` 的 `Grid/Form/Show/Field` 等组件耦合度较高, 之前做了一个扩展 `e282486518/laravel-translatable` 发现各种继承链出问题(还会影响第三方的form扩展), 于是就直接fork过来重新修改了.

特别说明: 目前只测试了 `PHP8.1`, `MySQL5.7`, `Laravel9`

安装
--

[](#安装)

先根据 `Dcat-Admin` 文档安装, 成功后替换 `composer.json` 中的内容, 并执行 `composer update` 将 `dcat/laravel-admin` 替换成 `e282486518/dcat-admin`

```
    "require": {
        ...
        "e282486518/dcat-admin": "^2.0",
        ...
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/e282486518/dcat-admin.git"
        }
    ],
```

使用
--

[](#使用)

**第一步: 修改数据库**

将数据库的多语言字段, 设置成 `JSON` 类型, 当然 `text/varchar`类型也没问题注意长度即可, 最好 `MySQL5.7` 以上使用`json`可以索引和查询.

**第二步: 模型修改**

```
use Illuminate\Database\Eloquent\Model;
use Dcat\Admin\Traits\HasTranslations;

class Test extends Model
{
    // 多语言trait
    use HasTranslations;

    // 需要多语言支持的字段
    public array $translatable = ['title', 'desc'];

    // ...
}

```

**第三步: 配置文件, 语言文件修改**

配置文件, 将 `translatable.php` 复制到 `/config/` 目录中. 并配置.

```
// 设置后台form展示方式, 一种是 tab 模式, 一种是line模式
'locale_form' => 'line', // tab/line

// 设置当前支持哪些语言
'locale_array' => [
    'zh_CN' => '中文',
    'en' => 'English'
],

```

语言文件, 配置 `/lang/` 目录下的模型语言文件, 支持的语言文件最好都设置.

截图
--

[](#截图)

DEMO: sql文件

```
CREATE TABLE `yw_test` (
  `id` int(8) unsigned NOT NULL AUTO_INCREMENT,
  `title` json DEFAULT NULL,
  `desc` json DEFAULT NULL,
  `status` tinyint(2) DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

insert  into `yw_test`(`id`,`title`,`desc`,`status`) values
(1,'{\"en\": \"test title\", \"zh_CN\": \"中文 标题1\"}','{\"en\": \"test desc\", \"zh_CN\": \"中文描述1\"}',1),
(2,'{\"en\": \"test title english\", \"zh_CN\": \"测试中文标题\"}','{\"en\": \"test desc english\", \"zh_CN\": \"测试中文描述\"}',1);

```

DEMO: /app/Models/Test.php

```
