Spatie\Translatable

You're browsing the documentation for an old version of MoonShine. Consider upgrading your project to MoonShine 2.x.

Extends Json * has the same features

This field belongs to a separate package, you have to complete the installation before using it

composer require visual-ideas/moonshine-spatie-translatable

The field is purposed for work with the Laravel-translatable package made by Spatie

Before using the Spatie\Translatable field, make sure that:

  • The spatie/laravel-translatable package is installed and configured
  • The field passed to the Spatie\Translatable is added to the $translatable array of the model
use VI\MoonShineSpatieTranslatable\Fields\Translatable;
//...
Translatable::make('Title', 'name')
//...

# Mandatory translations

The ->requiredLanguages(array $languages) method is used to specify the languages required by the validator for creating/saving a record.

It is recommended to pass the config('app.fallback_locale') value to this method

use VI\MoonShineSpatieTranslatable\Fields\Translatable;
//...
Translatable::make('Title', 'name')
->requiredLanguages([config('app.fallback_locale'), 'ru'])
//...

# Recommended translations

If you specify this array, the language codes in the forms for adding/modifying a specific translation will be placed at the beginning of the list of all possible languages.

use VI\MoonShineSpatieTranslatable\Fields\Translatable;
//...
Translatable::make('Title', 'name')
->priorityLanguages([config('app.fallback_locale'), config('app.locale'), 'de', 'fr', 'uk'])
//...

# Deleting

You can delete specific translations from out of the entered ones

Translatable::make('Field', 'field')
->removable()

If you leave the translation text blank, it will be deleted!

If there are two translations into the same language, the translation that comes first will be deleted (replaced)!