outerweb / filament-translatable-fields
此软件包为 Filament 添加了一种与 outerweb/translatable-fields 交互的方式。
v2.0.1
2024-06-09 16:50 UTC
Requires
- php: ^8.0
- filament/filament: ^3.2
- laravel/framework: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.16
- spatie/laravel-translatable: ^6.6
README
Filament 可翻译字段
此软件包为所有 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()
函数的第一个参数设置为 true
或 false
。
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)。有关更多信息,请参阅 许可证文件。