Add a language
Configure frontend locales and content localization, then review the data migration and links.
On this page
GoalLink to this section
Add Hungarian to an English site. Frontend routing, Payload content localization and Admin translations are independent choices.
1. Back up existing contentLink to this section
For a populated site, read Localizing an existing site before changing the locale contract. Rehearse on a database copy. Adding localization can change tables and the shape of stored field values.
2. Configure the canonical locale contractLink to this section
Use the setup connector to write the locale contract and supporting files:
systhema setup locales --locales en,hu --default-locale enReview the diff and every migration instruction the connector prints. Do not regard generated route files as a completed content translation.
The corresponding config shape is:
import { defineSysthemaLocales } from '@systhemaui/core'
// Merge this value into your existing config.locales.
export const locales = defineSysthemaLocales({
supported: ['en', 'hu'],
default: 'en',
routing: { localePrefix: 'always' },
})The Payload starter forwards systhemaConfig.locales through its plugin options. Keep one canonical contract rather than defining two different locale lists.
3. Choose content-field policyLink to this section
Review Field policy. The default policy is legacy; all localizes more fields and requires a reviewed back-fill for existing content. Do not change policy to fix one untranslated field without checking its database effect.
Per-locale publishing is enabled by default with content locales. Review each locale's draft and published state. See Per-locale publishing.
4. Translate and review navigationLink to this section
Translate page bodies, Header, Footer and SEO values that the chosen policy localizes. Use internal page references for CMS links. In code-owned routes, use the generated routing helpers so the logo and every internal link keep the locale.
Admin interface language is a separate setting. Enabling a content locale does not translate custom collection labels or field descriptions. Use Admin translations when those need translation.
5. Regenerate and verifyLink to this section
pnpm sync
pnpm exec tsc --noEmit
systhema doctorFollow the database migration plan before deploying. Inspect both locale URLs, canonical metadata and sitemap entries while signed out.
Check your workLink to this section
- Both locales resolve through the configured frontend routing.
- Editors can distinguish draft and published content per locale.
- Existing English content survived the migration.
- Logo, navigation and actions retain the current locale.
- Missing translations behave as intended.
See Multilingual sites for the three switches and launch checks.