Multilang
Локализация документов для Payload CMS по модели Polylang: каждая языковая версия отдельный документ.
Установка
pnpm add @roxxel/payload-multilang Описание
Плагин добавляет в Payload CMS модель переводов, где каждая языковая версия документа отдельная независимая запись, связанная с другими через скрытые поля метаданных. Это альтернатива встроенной в Payload локализации на уровне полей. Оба механизма не работают вместе: если `config.localization` включен, плагин выбрасывает ошибку при инициализации конфигурации. Поэтому нужно держать `localization: false` и размещать переведенный текст прямо в каждом языковом документе. Коллекции и globals подключаются в `payload.config.ts`. Массив `languages` описывает каждый язык: `code`, `name`, `locale`, `flagLabel`, `direction` (ltr или rtl), признак `isDefault`, `order`, `active` и `id`. В переведенные коллекции добавляются скрытые поля `_multilangLanguage`, `_multilangGroup` и `_multilangMeta` (имена можно переопределить). В админке появляется селектор языка в сайдбаре документа, вью `Translations` для создания и связывания переводов, статус перевода по каждому языку, фильтр по языку и колонки-шорткаты в списке коллекции. У globals на каждую языковую вкладку отдельный таб. Поведение переводов настраивается через опции коллекции. `synchronizedFields` держит top-level поля (например, автора или обложку) одинаковыми во всей группе переводов: при изменении в одном документе обновляются связанные. Опция `duplicate` (по умолчанию true) копирует совместимые поля источника в новый перевод, а `duplicateExcludeFields` исключает указанные поля из копирования. Плагин также добавляет кастомные эндпоинты в переведенные коллекции для действий с переводами. Helper-функции покрывают типовые задачи приложения. `withLanguage` фильтрует запросы Local API по языку. `getDocumentTranslationsWithPayload` и `getDocumentTranslationWithPayload` возвращают группу переводов или версию одного языка с проверкой прав доступа в рамках запроса. `findGlobalByLanguageWithPayload` и `updateGlobalByLanguageWithPayload` читают и пишут один язык global, не затрагивая остальные. `localizedSlugQuery` и `getMultilangDocumentLanguage` помогают с роутингом на фронтенде и URL превью в админке. Globals хранят значения всех языков в одном singleton-документе, а helpers на чтение и запись работают с конкретным языком. Поскольку переводы это отдельные документы, уникальность slug нужно обрабатывать вручную. Глобальный `unique: true` работает, только если у каждого языка свой slug. В остальных случаях уникальность нужно ограничивать составным индексом по языку и slug. Плагин совместим с Payload 3.x (peer dependency `payload ^3.84.1`), лицензия MIT.
О пакете
- Имя пакета
@roxxel/payload-multilang- Последняя версия
0.0.12- Размер
- 723 кБ
- Лицензия
- MIT
- Загрузок в неделю
- 568
- Последняя публикация
- 5 июл. 2026 г.
Похожие плагины
Ещё в категории «Контент»Sitemap
Строит sitemap.xml из коллекций Payload и статических страниц и хранит файлы в любом storage adapter.
Structured Markdown
Обеспечивает структурированный Markdown-редактирование для Payload CMS с расширенными функциями.
AI Plugin
Интегрирует функции ИИ для генерации контента в Payload CMS.
onpage for TanStack Start
Подключает плагин payload-onpage к сайту на TanStack Start, чтобы редакторы правили контент и смотрели черновики прямо на странице.
On-Page Editing
Встраивает редактирование Payload-страниц прямо в Next.js-фронтенд, сохраняет правки как черновики и выдаёт ссылки для предпросмотра.
Lexical Inline Rich Text Editor
Добавляет редактирование полей richText Payload прямо на странице: клик по тексту открывает редактор без перехода в админку.