Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hoe beheerst Spatie vertalingen wanneer de app -locale verandert


Hoe beheerst Spatie vertalingen wanneer de app -locale verandert


Spatie beheert vertalingen in Laravel -toepassingen door te integreren met het lokalisatiesysteem van Laravel en flexibele manieren te bieden om vertalingen op te slaan en op te halen op basis van de huidige locatie van de app.

Hoe spatie vertalingen omgaat wanneer de app -locatie verandert

1. Vertaling opslag en ophalen

-Spatie biedt een pakket met de naam Laravel-translation-loader waarmee vertalingen in een database kunnen worden opslaan in plaats van alleen taalbestanden. Dit pakket vervangt Laravel's standaard vertaalserviceprovider door de provider van Spatie, waardoor vertalingen dynamisch uit de database kunnen worden gehaald [1].
- Vertalingen worden opgeslagen in een tabel (meestal `talen_lines`) waarbij elk item een ​​groep (zoals" validatie ") bevat, een sleutel (zoals" vereist ") en een JSON -objectverwant voor meerdere locaties (bijv.` 'En' => 'Dit is een vereist veld', 'nl' => 'dit is een verplichs') [1 1] [1 1] [1 1.
- Wanneer u Laravel's `__ ()` functioneert met een vertaaltoets, haalt de lader van de spatie de vertaling op voor de huidige locatie die in de toepassing is ingesteld. Als de app -locatie bijvoorbeeld `'nl'`,` __ (' validation.recired ') is `retourneert de Nederlandse vertaling uit de database [1].

2. LOCALE SCHAKELEN

- De app-locatie kan tijdens runtime worden gewijzigd met behulp van Laravelâ s` App ()-> setLocale ('Locale_Code') `methode.
- Zodra de locale is gewijzigd, retourneren alle volgende vertaalrichtingen via `__ ()` of andere vertaalfuncties de tekst automatisch in de nieuw ingestelde locatie.
- Als een vertaling ontbreekt voor de huidige locatie in de database, kan het fallback -locale -mechanisme van Laravel de vertaling terugsturen van de standaardlocale, tenzij expliciet uitgeschakeld [1] [8].

3. Vertalingen op modelniveau met JSON-opslag

- Een ander spatiebeperking, Laravel-translateerbaar, is ontworpen voor welsprekende modellen om attributen vertaalbaar te maken.
- Vertalingen worden opgeslagen als JSON in een enkele databasekolom per vertaalbaar kenmerk, zonder extra tabellen nodig te hebben [3].
- Wanneer de app -locale verandert, retourneert toegang tot een vertaalbaar kenmerk op het model de waarde voor de huidige locatie automatisch. Bijvoorbeeld, `$ newsItem-> Name` retourneert de vertaling voor de huidige locatie die in de app is ingesteld [4].
- U kunt expliciet vertalingen krijgen of instellen voor specifieke locaties met methoden zoals `getTranLation (attribuut, locale)` en `setTranLation (attribuut, locale, waarde)` [4].

4. Fallback en ontbrekende vertalingen

- Het vertaalbare pakket van Spatie ondersteunt fallback -locaties, dus als een vertaling ontbreekt voor de huidige locatie, kan deze de vertaling terugsturen van een andere locatie (meestal de standaard) [8].
- Dit gedrag kan worden gecontroleerd door een Booleaanse vlag door te geven aan `GetTranslation` om Fallback uit te schakelen en een lege string te krijgen als de vertaling ontbreekt [8].

Samenvatting

Wanneer de app-locale verandert, dienen de vertaalpakketten van Spatie automatisch de juiste vertaling uit van database-opgeslagen taallijnen of JSON-opgeslagen modelattributen, met behulp van de locale instelling van Laravel. Deze naadloze integratie zorgt ervoor dat het ophalen van vertaalopname de juiste gelokaliseerde tekenreeks retourneert op basis van de huidige app -locatie, met fallback -mechanismen beschikbaar als er een vertaling ontbreekt.

Deze aanpak maakt het mogelijk om tijdens runtime dynamische locale te schakelen en ondersteunt het opslaan van vertalingen op flexibele manieren, hetzij in databasetabellen of JSON -kolommen, afhankelijk van het gebruikte pakket.

Referenties: [1] [3] [4] [8]

Citaten:
[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-spatie-translatable
[6] https://github.com/filamentphp/filament/discussions/6913
[7] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-translation-loader
[8] https://stackoverflow.com/questions/65252615/spatie-laravel-translatable-shows-the-default-local