Locale Groups & Translation

Learn how m18t links translated content with a locale group, how to create sibling translations, and how the group drives a correct push to localized Strapi.

What you'll learn

  • How m18t links translated versions of a piece together with a locale group.
  • How to create a sibling translation and keep them paired.
  • How the locale group drives a correct push to a localized Strapi CMS.

The concept: translation siblings

When you publish an article in English and then in Arabic, you don't want them treated as two unrelated posts. You want your site to know "these are the same article in two languages" so a reader clicking the language toggle lands on the right translation instead of a 404.

m18t handles this with a locale group — a shared ID that ties two or more content rows together as siblings. Each row keeps its own locale, body, slug, and SEO, but they share one group ID. When m18t pushes to a CMS that supports localization (Strapi v5 today), it uses that group to link the translations through the CMS's own localization API rather than uploading disconnected copies.

There's no "master" language. Siblings are equal — the group is just the thread that connects them.

How to translate a piece of content

  1. Open the content piece you want to translate (e.g. the English version).
  2. Go to the Localization tab.
  3. You'll see the Locale Group ID field. Two rows with the same Locale Group ID are linked as siblings. Use Generate New ID if the piece doesn't have a group yet.
  4. Under the linked variants, use the create-translation action for the locale you're missing — e.g. Create English Version or Create Arabic Version. m18t creates a new row in the target locale, carries over the same locale group, and opens it so you can write the translation.
  5. Write the translation and save.

Once both siblings exist and share the group, they show up in each other's Linked Variants list, and you can jump between them from the Localization tab.

Pushing localized content to Strapi

On the Publishing tab, the Push to CMS section shows a Localization Sync Status panel listing the current piece and each sibling, with whether each one has been pushed yet (and its CMS document ID once it has).

When you push, you can tick Sync current and all unsynced sibling locales to send the current piece plus any siblings that haven't been pushed, linking them in the CMS in the same operation. See Pushing to Your CMS for the full push flow.

Common variations

Changing a sibling's locale group. Edit the Locale Group ID on the Localization tab. Matching IDs is what makes two rows siblings; if they don't match, they aren't linked.

One language only. A piece doesn't need a sibling. If you only publish in one language, you can leave it ungrouped — locale groups only matter when you have translations to pair.

FAQ

Why aren't my translations linking in Strapi? The Strapi collection type must have i18n localization enabled in Strapi's Content-Type Builder. If localization is off on that collection, Strapi rejects the linking payload. Confirm your Strapi connection and that the target collection is localized.

Do the two languages need the same slug? No. Each sibling keeps its own slug and SEO. The locale group, not the slug, is what links them.

Which CMS platforms support linked translations? Strapi v5 is the only native CMS today, and its localization is handled correctly. Other CMS vendors are roadmap — see Pushing to Your CMS.

What happens if I push one sibling but not the other? The Localization Sync Status panel will show one as synced and the other as not. Use the "Sync current and all unsynced sibling locales" checkbox to catch up the rest on your next push.

What's next

Was this article helpful?