Skip to content

Labels override

Every string the renderer shows — buttons, validation messages, calendar labels, upload notices — can be overridden per embed via the labels attribute, which takes a JSON object:

<forms-engine
public-id="q_a1b2c3d4e5"
api-base="https://forms.your-domain.com"
labels='{"finish":"Enviar","requiredError":"Este campo es obligatorio."}'>
</forms-engine>

This is a strings override, not internationalization: question prompts, options, and section titles come from the questionnaire itself and are single-language per questionnaire — the override localizes the renderer’s chrome around them.

How merging works:

  • Keys you supply replace the built-in English; every key you don’t supply keeps its English default — partial overrides are fine.
  • Unknown keys and non-string values are ignored silently.
  • Unparseable JSON logs a console warning and falls back to all defaults — a typo can’t blank the UI.
  • Some strings interpolate parameters in {braces} — keep the placeholder in your replacement (e.g. "textMaxLengthError": "Máximo {max} caracteres.").
Key Default
next Next
back Back
finish Finish
finishing Submitting…
loading Loading…
loadErrorTitle Something went wrong
loadErrorNotFound This questionnaire is not available.
loadErrorGeneric The questionnaire could not be loaded.
emptyState There is nothing to fill in right now.
completionTitle Thank you!
completionMessage Your response has been submitted.
savingError Your answers aren’t saving right now. We’ll keep trying — please don’t close this page.
requiredError This question is required.
unknownTypePlaceholder This question requires a newer version of the form component.
alreadySubmittedMessage You’ve already submitted this form.
refMissingError This form is misconfigured: an external reference is required.
attentionOne 1 question needs attention before continuing.
attentionMany {n} questions need attention before continuing.
stepsNavLabel Steps
tabsNavLabel Sections of this step
Key Default
textMaxLengthError Please use at most {max} characters.
formatErrorEmail Enter a valid email address.
formatErrorPhone Enter a valid phone number.
formatErrorDate Enter a valid date (YYYY-MM-DD).
dateMinError The date must be on or after {min}.
dateMaxError The date must be on or before {max}.
datePastError The date cannot be in the past.
dateFutureError The date cannot be in the future.
numberInvalidError Enter a number.
numberMinError The value must be at least {min}.
numberMaxError The value must be at most {max}.
numberWholeError Enter a whole number.
numberDecimalsError Use at most {n} decimal places.
addressInvalidError Enter an address.
zipFormatError Enter a valid ZIP code (12345 or 12345-6789).
uploadInvalidError Upload a file.
Key Default
checkboxMaxHint Select up to {n}.
dropdownPlaceholder Select…
dropdownSearchLabel Search options
dropdownSearchPlaceholder Type to filter…
dropdownNoMatches No matches
dropdownClearLabel Clear selection
Key Default
datePlaceholder YYYY-MM-DD
dateOpenCalendarLabel Open calendar
dateDialogLabel Choose a date
datePrevMonthLabel Previous month
dateNextMonthLabel Next month
dateMonthNames January,February,…,December — comma-separated, January first
dateWeekdayNames Su,Mo,Tu,We,Th,Fr,Sa — comma-separated, Sunday first
Key Default
addressCountry Country
addressLine1 Street address
addressLine2 Address line 2
addressCity City
addressState State / Province / Region
addressStateUs State
addressPostalCode Postal code
addressZipCode ZIP code
addressCountryPlaceholder Select a country…
addressStatePlaceholder Select a state…
addressCountrySearchLabel Search countries
addressStateSearchLabel Search states
Key Default
uploadPrompt Drag & drop or click to browse
uploadLimitReached File limit reached
uploadSingleAttached A file is already attached — remove it first.
uploadMaxFilesNotice Up to {n} files are allowed.
uploadSurplusNotice Only {n} more can be added — the rest were skipped.
uploadTypeNotAccepted This file type isn’t accepted. Allowed: {extensions}.
uploadTooLarge This file is larger than the {max} MB limit.
uploadFailed The upload failed.
uploadRetry Retry
uploadWaitToContinue Waiting for the upload to finish.
uploadRemoveLabel Remove {name}
uploadCancelLabel Cancel uploading {name}
uploadDismissLabel Dismiss {name}
uploadUploadingLabel Uploading {name}
uploadPreviewTag preview — not uploaded
uploadSummaryNoTypes No file types configured
uploadSummaryOneFile 1 file
uploadSummaryManyFiles up to {n} files
uploadSummaryEach {n} MB each

That’s the complete catalog — 74 keys. If a string appears in the UI that no key covers, that’s a bug worth reporting.

One wrapper note: the React and Angular wrappers don’t expose a labels prop — to use overrides there, use the web component directly (both wrappers are thin layers over it). See React and Angular.