nevadskiy/nova-translatable

允许您在Laravel Nova中添加可翻译字段。

0.1.0 2023-04-17 11:58 UTC

This package is auto-updated.

Last update: 2024-09-17 15:20:42 UTC


README

此软件包允许您为Laravel Nova资源添加可翻译字段。

它旨在与主要nevadskiy/laravel-translatable软件包协同工作,该软件包负责管理如何在数据库中存储翻译。

🔌 安装

composer require nevadskiy/nova-translatable

同时确保安装了主要nevadskiy/laravel-translatable软件包。

⚙ 示例

以下代码展示了如何使用此软件包使Nova资源可翻译。

<?php

namespace App\Nova;

use App\Models\Book as BookModel;
use Nevadskiy\Nova\Translatable\PerformsTranslatableQueries;
use Nevadskiy\Nova\Translatable\Fields\Text;
use Nevadskiy\Nova\Translatable\Fields\Textarea;

class Book extends Resource
{
    use PerformsTranslatableQueries;

    public static $model = BookModel::class;

    public static $title = 'name';

    public static $search = ['id', 'name'];

    public function fields(Request $request): array
    {
        return [
            ID::make()
                ->sortable(),

            Text::make('Name')
                ->sortable()
                ->translatable()
                ->requiredOnlyFallbackLocale()
                ->showOnIndexOnlyFallbackLocale()

            Textarea::make('Description')
                ->translatable()
                ->requiredOnlyFallbackLocale(),
        ];
    }
}

📄 文档

定义区域

要指定全局区域列表,您可以将以下代码添加到AppServiceProvider中。

use Nevadskiy\Nova\Translatable\Localizer;

public function boot(): void
{
    Localizer::locales(['en', 'uk', 'pl', 'cz']);
}

自定义字段标签(名称)

默认情况下,可翻译字段的名称格式如下:标题(en)

要自定义字段的名称显示逻辑,您可以在AppServiceProvider中全局指定自定义函数。

use Nevadskiy\Nova\Translatable\Fields;

public function boot(): void
{
    Localizer::localizeNameUsing(fn (string $name, string $locale) => "{$name} ({$locale})");
}

搜索和排序

如果您想按可翻译字段搜索或排序模型,请将PerformsTranslatableQueries特质添加到资源中。

<?php

namespace App\Nova;

use App\Models\Book as BookModel;
use Nevadskiy\Nova\Translatable\PerformsTranslatableQueries;

class Book extends Resource
{
    use PerformsTranslatableQueries;
}

📑 更新日志

请参阅更新日志以获取有关最近更改的更多信息。

☕ 贡献

欢迎贡献,并将得到充分认可。

我们通过拉取请求接受贡献。

🔓 安全性

如果您发现任何与安全性相关的问题,请通过电子邮件联系我,而不是使用问题跟踪器。

📜 许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证