Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ako Spatie spravuje preklady, keď sa zmení miestne nastavenie aplikácie


Ako Spatie spravuje preklady, keď sa zmení miestne nastavenie aplikácie


Spatie riadi preklady v aplikáciách Laravel integráciou do lokalizačného systému Laravel a poskytovaním flexibilných spôsobov ukladania a načítania prekladov na základe súčasného miestneho nastavenia aplikácie.

Ako Spatie rieši preklady, keď sa zmení miestne nastavenie aplikácie

1. Prekladanie a vyhľadávanie

-Spatie ponúka balík s názvom Laravel-translation-Loader, ktorý umožňuje ukladanie prekladov do databázy namiesto iba jazykových súborov. Tento balík nahrádza predvolený poskytovateľ prekladateľských služieb spoločnosti Laravel poskytovateľom spoločnosti Spatie, ktorý umožňuje dynamické načítanie prekladov z databázy [1].
- Preklady sa ukladajú v tabuľke (zvyčajne `Language_lines`), kde každá položka obsahuje skupinu (napríklad„ validácia “), kľúč (napríklad„ požadované “) a preklady objektu JSON pre viacero lokality (napr.` 'En' => 'Toto je požadované pole', 'nl' => 'dit je Een Verplicht Veld' ') [1].
- Keď zavoláte Laravel's `__ ()` Funkcia s prekladovým kľúčom, nakladač Spatie načíta preklad pre aktuálne miestne nastavenie nastavené v aplikácii. Napríklad, ak je lokalizácia aplikácie `'nl'`,` __ (' validation.Required ') `Vráti holandský preklad z databázy [1].

2. Prepínanie lokalít

- Lokalita aplikácie je možné zmeniť za behu pomocou Laravel's `App ()-> SetLocale ('Locale_Code')` Metóda.
- Akonáhle je lokálne nastavenie zmenené, všetky následné vyhľadávanie prekladov prostredníctvom `__ ()` alebo iných prekladových funkcií automaticky vrátia text v novo nastavenom miestnom nastavení.
- Ak preklad chýba pre súčasné miestne nastavenie v databáze, mechanizmus Laravel's Fallback Local Mechanizmus môže vrátiť preklad z predvoleného miestneho nastavenia, pokiaľ to nie je výslovne zakázané [1] [8].

3. Preklady na úrovni modelu s úložiskom JSON

- Ďalší balíček Spatie, translatable, je navrhnutý pre výrečné modely, aby sa atribúty stali preloženými.
- Preklady sa ukladajú ako JSON v jednom stĺpci databázy na prekladateľný atribút bez toho, aby bolo potrebné ďalšie tabuľky [3].
- Keď sa zmení miestne nastavenie aplikácie, prístup k prekladateľnému atribútu na modeli automaticky vráti hodnotu pre aktuálne miesto. Napríklad „$ NewsItem-> name“ vráti preklad pre aktuálne miestne nastavenie v aplikácii [4].
- Môžete explicitne získať alebo nastaviť preklady pre konkrétne lokality pomocou metód ako `getTranslation (atribút, lokale)` a `setTranslation (atribút, lokalita, value)` [4].

4. Faltback a chýbajúce preklady

- Prekladateľný balík Spatieho podporuje lokalizácie záložných miest, takže ak preklad chýba pre súčasné miesto, môže preklad z iného miestneho nastavenia vrátiť preklad (zvyčajne predvolený) [8].
- Toto správanie je možné ovládať odovzdaním booleovskej príznaku na `getTranslation`, aby ste zakázali záložník a dostali prázdny reťazec, ak preklad chýba [8].

Zhrnutie

Keď sa zmení lokalizácia aplikácie, balíčky prekladov spoločnosti Spatie automaticky slúžia príslušnému prekladu z jazykových línií uložených databázou alebo atribútmi modelu JSON, ktoré využívajú Laravelove nastavenie lokality. Táto bezproblémová integrácia zaisťuje, že funkcie na získavanie prekladov vrátia správny lokalizovaný reťazec na základe súčasného miestneho nastavenia aplikácie, pričom k dispozícii sú mechanizmy záložných opatrení, ak chýba preklad.

Tento prístup umožňuje dynamické prepínanie lokalít za behu a podporuje ukladanie prekladov flexibilnými spôsobmi, buď v databázových tabuľkách alebo v stĺpcoch JSON, v závislosti od použitého balíka.

Referencie: [1] [3] [4] [8]

Citácie:
[1] https://github.com/spatie/laravel-translation-loader
[2] https://spatie.be/docs/laravel-translatable/v6/introdukcia
[3] https://github.com/spatie/laravel-translatable
[4] https://spatie.be/docs/laravel-translatable/v6/basic-usage/getting-and-settings-translations
[5] https://filamentphp.com/plugins/Filament-ppatie-translatable
[6] https://github.com/filamentphp/filament/discussions/6913
[7] https://laravaldaily.com/lesson/multi-manguage-laravel/spatie-laravel-translation-loader
[8] https://stackoverflow.com/questions/65252615/spatie-laravel-translatable-shows-the-default-locale-wen-i-i-i-i-i-ry-to-to-trieve-hen