This package adds a way to make all filament fields translatable.
It uses the spatie/laravel-translatable
package in the background.
You can install the package via composer:
composer require alareqi/filament-translatable-fields
Add the plugin to your desired Filament panel:
use Alareqi\FilamentTranslatableFields\FilamentTranslatableFieldsPlugin;
class FilamentPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugins([
FilamentTranslatableFieldsPlugin::make(),
]);
}
}
You can specify the supported locales:
use Alareqi\FilamentTranslatableFields\FilamentTranslatableFieldsPlugin;
class FilamentPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugins([
FilamentTranslatableFieldsPlugin::make()
->supportedLocales([
'en' => 'English',
'ar' => 'العربية',
]),
]);
}
}
By default, the package will use the app.locale
if you don't specify the locales.
You can simply add ->translatable()
to any field to make it translatable.
use Filament\Forms\Components\TextInput;
TextInput::make('name')
->label('Name')
->translatable(),
If you want to overwrite the locales on a specific field you can set the locales through the second parameter of the ->translatable()
function.
use Filament\Forms\Components\TextInput;
TextInput::make('name')
->label('Name')
->translatable(true, ['en' => 'English', 'ar' => 'العربية', 'fr' => 'French']),
This package will substitute the original field with a Filament\Forms\Components\Tabs
component. This component will render the original field for each locale.
All chained methods you add before calling ->translatable()
will be applied to the original field.
All chained methods you add after calling ->translatable()
will be applied to the Filament\Forms\Components\Tabs
component.
Please see CHANGELOG for more information on what has changed recently.
The MIT License (MIT). Please see License File for more information.