Konfigurácia
Publikovaný config/translatable.php v plnom znení:
use RoundlyConsulting\Translatable\Enums\FallbackMode;
return [
// Locale used when a requested locale has no value (FallbackMode::Fallback / Any, step 2).
'fallback_locale' => env('TRANSLATABLE_FALLBACK_LOCALE', config('app.fallback_locale', 'en')),
// How far the fallback chain reaches. none = exact only; fallback = exact -> fallback
// locale; any = exact -> fallback locale -> first available (content never renders blank).
// NOTE: `any` can surface a value from another locale when the requested + fallback
// locales are empty — a cross-locale disclosure. See "Fallback modes".
// Anything other than none/fallback/any throws rather than silently widening to `any`.
'fallback' => env('TRANSLATABLE_FALLBACK', FallbackMode::Any),
// Reject any locale key not in the supported list on writes (malformed keys are always
// rejected regardless). Off by default, so any well-formed locale is accepted.
// Env words are read as booleans (on/off, yes/no, true/false, 1/0); anything else throws.
'strict_locales' => env('TRANSLATABLE_STRICT_LOCALES', false),
// Default supported locales. Hosts SHOULD rebind SupportedLocales to their own source.
'locales' => ['en', 'sk'],
];Všetky kľúče
| Kľúč | Predvolené | Env | Účel |
|---|---|---|---|
fallback_locale | app.fallback_locale, inak en | TRANSLATABLE_FALLBACK_LOCALE | Jazyk, ktorý sa skúsi po presnom jazyku. Nenastavená hodnota — null alebo prázdna (TRANSLATABLE_FALLBACK_LOCALE=) — znamená predvolené správanie: žiadny záložný jazyk; čokoľvek iné musí byť správne tvarovaný kľúč jazyka (en, pt-BR), inak sa vyhodí InvalidConfigurationException z toolkitu. |
fallback | FallbackMode::Any | TRANSLATABLE_FALLBACK | Kam až siaha fallback reťazec: none, fallback alebo any. Prázdna hodnota sa považuje za nenastavenú (any); akákoľvek iná hodnota vyhodí InvalidConfigurationException z toolkitu pri prvom čítaní. |
strict_locales | false | TRANSLATABLE_STRICT_LOCALES | Odmietne zápis správne tvarovaných jazykov mimo zoznamu podporovaných. Hodnota z env sa číta ako boolean: on/off, yes/no, true/false, 1/0. Prázdna hodnota sa považuje za nenastavenú (false); akákoľvek iná hodnota vyhodí InvalidConfigurationException z toolkitu pri prvom zápise. |
locales | ['en', 'sk'] | — | Predvolené podporované jazyky, ktoré číta predvolená väzba SupportedLocales. Musí ísť o zoznam správne tvarovaných kľúčov jazykov; hodnota, ktorá nie je zoznamom, alebo chybná položka vyhodí InvalidConfigurationException z toolkitu s jej označením. |
Prostredie (env)
Všetky kľúče okrem locales sa dajú nastaviť cez env, takže väčšina aplikácií konfiguráciu vôbec nepublikuje:
TRANSLATABLE_FALLBACK_LOCALE=en
TRANSLATABLE_FALLBACK=fallback # none | fallback | any
TRANSLATABLE_STRICT_LOCALES=on # on/off, yes/no, true/false, 1/0Hodnoty z env sa odovzdávajú bez úprav a čítajú sa striktne: TRANSLATABLE_FALLBACK musí byť none, fallback alebo any a TRANSLATABLE_STRICT_LOCALES jedna z hodnôt on/off, yes/no, true/false, 1/0. Preklep vyhodí InvalidConfigurationException s názvom kľúča — nikdy sa potichu nerozšíri na any ani neprečíta ako vypnuté. Prázdna hodnota sa považuje za nenastavenú: TRANSLATABLE_FALLBACK= sa číta ako any, TRANSLATABLE_STRICT_LOCALES= ako vypnuté a TRANSLATABLE_FALLBACK_LOCALE= znamená žiadny záložný jazyk.
Jeden zdroj pravdy pre jazyky
Podporované jazyky riadia Translatable::supported(), isSupported(), fromInput(), rules() a search(), metódu missingLocales() na modeli, striktný režim a cez sluggable aj slugy pre jednotlivé jazyky. Predvolená väzba (ConfigSupportedLocales) číta translatable.locales; ak chcete jediný zdroj pravdy, naviažte kontrakt SupportedLocales vo vlastnom service provideri:
use RoundlyConsulting\Translatable\Contracts\SupportedLocales;
$this->app->bind(SupportedLocales::class, fn () => new class implements SupportedLocales {
/** @return list<string> */
public function supported(): array
{
return App\Localization\Locale::SUPPORTED;
}
});Translatable zároveň naviaže kontrakt SlugLocales zo sluggable na TranslatableSlugLocales — adaptér nad tým istým SupportedLocales, translatable.fallback_locale a jazykom aplikácie — takže slugy sa generujú, indexujú a viažu presne pre jazyky vašich prekladov. Sluggable registruje vlastnú predvolenú väzbu cez bindIf(), preto na poradí providerov nezáleží; vaša vlastná väzba SlugLocales v neskoršom provideri má prednosť pred oboma. Nastavenia slugov (oddeľovač, limit slov, rezervované slová) sú v config/sluggable.php.
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.