outerweb/filament-translatable-fields

此软件包为 Filament 添加了一种与 outerweb/translatable-fields 交互的方式。

v2.0.1 2024-06-09 16:50 UTC

This package is auto-updated.

Last update: 2024-09-09 17:16:59 UTC


README

Filament Translatable Fields

Filament 可翻译字段

Latest Version on Packagist Total Downloads

此软件包为所有 Filament 字段提供了可翻译的方式。它使用 spatie/laravel-translatable 软件包作为后台。

安装

首先安装并配置你的模型以使用 spatie/laravel-translatable 软件包。

你可以通过 composer 安装此软件包

composer require outerweb/filament-translatable-fields

将插件添加到你的 Filament 面板

use Outerweb\FilamentTranslatableFields\Filament\Plugins\FilamentTranslatableFieldsPlugin;

class FilamentPanelProvider extends PanelProvider
{
    public function panel(Panel $panel): Panel
    {
        return $panel
            // ...
            ->plugins([
                FilamentTranslatableFieldsPlugin::make(),
            ]);
    }
}

你可以指定支持的本地化语言

use Outerweb\FilamentTranslatableFields\Filament\Plugins\FilamentTranslatableFieldsPlugin;

class FilamentPanelProvider extends PanelProvider
{
    public function panel(Panel $panel): Panel
    {
        return $panel
            // ...
            ->plugins([
                FilamentTranslatableFieldsPlugin::make()
                    ->supportedLocales([
                        'en' => 'English',
                        'nl' => 'Dutch',
                    ]),
            ]);
    }
}

默认情况下,如果你没有指定本地化语言,软件包将使用 app.locale

与官方 spatie-laravel-translatable-plugin 结合使用?

此软件包仅作为官方软件包在 创建编辑 页面上的替代品。如果你已经使用了官方软件包,你必须从那些页面上删除 use Translatable 特性和 LocaleSwitcher 标题操作。

-use Filament\Actions\LocaleSwitcher;
-use Filament\Resources\Pages\EditRecord\Concerns\Translatable;

class EditPage extends EditRecord
{
-    use Translatable;

    protected function getHeaderActions(): array
    {
        return [
-            LocaleSwitcher::make(),
            DeleteAction::make(),
        ];
    }
}

用法

你可以简单地添加 ->translatable() 到任何字段使其可翻译。

use Filament\Forms\Components\TextInput;

TextInput::make('name')
    ->label('Name')
    ->translatable(),

动态禁用翻译

如果你想动态禁用翻译,可以将 ->translatable() 函数的第一个参数设置为 truefalse

use Filament\Forms\Components\TextInput;

TextInput::make('name')
    ->label('Name')
    ->translatable(false),

覆盖本地化

如果你想覆盖特定字段的本地化,可以通过 ->translatable() 函数的第二个参数设置本地化。

use Filament\Forms\Components\TextInput;

TextInput::make('name')
    ->label('Name')
    ->translatable(true, ['en' => 'English', 'nl' => 'Dutch', 'fr' => 'French']),

特定本地化的验证规则

你可以使用 ->translatable() 方法的第三个参数添加特定本地化的验证规则。

use Filament\Forms\Components\TextInput;

TextInput::make('name')
    ->label('Name')
    ->translatable(true, null, [
        'en' => ['required', 'string', 'max:255'],
        'nl' => ['nullable', 'string', 'max:255'],
    ]);

有用信息

此软件包将原始字段替换为 Filament\Forms\Components\Tabs 组件。该组件将为每个本地化渲染原始字段。

链式方法

Laravel 支持

变更日志

请参阅 变更日志 了解最近更改的详细信息。

致谢

许可

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