latevaweb/laravel-translatable

Laravel 包,用于使 Eloquent 模型属性可翻译

0.1.9 2024-08-05 07:32 UTC

README

使用 Translations 表使 Eloquent 模型属性可翻译

Scrutinizer Code Quality Code Coverage Build Status StyleCI License: MIT Laravel 6.x

此包包含一个特性,用于使 Eloquent 属性可翻译。翻译存储在 Translations 数据库表中。

一旦在模型上安装了此特性,您可以执行以下操作

$customer = new Customer; // An Eloquent model
$customer
   ->setTranslation('greeting', 'en', 'Hello')
   ->setTranslation('greeting', 'es', 'Hola')
   ->save();
   
$customer->greeting; // Returns 'Hello' given that the current app locale is 'en'
$customer->getTranslation('greeting', 'es'); // returns 'Hola'

app()->setLocale('es');

$customer->greeting; // Returns 'Hola'

安装

您可以通过 composer 安装此包

composer require latevaweb/laravel-translatable

如果您想更改默认模型或默认表名,可以发布配置文件

php artisan vendor:publish --provider="LaTevaWeb\Translatable\TranslatableServiceProvider" --tag=config --force

您必须发布迁移文件以创建多态和主要翻译表

php artisan vendor:publish --provider="LaTevaWeb\Translatable\TranslatableServiceProvider" --tag=migrations --force

使模型可翻译

使模型可翻译的必要步骤是

  • 首先,您需要添加 LaTevaWeb\Translatable\Traits\Translatable 特性。
  • 接下来,您应该创建一个公共静态属性 $translatable,它包含您希望使可翻译的所有属性名称的数组。
  • 您必须在模型的迁移中创建一个字段,字段类型为 stringnullable

以下是一个准备好的模型示例

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

class NewsItem extends Model
{
    use Translatable;
       
    protected $fillable = ['greeting'];
    public static $translatable = ['greeting'];
}