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


Как используются переводы Spatie обрабатывают переводы, когда используются как база данных, так и языковые файлы


Spatie обрабатывает переводы как с помощью базы данных, так и с языковыми файлами, в основном через пакет Laravel-Translation-Loader, который легко интегрируется с нативной системой перевода Laravel.

Как это работает при использовании как базы данных, так и языковых файлов

- Пакет позволяет хранить переводы в базе данных, используя выделенную таблицу (`ranguage_lines`). Каждая запись перевода представлена ​​экземпляром модели «LanguageLine», который включает в себя:
- `Группа ': группа перевода (например,« валидация »или« auth »).
- `key`: ключ перевода в группе.
- `text`: перевод массива для различных локалов (например,« ['en' => 'Это необходимое поле', 'nl' => 'dit een verplicht veld'] `).

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

- Если перевод не найден в базе данных, он возвращается к традиционным языковым файлам, хранящимся в каталоге Laravelâ S `resources/Lang`.

- Это означает, что переводы в базе данных переопределяют языковые переводы, если оба существуют для одного и того же ключа и локали.

- Пакет поддерживает как групповые переводы (например, `valyation.required`) и JSON, используя специальное имя группы` '*' `для линий перевода JSON.

Дополнительные функции и поведение

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

- Это расширяется: вы можете добавить пользовательских поставщиков переводов (например, YAML, CSV), внедрив интерфейс пакета `` translationloader ', позволяя загружать переводы из других источников за пределами базы данных и языковых файлов.

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

Краткое содержание

Spatie's Translation Loader Package эффективно объединяет переводы, сохраняемые базами данных с нативными переводами на основе файлов 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-translation-loader
[6] https://packagist.org/packages/spatie/laravel-translation-loader
[7] https://freek.dev/593-a-laravel-package-to Store-language-lines-in-the-database
[8] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-translatable