novius/laravel-nova-translatable

Laravel Nova的可翻译字段包

1.0.0 2024-07-10 12:50 UTC

This package is auto-updated.

Last update: 2024-09-10 13:05:30 UTC


README

License: AGPL v3

简介

此包允许您在Laravel Nova中管理使用Laravel Translatable的Laravel模型。

要求

  • Laravel Nova >= 4.0
  • Laravel >= 10.0
  • PHP >= 8.2

注意:以下说明适用于Laravel >= 10.0和PHP >= 8.2。如果您使用的是早期版本,请参阅旧版本的文档

安装

您可以通过composer安装此包

composer require novius/laravel-nova-translatable

资产

接下来,我们需要发布包的资产。我们可以通过运行以下命令来完成此操作

php artisan vendor:publish --provider="Novius\LaravelNovaTranslatable\LaravelNovaTranslatableServiceProvider" --tag="public"

字段,操作,过滤器,卡片

  • 在您的Nova资源中添加Locale字段。
  • 在您的Nova资源中添加Translations字段。不要忘记在您的资源预加载中添加关系translations。您可以从显示的旗帜列表中翻译项目。
  • 您可以在您的Nova资源中添加LocaleFilter过滤器。
  • 如果您已添加LocaleFilter,则可以在您的Nova资源中添加Locales卡片。

在任何情况下,请确保在您的资源中添加availableLocales

use Laravel\Nova\Resource;
use Novius\LaravelNovaTranslatable\Nova\Actions\Translate;

class Post extends Resource
{
    // If your model uses the SoftDelete trait
    // public static $with = ['translationsWithDeleted'];
    // Otherwise
    public static $with = ['translations'];

    public function availableLocales(): array
    {
        return ['fr' => 'Français', 'en' => 'English'];
    }

    public function fields(NovaRequest $request): array
    {
        return [
            Locale::make(),
            Translations::make(),
        ];
    }

    // Optional, if you want to have a bar to switch locale of the items displayed on the index, more accessible than the filters 
    // work with the filter LocaleFilter
    public function cards(NovaRequest $request): array
    {
        return [
            new Locales(),
        ];
    }

    public function filters(NovaRequest $request): array
    {
        return [
            new LocaleFilter(),
        ];
    }

    // Optional, if you want to implement custom translation on your model  
    public function translate(): void
    {
         $model = $this->model();
         $model->attribute_to_translate = 'Translation';
    }

语言文件

如果您想自定义语言文件,可以使用以下命令发布它们

php artisan vendor:publish --provider="Novius\LaravelNovaTranslatable\LaravelNovaTranslatableServiceProvider" --tag="lang"

代码检查

使用Laravel Pint进行代码检查

composer run-script lint

许可证

此包受GNU Affero General Public License v3或(根据您的选择)任何后续版本的许可。