Languages and translation
Add app languages, copy existing text, translate it, and choose what workers see.
Commcare Nova keeps worker-facing app content in a language catalog. One language is the source used while the app is designed, and one is the default workers see when they first open the app. They may be different.
Use the language selector in the Builder header to change the language shown by the structure tree, editing canvas, case workspace, and Preview. The selected language stays in the URL, so reloads, back and forward navigation, and shared Builder links keep the same view. Nova's own buttons and authoring guidance do not change language with the worker app.
Add a language without starting from blank fields
Open App setup → Languages, then choose Add language. Search for the new language and choose an existing language under Copy text from. Nova copies every currently effective worker-facing phrase into the new language in one change. You can then translate those values without leaving blank labels throughout the app.
Search for the language by its own name or its English name; the picker covers every individual living language in the ISO 639 standard, around seven thousand. A group name such as Chinese or Arabic is not itself a choosable language: the picker explains the group and lists its member languages as choices, so the app always records the one language workers actually speak.
When a language is customarily written in more than one writing system, the picker asks which one before the language can be added. Mandarin Chinese, for example, is added as Simplified or Traditional; there is no unspecified option, because the app's text has to render in exactly one of them. When a language's conventions differ by country, a regional conventions choice appears as well. It is always skippable: the general option targets the language as spoken internationally, and a country choice such as Mexico tailors the app to that country's conventions.
The language's worker-facing name, its name in its own language, and its left-to-right or right-to-left direction follow from the choice itself and are never edited per app. No language code appears anywhere in the Builder; the Builder URL carries a technical tag for the selected language so links and reloads keep the same view, but every visible surface shows the language's name. Manual editing, copying, Preview, export, and CommCare HQ upload do not depend on whether Nova's AI can translate that language.
Automatic translation is a separate launch capability. Nova offers it in every direction between two distinct members of its checked-in 57-language launch set. Availability depends only on the language itself, never on its writing system or regional conventions, so converting one writing system to another is not offered as translation. Languages outside the set remain fully supported for manual authoring, copy, Preview, and export.
The 57-language set is a product launch allowlist, not a provider-published support list or a claim that bilingual reviewers have certified all 3,192 directions. Every machine translation starts as Needs review, and program terminology, meaning, and naturalness still need a person who knows the target language.
For an available pair, an initial chat build may request Translate with Nova. Nova first builds every source-language workflow, then translates every phrase in the finished app before validating and completing the build. Machine-authored values always start as Needs review; a translation failure fails that requested build instead of silently releasing copied source text as though it were translated.
Review all translated content
The Languages workspace is the complete review surface. It shows source and target values together, groups them by where they appear, and lets you search or filter by status:
- Ready means the target was reviewed against the current source.
- Needs review means the value was copied or machine-authored, or has not yet been confirmed by a person.
- Missing means Nova currently falls back to the source value.
- Out of date means the source changed after that target value was written; the running app uses the current source until the target is reviewed or replaced.
A correct translation sometimes is identical to its source, such as a product name or acronym. A Missing row can be saved without changing its text; Nova then stores that value explicitly as reviewed instead of leaving it permanently Missing.
Choose Open in Builder to move from a translation row to its owning module, form, field, Results, or Search screen. When a target language is selected in the ordinary Builder, editing worker-facing text writes that target language. Saved field IDs, case-property names, and other structural identifiers never change with the language selector.
Labels containing two languages in one existing text value remain literal text. Nova does not guess where one language ends and another begins; add real languages and clean those values up explicitly.
References and runtime fallback
Some labels contain references to fields or other app values. The translation editor represents those parts as protected tokens. They can move to a natural place in the translated sentence, but cannot be deleted, duplicated, or changed into plain text. Prefix a token-looking literal or a literal backslash with a backslash so it remains ordinary text rather than becoming structure. Save stays disabled while the visible token form is invalid. If an inline Builder edit is rejected by the same guardrail, the draft remains open with the reason rather than disappearing.
Every configured language always has a complete runtime projection. A missing or out-of-date target uses the current source value, so the app remains valid while translation is in progress. Review status is guidance rather than a separate draft or release gate.
What is not counted as translated
A few parts of an app handle languages their own way, so the Languages workspace lists them under Good to know instead of counting them as phrases to translate:
- lookup table choices come from shared Project data rather than app text;
- CommCare Connect stores learn and delivery names and descriptions in a single language;
- images, audio, video, and other files are currently the same in every language; and
- messages sent by automations follow the recipient's language settings rather than the language chosen in the Builder.
These notes do not block adding a language. They keep the coverage count from claiming those surfaces were translated when their data or wire behavior does not support that claim.