Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kaip „Spatie“ valdo vertimus, kai keičiasi programos lokalė


Kaip „Spatie“ valdo vertimus, kai keičiasi programos lokalė


„Spatie“ tvarko vertimus į „Laravel“ programas, integruodama su „Laravel“ lokalizacijos sistema ir pateikdama lankstus būdus, kaip saugoti ir nuskaityti vertimus pagal dabartinę programos lokalę.

Kaip „Spatie“ tvarko vertimus, kai keičiasi programos lokalė

1. Vertimo saugojimas ir gavimas

-„Spatie“ siūlo paketą, pavadintą „Laravel-Transliation-Loader“, kuris leidžia saugoti vertimus duomenų bazėje, o ne tik kalbos failams. Šis paketas pakeičia numatytąjį „Laravel“ vertimo paslaugų teikėją „Spatie“ teikėju, leidžiančiu vertimams dinamiškai gauti iš duomenų bazės [1].
- Vertimai saugomi lentelėje (paprastai `kalbos_lines`), kur kiekviename įraše yra grupė (pvz.,„ Patvirtinimas “), raktas (pvz.,„ Reikalingas “) ir JSON objekto laikymo vertimai keliems lokalams (pvz.,„ En “=>> tai yra reikalingas laukas“, „NL“ =>> „DIT IS Een Veriplicht VERPLDS“) [1].
- Kai skambinate „Laravel“ S `__ () funkcijai su vertimo klavišu,„ Spatie “krautuvas pateikia dabartinės programos nustatyto lokalės vertimą. Pvz., Jei programos lokalė yra „NL“, `__ („ Patvirtinimas.rientuotas “)„ Grąžina olandų vertimą iš duomenų bazės [1].

2. Lokalės perjungimas

- Programos lokalą galima pakeisti vykdant laiką naudojant „Laravel“ programą ()-> Setlocale („locale_code“) metodą.
- Pakeitus lokalę, visi vėlesni vertimo gavimas naudojant `__ ()` arba kitos vertimo funkcijos automatiškai grąžina tekstą naujai nustatytoje lokalėje.
- Jei dabartinės duomenų bazės lokalės vertimo trūksta, „Laravel“ atsarginis lokalės mechanizmas gali grąžinti vertimą iš numatytos lokalės, nebent tai būtų aiškiai išjungta [1] [8].

3. Modelio lygio vertimai su JSON saugykla

- Kitas „Spatie“ paketas „Laravel-Translatable“ yra skirtas iškalbingiems modeliams, kad atributai būtų išversti.
- Vertimai saugomi kaip JSON viename duomenų bazės stulpelyje kiekviename iš verčiamo atributo, nereikia papildomų lentelių [3].
- Kai keičiasi programos lokalė, prieiga prie modelio verčiamo atributo, automatiškai grąžina dabartinės lokalės vertę. Pvz., „$ NewsItem-> name“ grąžins dabartinės programos nustatyto lokalės vertimą [4].
- Galite aiškiai gauti arba nustatyti vertimus konkrečioms vietovėms, naudodamiesi tokiais metodais kaip „getTransliacija (atributas, lokalė)` ir `setTransliation (atributas, lokalė, vertė)` [4].

4. Atsarginiai ir trūkstami vertimai

- „Spatie“ verčiamas paketas palaiko atsargines lokalus, taigi, jei trūksta vertimo dabartinei lokalei, jis gali grąžinti vertimą iš kitos lokalės (paprastai numatytasis) [8].
- Tokį elgesį galima valdyti perduodant loginę vėliavą į „getTransliation“, kad išjungtumėte atsarginę laidą ir gautumėte tuščią eilutę, jei trūksta vertimo [8].

Santrauka

Kai keičiasi programos lokalė, „Spatie“ vertimo paketai automatiškai aptarnauja tinkamą vertimą iš duomenų bazės saugomų kalbų linijų arba JSON sudarytų modelio atributų, pasinaudojančių „Laravel“ lokalės nustatymu. Ši vientisa integracija užtikrina, kad vertimo gavimo funkcijos grąžintų teisingą lokalizuotą eilutę, pagrįstą dabartine programos lokale, su atsarginiais mechanizmais, jei trūksta vertimo.

Šis metodas leidžia dinamiškam lokalui perjungti vykdymo laiką ir palaiko vertimų saugojimą lanksčiai, tiek duomenų bazių lentelėse, tiek JSON stulpeliuose, atsižvelgiant į naudojamą paketą.

Nuorodos: [1] [3] [4] [8]

Citatos:
[1] https://github.com/spatie/laravel-transliation-loader
[2] https://patie.be/docs/laravel-translatable/v6/introduction
[3] https://github.com/spatie/laravel-translatable
[4] https://spatie.be/docs/laravel-translatable/v6/basic-usage/getting-and-settings-transliations
[5] https://filamentphp.com/plugins/filament-patie-translatable
[6] https://github.com/filamentphp/filament/discussions/6913
[7] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-transliation-loader
[8] https://stackoverflow.com/questions/65252615/spatie-laravel-translatable-shows-the-default-pocale-when--try-try- retrieve Th