Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Як Spatie обробляє переклади, коли використовуються як база даних, так і мовні файли


Як Spatie обробляє переклади, коли використовуються як база даних, так і мовні файли


Spatie обробляє переклади як з базами даних, так і з мовними файлами, насамперед через свій пакет Laravel-Translation-навантажувача, який безперешкодно інтегрується з системою трансляції Laravel.

Як це працює при використанні як бази даних, так і мовних файлів

- Пакет дозволяє зберігати переклади в базі даних за допомогою спеціалізованої таблиці (`language_lines`). Кожен запис перекладу представлений екземпляром моделі `LanguageLine, що включає:
- `Група ': група перекладу (наприклад," перевірка "або" auth ").
- `Ключ`: Ключ перекладу в групі.
- `text`: масив, що містить переклади для різних локалів (наприклад,` ['en' => 'Це необхідне поле', 'nl' => 'dit - це een verplicht veld'] `).

- Коли ви запитуєте переклад за допомогою звичайних функцій перекладу Laravel, таких як `trans ()` або `__ ()`, пакет спочатку перевіряє базу даних на переклад. Якщо він знайде відповідний запис, він повертає версію бази даних.

- Якщо переклад не знайдено в базі даних, він повертається до традиційних мовних файлів, що зберігаються в каталозі Resources/lang` Laravel.

- Це означає, що переклади баз даних перекривають мовні переклади, якщо обидва існують для одного і того ж ключа та локалі.

- Пакет підтримує обидва групові переклади (наприклад, `realidation.required`) та json переклади, використовуючи спеціальну назву групи` '*' `для ліній перекладу json.

Додаткові функції та поведінка

- Пакет кеші групи перекладів для оптимізації продуктивності, зменшення запитів бази даних на повторних запитах перекладу. Кеш недійсне, коли переклади створюються, оновлюються або видалені.

- Це розширюється: Ви можете додати власні постачальники перекладу (наприклад, YAML, CSV), впровадивши інтерфейс пакету `` translationLoader`, що дозволяє завантажувати переклади з інших джерел поза базами даних та мовних файлів.

- Ви можете продовжувати використовувати помічники перекладу Laravel за замовчуванням та директиви лез (`@lang`,` trans () `,` __ () `) без модифікації.

Резюме

Пакет Spatie's переклад для трансляційного завантажувача фактично об'єднує переклади, що зберігаються на базі даних, з нативними перекладами на основі файлів Laravel шляхом пріоритетності записів бази даних. Це дозволяє динамічним редагуванням перекладів через інтерфейс користувача, що підтримується базою даних, зберігаючи резервні файли статичної мови. Інтеграція є плавною, що вимагає мінімальних змін до існуючих дзвінків з перекладом, і пропонує кешування та розширення для випадків вдосконаленого використання [1] [3] [5] [6] [7].

Цитати:
[1] https://github.com/spatie/laravel-translation-loader
[2] https://spatie.be/docs/laravel-translatable/v6/introduction
[3] https://laravel-news.com/translation-loader-package
[4] https://github.com/spatie/laravel-translatable
[5] https://www.laravelblogs.com/courses/multi-language-laravel/spatie-laravel-ranslation-loader
[6] https://packagist.org/packages/spatie/laravel-translation-loader
[7] https://freek.dev/593--laravel-package-to-store language-lines-in-the-database
[8] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-ranslatable