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žim | Reťazec | Poznámka |
|---|---|---|
Fallback | aktuálny jazyk → fallback_locale aplikácie → null | Predvolený. Popis, ktorý ste pre daný jazyk nepreložili, nikdy nezobrazí obsah z nesúvisiaceho jazyka. |
None | aktuálny jazyk → null | Iba presne zhodný jazyk. |
Any | aktuálny jazyk → fallback_locale aplikácie → prvý dostupný jazyk | Popis 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=anyAk 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 kryptomienOdoslaní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.