okaspar/nova-translatable

A Laravel Nova field for spatie/laravel-translatable forked from mrmonat/nova-translatable to enable RTL support

Installs: 3

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 27

Language:Vue

2.0.2 2019-10-22 11:50 UTC

This package is auto-updated.

Last update: 2024-04-19 18:12:46 UTC


README

Latest Version on Packagist

Adds the ability to show and edit translated fields created with spatie/laravel-translatable package.

It will show up in the detail view like this:

68747470733a2f2f6d726d6f6e61742e64652f6769746875622f696d616765732f6e6f76612d7370617469652d7472616e736c617461626c652d64657461696c732e706e67

And in the edit view like this:

68747470733a2f2f6d726d6f6e61742e64652f6769746875622f696d616765732f6e6f76612d7370617469652d7472616e736c617461626c652d656469742e706e67

Installation and usage

You can require this package using composer:

composer require okaspar/nova-translatable

You can add the field follows:

use okaspar\Translatable\Translatable;

Translatable::make('Description'),

Make sure, that you have your Eloquent model setup correct:

  • First, you need to add the Spatie\Translatable\HasTranslations-trait.
  • Next, you should create a public property $translatable which holds an array with all the names of attributes you wish to make translatable.
  • Finally, you should make sure that all translatable attributes are set to the text-datatype in your database. If your database supports json-columns, use that.

Here's an example of a prepared model:

use Illuminate\Database\Eloquent\Model;
use Spatie\Translatable\HasTranslations;

class NewsItem extends Model
{
    use HasTranslations;
    
    public $translatable = ['name'];
}

Defining Locales

Locales can be defined via config file config/translatable.php (config file can be created via spatie/laravel-translatable package) by adding a locales array:

// config/translatable.php
return [
    ...
    'locales' => [
        'en' => 'English',
        'de' => 'German',
        'fr' => 'French',
    ],
];

Alternatively you can "override" the config locales with the locales(...) method:

Translatable::make('Description')->locales([
    'en' => 'English',
    'de' => 'German',
]),

Single Line Option

By default the input field on the edit view is a textarea. If you want to change it to a single line input field you can add the singleLine() option:

Translatable::make('Description')->locales([...])->singleLine(),

Trix Editor

You can use the trix editor for your translated fields by using the trix() option:

Translatable::make('Description')->trix(),

Index View

By default the locale used when displaying the field on the index view is determined by app()->getLocale(). To override this you can use the indexLocale($locale) option:

Translatable::make('Description')->indexLocale('de'),