Control Panel & Admin

Translating Forms Across Craft Sites

You can use the same contact form on English and French sites, with labels and messages in each language. Formie shares the field layout across sites and lets you change the wording for each one. This walkthrough creates the English defaults, adds French translations in the form builder and checks what visitors see.

Prerequisites

Two Separate Concerns

Keep these distinct:

ConcernQuestionWhere to configure
Site availabilityShould this form exist on this site?Form group Site Policy
Content translationWhat text should visitors see?Form builder site switcher

A form can be available on English and French with translated labels. Or available on one regional site only with no translations needed.

Fields, handles, conditions and integrations are shared across sites. Adding a field on the French site adds it to the English site too; changing its French label affects only French.

Step 1 — Scope the Form to the Right Sites

Create or assign a form group with the correct Enabled Sites and Site Propagation before authors build content.

Example — global contact form on EN and FR:

  1. Group Global Forms with both sites enabled
  2. Propagation: All enabled sites
  3. Create the form on the English (source) site

Example — Australia-only form:

  1. Group Australia Forms with only Australia enabled
  2. Create the form while viewing the Australia site in the CP

Ungrouped forms are treated as available on all sites you can edit.

Step 2 — Write Default Content on the Source Site

Each form has a source site — where it was created. That site holds default translatable content.

  1. Switch the CP to the source site (usually your primary English site)
  2. Open the contact form
  3. Set title Contact us, field label Your name, success message, button labels
  4. Save

Structural work (adding fields, conditions, integrations) updates the shared form regardless of which site you are viewing when you save.

Step 3 — Add French Overrides

  1. Use the site switcher (globe icon) in the form builder breadcrumb
  2. Select French
  3. Change title to Contactez-nous, field label to Votre nom, and other French copy
  4. Save

These changes apply only to the French site. The English defaults stay unchanged, and any text you leave unchanged on French continues to use them.

Translation icons beside field labels indicate overridable values. On the source site you edit the default; on other sites you edit overrides.

Step 4 — Translate Nested and Option Fields

Name, Address, Group, Repeater — child field labels translate the same way as top-level fields. Override only the children that change.

Dropdown, radio, checkbox — override option labels and values per site when both need to differ. Leave unchanged options inherited from the source site.

Page settings — submit, back, and save button labels on each page are translatable.

Form messages — error, success, limit, and scheduling messages support per-site overrides.

Step 5 — Verify Front-End Rendering

No extra template code is required. When you render for a site, Formie merges overrides automatically:

{{ craft.formie.renderForm('contactForm') }}

This applies to:

  • Twig rendering
  • GraphQL and headless packages (siteId, locale props)
  • React/Vue bootstrap

Open the form on both sites. Confirm that French shows Contactez-nous and Votre nom, while English still shows Contact us and Your name. Submit a test on each site and check the success message. The saved submission’s siteId identifies the site it came from.

Step 6 — What Not to Put in Translation Files

Form builder content does not belong in translations/*/formie.php:

// Don’t translate form builder copy here — use CP site overrides instead
'Your name' => 'Votre nom',
'Contact us' => 'Contactez-nous',

Keep formie.php for Formie-owned UI strings only:

// Plugin UI strings
'{label} cannot be blank.' => '…',
'(optional)' => '…',

See Static Translations for translating built-in messages and project strings.

Step 7 — Notifications

Notification subject and body can be edited per site in the builder, with overrides stored alongside other translation data.

Many teams prefer instead:

  • Separate notifications with conditions per site or language
  • Variables in one notification ({site:name}, and so on)

See Multi-site notification content.

When You Need Different Layouts per Site

Site overrides are for different text on the same form, not different field sets.

For radically different forms:

  • Separate forms in groups scoped to the right sites
  • Conditions to show/hide fields based on site variables

Troubleshooting

French site shows English labels

Add French site overrides in the builder — not entries in formie.php.

Two English sites need different labels

Use CP site overrides. A single translations/en/formie.php cannot distinguish Craft sites.

Field added on French site appeared on English too

Fields and layout are shared across sites. Wording and whether an existing field is required can differ per site.