Consistency
One glossary and one translation memory across CMS pages and app models. A term is translated the same way everywhere, in every language.
Early access · django CMS · Wagtail · parler · modeltranslation
Machine translation is solved. Keeping five languages consistent, current and reviewed is not. Ponyglot is one translation layer for your CMS pages and your app models — with a shared glossary, translation memory and delta sync.
| Segment | DE | FR | IT |
|---|---|---|---|
| Headline | ✓ | ✓ | ✓ |
| Plan intro | stale | stale | stale |
| Feature list · 4 | ✓ | review | ✓ |
| FAQ · Billing | stale | ✓ | stale |
A “translate this page” button exists for every CMS. The pain starts the week after: the English page changes, the blog lives in another app, the product catalog uses a third library, and “cart” is translated three different ways.
One glossary and one translation memory across CMS pages and app models. A term is translated the same way everywhere, in every language.
Delta sync tracks every source segment. When the English page changes, you see exactly which sentences are stale in French and Italian — and retranslate only those.
Nothing is published automatically. CMS content lands as drafts, model content as suggestions with a diff. Editors approve.
django CMS, Wagtail, django-parler and django-modeltranslation in one product — so the blog, the product catalog and the pages finally speak the same language.
Open-source, BSD-licensed, one pip install per stack. It finds your
translatable content — plugins, StreamField blocks, parler and modeltranslation fields.
Each piece of source text gets a stable ID and a fingerprint. Change the source and every target language knows it's stale.
DeepL or LLM, guided by your glossary, translation memory and brand voice. QA checks links, placeholders, length and HTML.
Results land as versioned drafts or model suggestions with a diff. Nothing goes live without a human.
# settings.py
INSTALLED_APPS += [
"ponyglot",
"ponyglot.contrib.djangocms", # or .wagtail
"ponyglot.contrib.parler", # or .modeltranslation
]
PONYGLOT = {
"API_KEY": env("PONYGLOT_API_KEY"), # or your own DeepL / LLM key
"SOURCE_LANGUAGE": "en",
}
Planned API — subject to change during early access.
Pages, blog, product catalog and app content share one glossary and one translation memory.
ponyglot-djangocms
Pages, placeholders and plugin trees — structure-aware, lands as versioned drafts.
ponyglot-wagtail
StreamField and rich text, plugs into wagtail-localize as a translation backend.
ponyglot-parler
Translated models like djangocms-blog, catalogs and app content.
ponyglot-modeltranslation
Per-language columns, including wagtail-modeltranslation projects.
Planned launch pricing. Early-access pilots get a discount for the first three months.
€0
bring your own key
€79
per site / month
€299
per month, 10 sites
€49
per month, incl. 1M characters · then ~€15 per 1M characters
€199
per month, incl. 6M characters · then ~€10 per 1M characters
Prices excl. VAT. Translation memory hits don't count towards your characters.
The connectors are BSD-licensed and work on their own with your own DeepL or LLM key. The hosted service adds translation memory, glossary, delta sync, review and QA.
The hosted service runs in the EU. Content is only sent to the translation engines you enable.
No — on Wagtail, Ponyglot plugs into wagtail-localize as a translation backend and adds glossary, memory and delta sync on top of your existing workflow.
No. CMS content becomes a draft, model content a suggestion. An editor approves it.
We're onboarding a small group of agencies and product teams running multilingual django CMS, Wagtail or Django sites.