Skip to content

Translation tool

The translation tool shows every translatable field in a course on one page, side by side in two languages. It lives in the editor under Course contentTranslation tool.

INFO

The tool is currently in Beta.

Layout

When you open the tool, the full course content is loaded and grouped into collapsible sections — sections with no content are hidden:

  • Course Title — the course's main title.
  • Achievements — translated achievement titles.
  • Start Screen — the introduction text shown before the course starts.
  • Table of Contents — every TOC entry, including nested ones.
  • Modules — one block per module, then per slide / per question, with rows for every translatable field.

Pick a reference language at the top-left (the language you're translating from) and a target language at the top-right (the language you're translating to). Every row shows one field in both languages; click into either cell to edit. Changes save automatically as you type.

A small badge in each cell's top-right shows what the field expects:

BadgeMeaning
(none)Plain text
labelPlain text label (e.g. icon component label)
mdMarkdown
htmlRaw HTML
subtitleA .vtt subtitle file

For Markdown and HTML cells, mirror the formatting from the reference column in the target column. Inside slides, components are listed in their on-slide order with a small type icon next to each row.

Progress bars

Below each language picker, a percentage bar shows how much of the course is filled in explicitly for that language. Fields served via the INTERNATIONAL fallback don't count — the bars measure translation work to do, not what learners ultimately see.

INTERNATIONAL fallback

Some courses store content under the special INTERNATIONAL language entry — a single value used for every learner regardless of language. At runtime, the course player falls back to that value when a viewer's language has no explicit entry.

When the reference column shows a fallback value, you'll see italic + muted text and an amber intl badge in the top-right corner.

What this means in practice:

  • The displayed value is what learners actually hear/see for the reference language right now.
  • Translating the row into the target language adds a normal target-language entry; the INTERNATIONAL value stays untouched. (Overwriting it would silently change every other fallback-relying language.)
  • To create a real reference-language entry, type into the reference cell — it pre-fills with the fallback value, so editing turns it explicit.
  • The intl badge stays even after a successful target translation, since the reference itself is still served via fallback.

Automated translation with DeepL

Click Translate with DeepL at the top of the page to translate everything that's empty in the target language. A modal opens with three settings:

  • Target language variant — pick the regional variant (e.g. EN-US vs EN-GB) when one applies.
  • Formality — formal or informal. Defaults to formal where supported.
  • Also translate video subtitles — checked by default; uncheck to translate text only.

Existing target-language translations are never overwritten — only empty target fields get filled. Strings are batched smartly so DeepL gets soft context (e.g. a quiz question is sent together with its answers). Subtitles run after all text translations, sequentially.

Per-row translation

Each text row has its own Translate with DeepL button for translating just that row — useful when you've changed a single source string and want to redo only its translation.

Language-pair support

DeepL doesn't support every language pair. Below each language dropdown, the tool shows one of:

  • DeepL: <variant name> — supported, optionally with the variant DeepL will use.
  • DeepL: not supported (red, bold) — unsupported.
  • DeepL: loading… — fetching the language list.

If the pair is unsupported, DeepL action buttons stay visible but disabled with an explanatory tooltip. You can still translate manually.

TIP

If you previously picked a specific target variant (e.g. EN-US), it's preserved when you switch back. Switching to a target with no DeepL variant clears the variant selection so it doesn't carry over silently.

Video subtitles

Subtitles appear inline within each slide block, alongside the slide's text components. A subtitle row shows up only when:

  • Reference and target languages both resolve to the same video for that placement.
  • That video has a subtitle file in its own audio language.

Each subtitle row carries a reference filename (read-only), a target filename (or Not translated), a Translate with DeepL button, and — if a target subtitle exists — a Remove translation trash icon.

Subtitle translation is asynchronous: the reference file is sent to DeepL, and a progress modal walks through Uploading → Translating → Saving → done.

WARNING

Don't close the modal mid-job — you'll lose the result.

Audio language as source

The DeepL request uses the video's audio language as its source, not the tool's reference language, so the translated cues stay aligned with the audio that learners actually hear in the target language. When the audio language differs from the reference language, the subtitle cell shows italic + amber intl badge with an explanatory tooltip.

