说 / laravel-translatable
这是一个包含可翻译 Eloquent 模型特质的 Laravel 包。此包采用只有一个表来维护所有翻译的方法。
0.03
2022-05-25 17:36 UTC
Requires
- php: >=7.1
- illuminate/database: >=5.7
- illuminate/support: >=5.5
README
这是一个包含可翻译 Eloquent 模型特质的 Laravel 包。此包采用只有一个表来维护所有翻译的方法。
这种方法可能不适用于每个用例,因为表可能会变得非常大。但与其他所有包相比,这种方法是最灵活的,因为它允许您在不进行额外配置的情况下使模型及其属性可翻译。
此包的替代方案包括以下包
- Spatie/laravel-translatable 将可翻译属性保存为 json
- 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)。