Spatie administrerer oversettelser i Laravel -applikasjoner ved å integrere med Laravels lokaliseringssystem og gi fleksible måter å lagre og hente oversettelser basert på appens nåværende sted.
hvordan spatie håndterer oversettelser når appen er endret
1. Oversettelseslagring og gjenfinning
-Spatie tilbyr en pakke som heter Laravel-Translation-Laster som tillater lagring av oversettelser i en database i stedet for bare språkfiler. Denne pakken erstatter Laravels standard oversettelsestjeneste med Spaties leverandør, slik at oversettelser kan hentes dynamisk fra databasen [1].
- Oversettelser lagres i en tabell (vanligvis `språk_lines`) der hver oppføring inneholder en gruppe (som" validering "), en nøkkel (som" påkrevd "), og et JSON -objekt som holder oversettelser for flere lokaliteter (f.eks. '' En '=>' Dette er et nødvendig felt ',' nl '=>' dit er Een Verplicht veld ''.
- Når du kaller Laravys `__ ()` -funksjon med en oversettelsesnøkkel, henter spaties laster oversettelsen for det gjeldende sted i applikasjonen. For eksempel, hvis applokalet er '' nl'`, `__ ('validering.Required')` returnerer den nederlandske oversettelsen fra databasen [1].
2. Lokalbytte
- Applokalet kan endres ved kjøretid ved å bruke Laravys `app ()-> setLocale ('locale_code')` metode.
- Når landstedet er endret, returnerer alle etterfølgende oversettelsesinnhenting via `__ ()` eller andre oversettelsesfunksjoner automatisk returnerer teksten i det nylig satte landskapet.
- Hvis det mangler en oversettelse for det nåværende sted i databasen, kan Laravys fallback -lokalitetsmekanisme returnere oversettelsen fra standardområdet, med mindre eksplisitt de er deaktivert [1] [8].
3. Oversettelser på modellnivå med JSON-lagring
- En annen spatie-pakke, Laravel-overlaterbar, er designet for veltalende modeller for å gjøre attributter oversettelige.
- Oversettelser lagres som JSON i en enkelt databasekolonne per oversettelig attributt, uten å trenge ekstra tabeller [3].
- Når applokalet endres, gir tilgang til et oversettbart attributt på modellen verdien for det nåværende lokaliteten automatisk. For eksempel vil `$ NewsItem-> name` returnere oversettelsen for det nåværende stedssettet i appen [4].
- Du kan eksplisitt få eller angi oversettelser for spesifikke lokaliteter ved å bruke metoder som `getRanslation (attributt, lokalitet)` og `setTranslation (attributt, lokalitet, verdi)` [4].
4. Fallback og manglende oversettelser
- Spaties oversettbare pakke støtter tilbakeslagsområder, så hvis en oversettelse mangler for dagens sted, kan den returnere oversettelsen fra et annet sted (vanligvis standard) [8].
- Denne oppførselen kan kontrolleres ved å føre et boolsk flagg til `getRanslation` for å deaktivere fallback og få en tom streng hvis oversettelsen mangler [8].
Sammendrag
Når applokalet endres, serverer Spaties oversettelsespakker automatisk den aktuelle oversettelsen fra enten database-lagrede språklinjer eller JSON-lagrede modellattributter, og utnytter Laravels stedsinnstilling. Denne sømløse integrasjonen sikrer at oversettelsesinnhentingsfunksjoner returnerer riktig lokal streng basert på det nåværende APP -lokaliteten, med tilbakeslagsmekanismer tilgjengelig hvis en oversettelse mangler.
Denne tilnærmingen tillater dynamisk lokalbytte ved kjøretid og støtter lagring av oversettelser på fleksible måter, enten i databasetabeller eller JSON -kolonner, avhengig av pakken som brukes.
Referanser: [1] [3] [4] [8]
Sitasjoner:
[1] https://github.com/spatie/laravel-translation-loader
[2] https://spatie.be/docs/laravel-translatable/v6/introduksjon
[3] https://github.com/spatie/laravel-translatable
[4] https://spatie.be/docs/laravel-translatable/v6/basic-usage/getting-and-tettings-translations
[5] https://filamentphp.com/plugins/filament-spatie-translatable
[6] https://github.com/filamentphp/filament/discussions/6913
[7] https://laraveldaily.com/lesson/multi-anguage-laravel/spatie-laravel-translation-loader
[8] https://stackoverflow.com/questions/65252615/spatie-laravel-translatable-shows-thefault-locale-when-i- try-to-retrieve-th