This project is not covered by Drupal’s security advisory policy.
On a site using Paragraphs, Content Translation and
Content Moderation together, the list of Paragraphs on a page is copied to each
translation only once — when that translation is first created — and never updated again.
So when an editor adds a Paragraph to an English draft, German and French translators
cannot see it, and cannot add it themselves either, because the Paragraphs widget
offers no "add" button while translating. The new Paragraph only becomes translatable once the
English revision containing it has been published, which blocks translation work until the source
language goes live.
This module fixes that, and keeps each language independent while doing so.
Features
- Translators see new Paragraphs straight away. A Paragraph added to an
unpublished source draft appears on every translation screen immediately. - Each language gets its own draft. When the source language changes its
Paragraphs, every other language is given its own draft containing that change, so nobody edits
the revision the public is reading. - Translated text is never overwritten. Only Paragraphs a language does not yet
have are added. Deletions and reordering in the source language are followed through. - One save changes one language. Editing or publishing German cannot alter
English or French — not their text, not their Paragraphs, not their moderation state. - Publishing is per language. Publishing English leaves German and French
exactly as they were. - Paragraphs stay attached to the right revision. Older revisions still resolve
to the Paragraph revisions they were saved with, and each translated Paragraph records the
language it was translated from. - Per-language scheduling (optional, via Scheduler): each translation carries
its own publish date, and publishes its own revision.
Post-Installation
Two settings must be correct, or per-language drafts cannot work. The module checks both and
reports problems at /admin/reports/status:
- The Paragraph reference field must be translatable
(/admin/config/regional/content-language). Without this every language shares one list
of Paragraphs. - Paragraph types must be translation enabled, with their text fields
translatable, so a Paragraph translation can record the language it came from.
Then visit Configuration › Regional and language › Paragraphs translation workflow
and tick the content types to manage. The defaults are correct for a standard setup.
Two behaviours worth knowing: translators cannot add, remove or reorder Paragraphs — the
structure belongs to the source language, matching how the Paragraphs widget already behaves. And
publishing a translation publishes the Paragraphs it contains in that language, while they stay
hidden in the source language until it is published.
Additional Requirements
Drupal core: Node, Language, Content Translation, Content Moderation and Workflows.
Contributed: Paragraphs and
Entity Reference
Revisions.
Recommended modules/libraries
For per-language scheduled publishing and unpublishing, install
Scheduler and
Scheduler Content
Moderation Integration. Install both or neither: Scheduler on its own cannot move a moderated
entity between workflow states, so the integration stays switched off until both are present.
Project information
- Project categories: Content editing experience, Multilingual
- Ecosystem: Paragraphs
- Created by pankaj611 on , updated
This project is not covered by the security advisory policy.
Use at your own risk! It may have publicly disclosed vulnerabilities.
Releases
First public release. Per-language drafts for moderated Paragraph content.
