NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Permissions for Laravel

Preložiteľné popisy

Atribút description na modeloch Role aj Permission je plnohodnotný preložiteľný atribút postavený na translatable-for-laravel. Ukladá sa ako JSON mapa jazykov (jsonb) a číta sa ako obyčajný reťazec pre aktuálny jazyk aplikácie. Nič nemusíte zapájať — trait je už použitý:

use Illuminate\Support\Facades\App;

$permission->update(['description' => ['en' => 'View users', 'sk' => 'Zobraziť používateľov']]);

App::setLocale('sk');
$permission->description;              // "Zobraziť používateľov"  (current locale)

App::setLocale('en');
$permission->description;              // "View users"

$permission->getTranslations('description'); // ['en' => 'View users', 'sk' => 'Zobraziť …']
$permission->getTranslation('description', 'sk'); // "Zobraziť používateľov"

Pole podľa jazykov nastaví viac jazykov naraz; samotný reťazec nastaví iba aktuálny jazyk:

App::setLocale('sk');

$role->description = 'Správca';   // a bare string writes the current locale only
$role->save();

$role->getTranslations('description'); // ['sk' => 'Správca']

$role->setTranslation('description', 'en', 'Administrator')->save();

toArray(), toJson() aj API Resources vracajú reťazec pre aktuálny jazyk, rovnako ako prístup k atribútu — nie surovú JSON mapu.

Režimy fallbacku

Ak aktuálny jazyk hodnotu nemá, o tom, kam až čítanie siahne, rozhoduje permissions.description_fallback (env PERMISSIONS_DESCRIPTION_FALLBACK):

RežimReťazecPoznámka
Fallbackaktuálny jazyk → fallback_locale aplikácie → nullPredvolený. Popis, ktorý ste pre daný jazyk nepreložili, nikdy nezobrazí obsah z nesúvisiaceho jazyka.
Noneaktuálny jazyk → nullIba presne zhodný jazyk.
Anyaktuálny jazyk → fallback_locale aplikácie → prvý dostupný jazykPopis nikdy nie je prázdny, no nepreložená hodnota sa môže zobraziť v inom jazyku. Zapnite vedome.

Popisy sú označenia pre vývojárov a administrátorov, nie osobné údaje, takže Any je rozumná voľba — predvolená však nie je, pretože tiché siahnutie do nesúvisiaceho jazyka prekvapí:

# Opt into first-available fallback (descriptions never render blank):
PERMISSIONS_DESCRIPTION_FALLBACK=any

Ak chcete režim nastaviť len pre jeden model, deklarujte $translatableFallbackMode vo vlastnej podtriede a zaregistrujte ju v permissions.models.role alebo permissions.models.permission. Konfigurácia vlastnosť vyplní, iba keď je null, takže explicitný režim modelu má vždy prednosť pred description_fallback:

use RoundlyConsulting\Permissions\Models\Role;
use RoundlyConsulting\Translatable\Enums\FallbackMode;

final class AppRole extends Role
{
    protected ?FallbackMode $translatableFallbackMode = FallbackMode::None;
}

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.