/laravel-translatable

这是一个包含可翻译 Eloquent 模型特质的 Laravel 包。此包采用只有一个表来维护所有翻译的方法。

0.03 2022-05-25 17:36 UTC

This package is auto-updated.

Last update: 2024-09-16 16:54:50 UTC


README

这是一个包含可翻译 Eloquent 模型特质的 Laravel 包。此包采用只有一个表来维护所有翻译的方法。

这种方法可能不适用于每个用例,因为表可能会变得非常大。但与其他所有包相比,这种方法是最灵活的,因为它允许您在不进行额外配置的情况下使模型及其属性可翻译。

此包的替代方案包括以下包

  1. Spatie/laravel-translatable 将可翻译属性保存为 json
  2. dimsav/laravel-translatable 预期每个具有可翻译属性的新模型都有一个新表

要求

此包需要至少 Laravel 版本 5.8 和 PHP 版本 7.1

安装

您可以通过 composer 安装此包

composer require said/laravel-translatable:0.0.7

现在您可以在项目中使用此 Trait 中的任何 Eloquent 模型。

用法

要将您的 Eloquent 模型设置为可翻译,只需将 Said\Translatable\Traits\TranslatableTrait 添加到您的模型中。然后添加一个公共属性$translatable_columns`,它是一个包含所有应可翻译的属性的数组。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Said\Translatable\Traits\Translatable;

class MyModel extends Model
{
    use Translatable;
    protected $translatable_columns=[
        'name'
    ];
    protected $fillable=[
        'price'
    ];
}

在控制器中保存翻译

<?php

public function store(Request $request) {
    $data = [
       'en' => [
           'name'       => en-name
       ],
       'fr' => [
           'name'       => fr-name
       ],
    ];

    // Now just pass this array to regular Eloquent function    
    MyModel::create($data);
}

方法

获取翻译的最简单版本是直接获取属性。这将返回当前语言中属性的值。

// assuming $myModel is an instace of MyModel class defined above
// and the translations are set
echo $myModel->name; // returns 'Product'
App::setLocale('fr');
echo $myModel->name; // returns 'Produit'

您还可以使用

$myModel->in('fr')->translate('name'); // returns 'Produit'

获取已翻译模型

即将推出

翻译模型

您可以使用 ... 即将推出 来翻译模型

查看 变更日志

测试

即将推出

贡献

即将推出

安全性

即将推出

关于 Said Ibrahim

即将推出.

许可

MIT 许可证 (MIT)。