novius / laravel-nova-translatable
A Laravel Nova package for translatable fields
Installs: 3 491
Dependents: 2
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- php: >=8.2
- illuminate/support: ^10.0|^11.0
- laravel/nova: ^4.0
- novius/laravel-translatable: ^1.0
Requires (Dev)
- laravel/pint: ^1.10
README
Introduction
This package allows you to manage Laravel Models which use Laravel Translatable in Laravel Nova.
Requirements
- Laravel Nova >= 4.0
- Laravel >= 10.0
- PHP >= 8.2
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.
Installation
You can install the package via composer:
composer require novius/laravel-nova-translatable
Assets
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"
Fields, Action, Filter, Card
- Add
Locale
field on your Nova Resource. - Add
Translations
field on your Nova Resource. Don't forget to add relationtranslations
in the eager loading of your resource. You can translate item from the list of flags displayed. - You can add the
LocaleFilter
filter on your Nova Resource. - You can add the
Locales
card on your Nova Resource, if you've added theLocaleFilter
.
In all cases, add an availableLocales
on your Resource.
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 availableLocales(): array { return ['fr' => 'Français', 'en' => 'English']; } 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'; }
Lang files
If you want to customize the lang files, you can publish them with:
php artisan vendor:publish --provider="Novius\LaravelNovaTranslatable\LaravelNovaTranslatableServiceProvider" --tag="lang"
Lint
Lint your code with Laravel Pint using:
composer run-script lint
Licence
This package is under GNU Affero General Public License v3 or (at your option) any later version.