Choosing the language
enum
default:"DEVICE"
DEVICE uses the device language when it is one of the supported seven, and falls back
otherwise. Set an explicit language when your app already asks the user to choose one —
a flow in a different language from the screen that launched it is jarring.enum
default:"en"
Used when a string is missing in the resolved language.
boolean
default:"true"
Shows a language picker inside the flow. Worth keeping on for a broad consumer audience;
turn it off when your app already owns that choice.
Overriding strings
Keys are lowercase with underscores and are identical on Android and iOS, so a copy deck written once applies to both.Common keys
A few scanning and preview keys exist only on Android —
document_scan_feedback_glare,
document_scan_feedback_too_bright, document_scan_feedback_too_dark and
document_preview_unsupported. Setting them on iOS is harmless: unknown keys are ignored.Country-specific overrides
Before falling back to the plain key, the SDK looks for{key}_{country} in lowercase.
This lets you tune a single string for one market without forking your whole copy deck:
NATIONAL_ID is a DNI
in Argentina, a cédula in Colombia and an INE in Mexico. Users recognise the local name
and hesitate at the generic one.
Writing the copy
- Say what to do, not what went wrong. Move the document closer beats Image too far.
- Keep it short. These strings sit over a camera viewfinder, often read at arm’s length.
- Explain the selfie before it happens. Use
welcome_step_selfie_subtitle— users who are surprised by a face scan are the ones who abandon. - Test the longest language. German and Spanish strings run noticeably longer than English and are where layouts break first.

