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

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_localeapp.fallback_locale, inak enTRANSLATABLE_FALLBACK_LOCALEJazyk, 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.
fallbackFallbackMode::AnyTRANSLATABLE_FALLBACKKam 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_localesfalseTRANSLATABLE_STRICT_LOCALESOdmietne 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/0

Hodnoty 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 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.