berthott/laravel-translatable

Laravel模型翻译助手

3.0.1 2023-11-08 14:36 UTC

This package is auto-updated.

Last update: 2024-09-08 16:21:29 UTC


README

Laravel中模型翻译的助手。

轻松地将可翻译字段添加到任何Eloquent模型中。

安装

$ composer require berthott/laravel-translatable

使用方法/工作原理

  • 创建您的表和相应的模型,例如使用php artisan make:model YourModel -m
  • 使用translatable宏在迁移中添加可翻译字段。例如:
        Schema::create('dummies', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->translatable('user_input');
            $table->timestamps();
        });
  • Translatable特质添加到您新创建的模型中。
  • 向模型中添加一个translatableFields()方法,返回一个包含您可翻译字段列表的数组。
  • 使用self::translatableRules收集所有您需要的规则,以确保正确的数据格式,例如:
    {
        "en": "English String",
        "de": "German String",
    }
  • 如果某些字段应该有可选的语言,这些语言未在包的配置中列出,您可以添加一个translatableOptionalFields()方法,返回一个包含字段作为键和可选语言作为数组的数组。
  • 就是这样。该包将处理其他所有事情。
    • 将迁移三个表:translatable_contenttranslatable_translationstranslatable_languages。语言表将根据包的配置进行填充。
    • 将为您的模型注册一个Laravel模型观察者,该观察者将挂钩到您可翻译字段的数据存储。
    • 将自动添加一个包含翻译数据的属性到您的模型中。

选项

要更改默认选项,请使用

$ php artisan vendor:publish --provider="berthott\Translatable\TranslatableServiceProvider" --tag="config"
  • 继承自laravel-targetable
    • namespace:字符串或数组,包含一个或多个应监控配置特质的命名空间。默认为App\Models
    • namespace_mode:定义命名空间的搜索模式。ClassFinder::STANDARD_MODE将只找到精确匹配的命名空间,ClassFinder::RECURSIVE_MODE将找到所有子命名空间。默认为ClassFinder::STANDARD_MODE
  • 语言选项
  • languages:定义应用程序中使用的语言。默认为['en' => 'English']
  • optional_languages:定义应被视为可选的语言。默认为[]
  • default_language:定义应使用的默认语言。默认为en

兼容性

与Laravel 10.x进行了测试。

许可

许可文件。版权©2023 Jan Bladt。