string also accepts a LocaleMap — an object with locale code keys and translated string values. The platform picks the right value at runtime based on the active locale.
LocaleMap syntax
A plain string applies to all locales:en is used as the fallback.
Every string field supports LocaleMap
The following properties all acceptstring | LocaleMap:
title(root key)description(root key)sections[].titlefields[].labelfields[].placeholderfields[].min_label,fields[].max_label(forratingfields)options[].label(for selection fields)validators[].messagecompletion.titlecompletion.messagecompletion.button.labelcompletion.button.urlconnections[email].subjectconnections[email].body
Locale resolution — priority order
The active locale is determined in this order:?lang=URL query parameter — always wins- Browser’s
navigator.language localekey in the YAMLenas the final fallback
The locale root key
Setting locale in your YAML locks the form to a specific language. The platform auto-appends ?lang= to the URL to maintain locale consistency as the user moves between sections.
?lang= query parameter can still override the locale key — it takes the highest priority in the resolution chain.
Supported locale codes
en (English) and es (Spanish).
Templating and localization
LocaleMap values in email connections support Handlebars interpolation. Each locale string can contain{{data.fieldId}} variables:
Options localization
Selection fields (single_select, multiple_select, dropdown) use a structured option format when labels need to be translated:
value is locale-independent — it is what gets stored in submission.data. The label is what the user sees and supports LocaleMap.