Translations

Overview

Translations let you publish the same article in several languages. Your workflow writes the original article as usual. When it finishes, Publish Owl creates one translated copy for each language you picked and publishes it just like any other article, with images, links, meta data and schema included.

Each translation is its own article. On the Jobs page it appears nested under the original. You can open, edit and re-publish it on its own; to refresh it, refresh the original and its translations follow.

Turning it on

  1. Open your workflow in the workflow editor and open the Translations settings.
  2. Turn translations on.
  3. Optionally set the Original language (the language your workflow writes in). Any target language that matches it is skipped. If you leave it empty, the original's language is detected automatically when it's first translated.
  4. Add your Target languages, for example German, French and Spanish.
  5. Save the workflow. From now on, every article it finishes is also published in those languages.

Translations start only after the original succeeds. If the original fails, no translations are made.

Where each language is published

Every target language has its own publishing options:

  • Publish to: the workflow's site (default) or another connected site. Use this when each language lives on its own site, for example example.de for German.
  • Status: the same as the workflow (default), draft, or publish.
  • Category ID: an optional category on the target site.

Translations use the original's scheduled date, so scheduled and drip-published articles keep their timing in every language.

Translate or write natively

Choose a Mode:

  • Translate the finished article (recommended): the finished original is translated piece by piece. Headings, images, tables and links stay exactly where they were. This is fast and costs much less than writing a new article.
  • Write a native article per language: the whole workflow runs again in each language, including research and writing steps. Use this when each market needs its own angle. It costs about as much as a full article per language.

Translation engine

  • AI model (default): translates with one of your AI providers. By default it uses the same provider and model as the last writing step in your workflow, and you can pick another one.
  • DeepL: needs a DeepL API key in Settings.
  • Google Translate: needs a Google Translate API key in Settings.

With DeepL or Google you can turn on Polish with AI after machine translation to let an AI model smooth out the wording afterwards.

Formality and glossary

Formality controls how the reader is addressed in languages that make the difference, for example Sie or du in German. Leave it on auto to follow the tone of the original. Add brand names, product names and other terms that must never be translated to the Glossary, one per line.

SEO and content

Meta title and description

By default the original's meta title and description are translated. You can choose to generate fresh ones in the target language instead. The focus keyword is translated too, and the URL slug follows your workflow's slug format using the translated title and keyword.

Internal links

  • Point to the translated version (default): each internal link is changed to the article in the same language. If that article doesn't exist yet, the link is removed and its text is kept. Only links to articles are changed; other links on your site (for example affiliate redirects, product or contact pages) are left as they are.
  • Keep original links: links still point to the original-language articles.
  • Remove all internal links.

If Internal Linking is on with inline links, translations also get new links to other articles already translated into the same language. They are never linked to articles in another language.

Images

Images are reused, and their alt text is translated (you can turn this off). If your featured image comes from an image template that shows the title, turn on Re-render template featured images with the translated title to get a featured image in each language. Other featured images are reused as they are.

Linking language versions (hreflang)

With Link translations in the CMS (hreflang) on (the default), Publish Owl tells your CMS that the articles are versions of each other, where the CMS supports it. Your site can then show a language switcher and the right hreflang tags.

PlatformWhat happens
WordPress Translations are linked through Polylang Pro. Linking uses Polylang's REST API, which is only available in Polylang Pro. The free Polylang plugin and WPML aren't supported: posts still publish, just unlinked, and the job log shows a "Translation linking" warning.
GitHub Pages (Hugo, Astro and others) Each file gets lang and translationKey in its front matter (YAML, TOML or JSON). You can also use the {{lang}} and {{translationKey}} variables in your file path or front matter template. Hugo reads a page's language from the file name suffix or the content folder, so your Hugo site needs a content folder per language; translationKey then links the versions.
Strapi Needs the i18n plugin enabled on the content type. On Strapi 5 the translation is added as a locale of the original's document. On Strapi 4 it is created as a linked localization.
Webhook, Make, n8n, Zapier The payload includes language, translationGroupId and a translations[] list, so your automation can link the versions itself.
Webflow, Shopify, Ghost, Wix, Blogger, Google Docs, Directify Translations are published as separate posts with no linking in the CMS.

Translating a single article

You don't need to change a workflow to translate one article. Open a finished article in the article editor and click Translate…. Pick the languages and, if you like, a site and status for them. Languages that already have a translation are skipped; use Re-translate on that version to update it instead.

A translated article shows a "Translated from" note at the top of the editor, with a switcher to jump between the language versions.

Keeping translations up to date

  • When an original is updated by Content Refresh, its translations are re-translated and their published posts are updated. Turn off Re-translate when the original is refreshed if you'd rather update them yourself.
  • If you edit the original by hand, its translations are flagged in the article editor with "The original changed after this was translated." Click Re-translate to bring that version up to date.

Credits and cost

Each translation is a separate article. On free credits, each translation uses one credit, so an article in English plus German and French uses three credits. If you run out of credits, the remaining languages are skipped and the job log says so.

Translations run on your own API keys, like everything else. Translating a finished article usually costs a fraction of writing one. Writing natively per language costs about as much as a full article per language.

Using Owlbert

You can ask Owlbert to do all of this in plain language:

  • "Write an article about home espresso machines in English and German."
  • "Turn on German and French translations for my coffee blog workflow, and publish the German ones to my German site."
  • "Translate my last article into Spanish."

API

The External API supports translations too: set translationConfig on a workflow, translate an article with POST /jobs/:id/translate, and list an article's language versions with GET /jobs/:id/translations.

Troubleshooting

A language was skipped

Languages are skipped when they match the original language, already have a translation, already have a translation in progress, when the chosen site isn't found, or when you're out of free credits. The original's job log lists the reason (except for languages that already have a translation).

A translation failed

Check the job log of the translated article. The most common causes are a missing API key for the chosen engine or provider, or a CMS error on the target site. Fix the cause and retry the translation from the Jobs page.

Language versions aren't linked on WordPress

Linking needs Polylang Pro with the target languages set up in Polylang. Look for a "Translation linking" warning in the job log. The posts themselves are published either way.

Was this helpful?