A Laravel Nova package for translatable fields
novius/laravel-nova-translatable is a Laravel package for a laravel nova package for translatable fields.
It currently has 0 GitHub stars and 9.151 downloads on Packagist (latest version 2.0.3).
Install it with composer require novius/laravel-nova-translatable.
Discover more Laravel packages by novius
or browse all Laravel packages to compare alternatives.
Last updated
This package allows you to manage Laravel Models which use Laravel Translatable in Laravel Nova.
NOTE: These instructions are for Laravel >= 10.0 and PHP >= 8.2 If you are using prior version, please see the previous version's docs.
You can install the package via composer:
composer require novius/laravel-nova-translatable
Next, we need to publish the package's assets. We do this by running the following command:
php artisan vendor:publish --provider="Novius\LaravelNovaTranslatable\LaravelNovaTranslatableServiceProvider" --tag="public"
Locale field on your Nova Resource.Translations field on your Nova Resource. Don't forget to add relation translations in the eager loading of your resource. You can translate item from the list of flags displayed.LocaleFilter filter on your Nova Resource.Locales card on your Nova Resource, if you've added the LocaleFilter.use Laravel\Nova\Resource;
use Novius\LaravelNovaTranslatable\Nova\Actions\Translate;
class Post extends Resource
{
// If your model uses the SoftDelete trait
// public static $with = ['translationsWithDeleted'];
// Otherwise
public static $with = ['translations'];
public function fields(NovaRequest $request): array
{
return [
Locale::make(),
Translations::make(),
];
}
// Optional, if you want to have a bar to switch locale of the items displayed on the index, more accessible than the filters
// work with the filter LocaleFilter
public function cards(NovaRequest $request): array
{
return [
new Locales(),
];
}
public function filters(NovaRequest $request): array
{
return [
new LocaleFilter(),
];
}
// Optional, if you want to implement custom translation on your model
public function translate(): void
{
$model = $this->model();
$model->attribute_to_translate = 'Translation';
}
If you want to customize the lang files, you can publish them with:
php artisan vendor:publish --provider="Novius\LaravelNovaTranslatable\LaravelNovaTranslatableServiceProvider" --tag="lang"
Lint your code with Laravel Pint using:
composer run-script lint
This package is under GNU Affero General Public License v3 or (at your option) any later version.