When a row doesn't show up

A video that should have a subtitle row but doesn't usually has one of these:

  • No subtitle file uploaded yet for the video's audio language — upload one in the Asset manager.
  • Different videos per language, with the reference and target on different ones (different cuts mean cues wouldn't line up — translate each separately).
  • The video's audio language is INTERNATIONAL rather than a real language. Fix the audio language on the video first.

Export & import

DeepL only sees one string at a time, so it can't check consistency across the whole course. To get a holistic review, the tool can export the full translation set — text and video subtitles — as a single JSON file you can hand to a proofreader or paste into an LLM, then re-import the result.

Export

Click Export at the top of the page. Two optional checkboxes in the modal:

  • Include context descriptions — adds the surrounding-course context to each entry.
  • Include formality settings — adds the formality value to each entry.

Video subtitles are included automatically wherever they're eligible (the same rule as the inline subtitle rows). The file has a meta block (course id and name, source/target languages, timestamp, plus a short note about the subtitle editing rules) and a translations array.

Text entries carry:

  • id — stable identifier.
  • location — human-readable path (e.g. Module 2 > Slide 3 > Markdown).
  • originalText — the source-language text. INTERNATIONAL fallback values are included so the export reflects what learners actually see.
  • translatedText — current target-language text (empty if not yet translated).
  • formattext, markdown, or html.
  • context / formality — only present if the matching flag was enabled at export.

Subtitle entries (format: "subtitle") replace the text fields with aligned cue arrays, so reviewers edit meaningful lines instead of a raw .vtt blob:

  • audioLanguage — the source language of the cues (the video's audio language).
  • originalCues — one { start, end, text } per cue, in the source language.
  • translatedCues — the same cues in the target language, aligned 1:1 by index (omitted when no target subtitle exists yet).

A subtitle reused across several slides is exported once, and its location notes "(used in N slides)". So you don't lose track of where it plays, a lightweight format: "subtitle-ref" pointer row sits inline among each of those slides' text rows, pointing back to the real entry — handy when reading a long file top to bottom. The meta block explains these pointers.

WARNING

Edit only each cue's text. Don't add, remove, or reorder cues, and leave the timestamps untouched — the importer checks this and skips any cue that no longer lines up. Leaving a cue's text empty is allowed (it stays untranslated), but clearing text does not delete a subtitle — use the trash icon on the subtitle row for that.

Import

Click Import and choose the reviewed file. Everything is checked up front, then the review screen shows exactly what will change before anything is written:

  • Changed rows — text rows as a before/after pair; subtitle rows as a per-cue table showing only the cues whose text changed (unchanged cues are summarised).
  • Skipped (N) — a collapsible group of rows that failed validation (for example a subtitle whose cue count or timestamps no longer match the source). Each shows the reason and is left out; the rest of the import still applies.
  • Warnings — a soft banner flags things that look off but aren't fatal: a file that's missing course fields or has stale entries no longer in the course, or subtitle cues left empty over a non-empty source line (a likely accidental deletion, also highlighted per cue in the diff). Warnings never block the import.

Confirm with Apply. Text rows save first, then subtitles upload one at a time, so the progress reads "Saving text…" then "Saving subtitles… (n/m)".

INFO

Only changed rows are written. If some rows fail, just import the same file again — only the still-unsaved rows show up the second time.

Tips & limitations

  • Auto-save: every cell saves as you type. There's no undo — if you overwrite a translation accidentally, you'll need to retype.
  • No glossaries in DeepL calls (yet). Use the export/import flow for terminology consistency.
  • No inline subtitle editing. You can round-trip subtitle text through the export/import flow above; to change cue timestamps or styling, edit the VTT externally and re-upload through the Asset manager. See Subtitles for the formatting that survives.
  • Localized assets (videos, audio, images) are out of scope here — only their labels and subtitles are translatable.

See also

  • Course localization — how multilingual content works in the editor.
  • Languages — managing which languages your course is published in.
  • Asset manager — per-language assets, especially for video.
  • Subtitles — how subtitle cues display and the formatting they support.