# Obsługa wielu języków

# Laravel Translatable

Translacje modeli w Core obsłużone są przez pakiet astrotomic/laravel-translatable (opens new window).

Ustawienia pakietu można dostosować w pliku config/translatable.php.

# Localization Middleware

Język aplikacji ustawiany jest w middleware Modules\Core\Http\Middleware\Localization na podstawie przesłanego w żądaniu parametru lang.

TIP

Domyślny język aplikacji zdefiniowany jest w pliku konfiguracyjnym config/app.php pod indeksem locale.

# TranslationFallback Middleware

Podczas definiowania routingu można skorzystać z middleware Modules\Core\Http\Middleware\TranslationFallback\TranslationFallback, który pozwala wczytać treści w innym języku jeśli porządane tłumaczenie nie istnieje.

use Modules\Core\Http\Middleware\TranslationFallback;

$router->get('/')
    ->name('api.blog.articles.index')
    ->uses([ArticleController::class, 'index'])
    ->middleware(['can:blog.articles.index', TranslationFallback::class]);

# Konfiguracja modelu

Uwaga

Model musi implementować trait Astrotomic\Translatable\Translatable

# Definiowanie pól tłumaczalnych

Definiowanie tłumaczalnych pól odbywa się definiując w modelu własność protected $translatedAttributes, która zawiera listę tłumaczalnych pól.

protected $translatedAttributes = ['title', 'description'];