Get translation draft
translationDraft_getRead the resolved translation draft for one (form, language) pair. Returns every source key with its current status:
missing: no translation stored
outdated: source changed since translation was written, or the source/translation mentions a field that no longer exists (a {{variable}} naming an unknown id)
current: translation matches current source
suggested: staged by translationDraft_update and not yet accepted by a person in the editor — every write from this tool lands here and stays here after publish, so judge completeness by missing/outdated being 0, not by current
Keys cover form questions/content (block_<id>.*) AND customized respondent notification emails — confirmation + reminder subject/body as email.confirmation.* / email.reminder.*. Those emails are translatable content here, not just a formSettings field; translate them through this tool, never by overwriting the source via formSettings_update. An email.* key only appears once the author has customized that email's text (default-template emails have no key yet); this is independent of publish state — the form does NOT need to be published for the key to appear.
Self-notification emails (the owner/team selfNotification* fields) are NOT translatable and never produce a key — they have a single recipient, so author them directly in the desired language via formSettings_update rather than looking for them here.
Pass status to filter to one bucket — useful for "show me all missing" prompts. Source fragments and stored values are JSON-stringified Descendant[].
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| formId | Yes | ||
| status | No | ||
| language | Yes |