Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak spravuje Spatie překlady, když se změní národní prostředí


Jak spravuje Spatie překlady, když se změní národní prostředí


Spatie spravuje překlady v aplikacích Laravel integrací s lokalizačním systémem Laravel a poskytuje flexibilní způsoby ukládání a načítání překladů na základě aktuálního národního prostředí aplikace.

Jak Spatie zpracovává překlady, když se změní národní prostředí

1. Úložiště a vyhledávání překladu

-Spatie nabízí balíček s názvem Laravel-Translation-Loader, který umožňuje ukládání překladů v databázi místo pouhých jazykových souborů. Tento balíček nahrazuje výchozí poskytovatele překladových služeb Laravel poskytovatelem Spatie, což umožňuje dynamicky překlady překladů z databáze [1].
- Překlady jsou uloženy v tabulce (obvykle `jazyk_lines`), kde každá položka obsahuje skupinu (jako„ ověření “), klíč (jako„ požadovaný “) a překlady JSON objektu pro více lokality (např.` 'En' => 'Toto je požadované pole', 'nl' => 'DIT je een Verdplicht samel'`) [1].
- Když voláte funkci Laravel S `__ ()` s překladovým klíčem, načte Spatie s překladem pro aktuální národní prostředí nastavené v aplikaci. Například, pokud je národní prostředí `'nl'`,` __ (' validation.Required ') `Vrátí nizozemský překlad z databáze [1].

2. Přepínání národního prostředí

- Národní prostředí lze změnit za běhu pomocí metody Laravel S `App ()-> Setlocale ('Locale_Code')`.
- Po změně umístění, všechna následný překlad získávání prostřednictvím `__ ()` nebo jiných překladových funkcí automaticky vrátí text v nově nastaveném národním prostředí.
- Pokud pro aktuální národní prostředí v databázi chybí překlad, může mechanismus lokality Laravel vrátit překlad z výchozího národního prostředí, pokud není explicitně deaktivován [1] [8].

3. Překlady na úrovni modelu s úložištěm JSON

- Další balíček Spatie, Laravel-Translatable, je navržen pro výmluvné modely, aby byly atributy překládatelné.
- Překlady jsou uloženy jako JSON v jednom databázovém sloupci na překladatelný atribut, aniž by bylo nutné další tabulky [3].
- Když se změní národní prostředí, přístup k překladatelnému atributu v modelu automaticky vrátí hodnotu pro aktuální národní prostředí. Například `$ NewSItem-> Name` vrátí překlad pro aktuální národní prostředí v aplikaci [4].
- Můžete explicitně získat nebo nastavit překlady pro konkrétní lokalita pomocí metod jako `getTranslation (Atribut, locale)` a `setTranslation (atribut, národní prostředí, hodnota)` 4].

4. Zálohování a chybějící překlady

- Spatie s překladatelným balíčkem podporuje lokality zálohování, takže pokud chybí překlad pro aktuální národní prostředí, může vrátit překlad z jiného národního prostředí (obvykle z výchozí) [8].
- Toto chování může být ovládáno předáním booleovské vlajky na „GetTranslation“, aby bylo možné zakázat zálohu a získat prázdný řetězec, pokud překlad chybí [8].

Shrnutí

Když se změní umístění aplikace, Spatieho překlady automaticky slouží vhodnému překladu z jazykových linek uložených databází nebo atributy uložených JSON, které využívají nastavení národního prostředí Laravel. Tato bezproblémová integrace zajišťuje, že funkce vyhledávání překladu vrací správný lokalizovaný řetězec na základě aktuálního národního prostředí, s dostupnými mechanismy založení, pokud chybí překlad.

Tento přístup umožňuje přepínání dynamického národního prostředí za běhu a podporuje skladování překladů flexibilním způsobem, ať už v databázových tabulkách nebo sloupcích JSON, v závislosti na použitém balíčku.

Reference: [1] [3] [4] [8]

Citace:
[1] https://github.com/spatie/laravel-cranslation-loader
[2] https://spatie.be/docs/laravel-cranslatable/v6/introduction
[3] https://github.com/spatie/laravel-nranslatable
[4] https://spatie.be/docs/laravel-cranslatable/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-cranslation-loader
[8] https://stackoverflow.com/questions/65252615/spatie-laravel-translatable-tokale-locale-when-itry-to-retrieve-th