TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #4732 2.88K
Построение полиморфной транслируемой модели в Laravel с автозагрузкой переводов

Здесь описывается, как настроить систему перевода в Laravel, используя JSON-колонки для хранения переводов, что делает управление многоязычным контентом более эффективным.

Вместо того чтобы хранить каждый перевод в отдельной строке базы данных, можно использовать JSON-колонку, в которой все переводы для одного элемента будут храниться вместе. Это упрощает как управление данными, так и их извлечение.

Шаги по реализации:

✅Создание таблицы переводов:
Если таблица для переводов еще не существует, создается новая. В этой таблице будут храниться переводы в формате JSON, а также информация о языке перевода, типе и идентификаторе связанной модели (например, пост или продукт).

✅Запуск миграции:
Миграция применяется к базе данных, чтобы создать таблицу с нужной структурой.

✅Создание модели для переводов:
Создается модель для управления переводами. Эта модель описывает полиморфную связь с другими моделями, что позволяет использовать переводы для различных типов данных.

✅Создание трейта для перевода:
Для удобства работы с переводами создается трейт, который автоматически загружает переведенный контент в зависимости от выбранного языка. Если перевода для текущего языка нет, используется резервный перевод на языке по умолчанию.

✅Применение трейта к моделям:
Трейт добавляется к любой модели, для которой требуется поддержка перевода, например, к модели поста.

✅Добавление и получение переведенных данных:
Переводы можно добавлять и получать через методы модели. При этом учитывается текущая локаль, и если перевода для неё нет, используется перевод на языке по умолчанию.

✅Отображение переведенного контента в шаблонах:
В шаблонах Laravel (Blade) переведенный контент отображается как обычные атрибуты модели, что делает работу с многоязычным контентом простой и интуитивно понятной.
DEV Community Building a Polymorphic Translatable Model in Laravel with Autoloaded Translations When handling multilingual content, it’s often more efficient to store translations in a JSON column...
  • 🥱 3
  • 🤔 1
  • 😢 1
More from @phpproglib
  1. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  2. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  3. Sep 30, 2026🐸 Библиотека пхпшника
  4. Sep 29, 2026💡 Laravel-фича, которая спасает тесты от случайных запросов Http::preventStrayRequests()…
  5. Sep 28, 2026🔐 ramsey/uuid — UUID без самописного кода Библиотека помогает генерировать, парсить и вал…
  6. Sep 28, 2026🤔 Что выведет код? ❤️ — 1 🔥 — 2 👍 — 12 👾 — Fatal error 👇 Правильный ответ (нажми, что…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →