Spatie pārvalda tulkojumus laravel lietojumprogrammās, integrējoties ar Laravel lokalizācijas sistēmu un nodrošinot elastīgus veidus, kā saglabāt un iegūt tulkojumus, pamatojoties uz lietotnes pašreizējo lokalizāciju.
Kā Spatie rīkojas ar tulkojumiem, kad mainās lietotnes lokalizācija
1. Tulkošanas glabāšana un izguve
-Spatie piedāvā paketi ar nosaukumu Laravel-Translation-Loader, kas ļauj tulkojumu saglabāt datu bāzē, nevis tikai valodas failus. Šī pakete aizstāj Laravel noklusējuma tulkošanas pakalpojumu sniedzēju ar Spatie pakalpojumu sniedzēju, ļaujot tulkojumiem dinamiski iegūt no datu bāzes [1].
- Tulkojumi tiek glabāti tabulā (parasti “valodas_līnijas”), kur katrā ierakstā ir grupa (piemēram, “validācija”), atslēga (piemēram, “nepieciešamais”) un JSON objekts, kurā ir tulkojumi vairākām vietām (piemēram, `'en' => 'tas ir nepieciešamais lauks', 'nl' => 'dit ir een verplicht Veld'`) [1].
- Kad jūs saucat Laravel s `__ ()` funkciju ar tulkošanas atslēgu, Spatie iekrāvējs iegūst pašreizējās lietojumprogrammas iestatītā lokalizācijas tulkojumu. Piemēram, ja lietotnes lokalizācija ir `'nl'`,` __ (' validācija.required ') `atgriež holandiešu tulkojumu no datu bāzes [1].
2. Lokalizācijas pārslēgšana
- Lietotņu lokalizāciju var mainīt izpildlaikā, izmantojot Laravel s `app ()-> setLocale ('locale_code')` metode.
- Kad lokalizācija ir mainīta, visi turpmākie tulkošanas izguve, izmantojot `__ ()` vai citas tulkošanas funkcijas, automātiski atgriež tekstu jaunizveidotajā lokalizācijā.
- Ja trūkst tulkojuma pašreizējai lokalizācijai datu bāzē, Laravel atgriezeniskā lokalizācijas mehānisms var atgriezt tulkojumu no noklusējuma lokalizācijas, ja vien tas nav skaidri atspējots [1] [8].
3. Modeļa līmeņa tulkojumi ar json krātuvi
- Vēl viena spatie pakete, laravel-translatable, ir paredzēta daiļrunīgiem modeļiem, lai atribūti padarītu tulkojamu.
- Tulkojumi tiek saglabāti kā JSON vienā datu bāzes kolonnā katram tulkojamajam atribūtam, bez papildu tabulām [3].
- Kad mainās lietotnes lokalizācija, piekļuve modeļa tulkojamam atribūtam automātiski atgriež pašreizējās lokalizācijas vērtību. Piemēram, `$ NewsItem-> Name` atgriezīs tulkojumu pašreizējā lietotnē iestatītajā lokalizācijā [4].
- Jūs varat skaidri iegūt vai iestatīt tulkojumus konkrētām vietām, izmantojot tādas metodes kā `gettranslation (atribūts, lokalizācija)` un `settranslation (atribūts, lokalizācija, vērtība)` [4].
4. Atskalpojumi un trūkstošie tulkojumi
- Spatie translatable Package atbalsta Fallback Locks, tāpēc, ja pašreizējam lokalizācijai trūkst tulkojuma, tas var atgriezt tulkojumu no citas lokalizācijas (parasti noklusējuma) [8].
- Šo uzvedību var kontrolēt, nododot Būla karogu uz “gettranslation”, lai atspējotu atgriezenisko saiti un iegūtu tukšu virkni, ja trūkst tulkojuma [8].
Kopsavilkums
Kad mainās lietotnes lokalizācija, Spatie tulkošanas pakotnes automātiski kalpo atbilstošajam tulkojumam no vai nu ar datu bāzi saglabātām valodas līnijām, vai ar JSON saglabātajiem modeļa atribūtiem, izmantojot Laravel lokalizācijas iestatījumu. Šī bezšuvju integrācija nodrošina, ka tulkošanas izguves funkcijas atgriež pareizo lokalizētu virkni, pamatojoties uz pašreizējo lietotņu lokalizāciju, un trūkst tulkojuma.
Šī pieeja ļauj dinamiskai lokalizācijas pārslēgšanai izpildlaikā un atbalsta tulkojumu saglabāšanu elastīgā veidā vai nu datu bāzes tabulās, vai JSON kolonnās, atkarībā no izmantotās paketes.
Atsauces: [1] [3] [4] [8]
Atsauces:
[1] https://github.com/spatie/laravel-translation-Loader
[2] https://spatie.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-translations
[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-translation-boader
[8] https://stackoverflow.com/questions/65252615/spatie-laravel-translatable-chows-the-default-locale-when-i-t-to-retrieve-