Skip to content

novius/laravel-nova-translatable

Repository files navigation

Laravel Nova Translatable

License: AGPL v3

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 relation translations 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 the LocaleFilter.

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •