Brandfine Docs
Concepts

Translation groups

How Brandfine ties locale variants of the same article together.

Every post has a translationGroupId. Posts in the same group are translations of one another. The cms uses this to:

  • Auto-link translations on MDX import (matching by canonicalSlug).
  • Surface "translations available" UI in the CMS.
  • Build hreflang alternates in the external API responses.

Two ways to identify a post

  • slug — per-locale URL slug. Unique within (workspace, locale). Used in the consumer URL: /services/visto-schengen (PT) vs /services/schengen-visa (EN).
  • canonicalSlug — stable cross-locale identifier. Shared by every translation of the same article. Drives the auto-linking on MDX import.

In the SDK

Navigation POST items return the full sibling array:

nav.items[0].post.locales
// [
//   { locale: 'en', slug: 'schengen-visa', title: 'Schengen Visa' },
//   { locale: 'pt', slug: 'visto-schengen', title: 'Visto Schengen' },
// ]

The SDK's resolveNavigation helper picks the right sibling for the active locale and falls back to the default locale's slug when a translation is missing.

On this page