Make components globally translatable
- Published: 29 May 2024 Updated: 30 May 2024
Translating components can often be a repetitive task, Fortunately, there's a neat trick to automate this process, making your components instantly translatable.
Introduction
Translating components can often be a repetitive task, requiring you to individually add translateLabel or __() to each component. Fortunately, there's a neat trick to automate this process, making your components instantly translatable. By modifying your AppServiceProvider.php, you can apply a global translation configuration to all relevant components. Here's how to do it:
AppServiceProvider
In this example we will make the following components translatable by default if you would like to add more components you can do so by adding them to the array
Filament\Forms\Components\Field
Filament\Tables\Filters\BaseFilter
Filament\Forms\Components\Placeholder
Filament\Tables\Columns\Column
Filament\Infolists\Components\Entry
Boot
Navigate to your AppServiceProvider.php file located in the app/Providers directory of your Laravel project and add the following to your boot method:
1foreach ([Field::class, BaseFilter::class, Placeholder::class, Column::class, Entry::class] as $component) {
2 /* @var Configurable $component */
3 $component::configureUsing(function (Component $translatable): void {
4 $translatable->translateLabel();
5 });
6}
Imports
Make sure you import the necessary classes at the top of your AppServiceProvider.php file:
1use Filament\Forms\Components\Placeholder;
2use Filament\Support\Components\Component;
3use Filament\Infolists\Components\Entry;
4use Filament\Tables\Filters\BaseFilter;
5use Filament\Forms\Components\Field;
6use Filament\Tables\Columns\Column;
I hope this trick helps you save time and effort when translating components in your Laravel project. If you have any questions or need further assistance, feel free to reach out to me. Happy coding!
Related Tricks:
Form Builder lets you build dynamic, versioned forms in Filament and attach them to any model. Responses are stored in JSON with zero boilerplate.
How to Apply Authorization on Create Option Action for Select Field
Let Users to Select All Options with a Simple Hint Action
Translating components can often be a repetitive task, Fortunately, there's a neat trick to automate this process, making your components instantly translatable.
Unrequire fields recursively when saving as draft