Purpose: Use this article to translate your Course Templates and Learning Paths into other languages, choose the language an Event is delivered in, and understand what learners see in the LMS and WebLink.
Administrate already let you translate the emails you send. Multi-language courses extend that to the training itself: one Course Template can hold its title, descriptions and custom field values in several languages, be marked as deliverable in a set of languages, and produce Events in whichever of those languages you are running.
You keep a single Course Template. There is no need to duplicate a course once per language, and no risk of the copies drifting apart.
In this article
- What this gives you
- Before you start
- Set the languages on a course
- Translate a course
- Translate a Learning Path
- Make a custom field translatable
- Create an Event in a delivery language
- What learners see in the LMS and WebLink
- Communications, documents and merge fields
- Find missing translations
- Limitations and common questions
- For developers
- Related guides
What this gives you
- One course record, many languages. A Course Template holds translated content alongside the language it was originally written in, rather than in separate templates.
- A course that only translates what it needs to. Anything you leave blank in a translation falls back to the original language, per field. A course can be half translated and still be usable.
- Events in a chosen language. Creating an Event from a template picks up that template's translated title and custom field values for the language the Event is delivered in.
- A language choice for learners. Learners get a language picker in the LMS and the WebLink storefront, and see course content in the language they choose.
- Communications that match. Emails about an Event, the course text merged into them, and the documents attached to them all follow the Event's delivery language.
- Visible gaps. The Content and Communications tabs of a Course Template flag every delivery language a document or communication template has no content for.
Before you start
Add your languages first. Only languages enabled on your instance can be chosen as a course language, a delivery language or a translation. Add them from Control Panel → Communications → Languages & Translations, described in Languages and Translations.
Set the languages on a course
A Course Template carries three separate language settings on its Overview tab. They do different jobs, and the difference matters.
| Field | What it means |
|---|---|
| Default Translation | The language the content on the Overview tab is written in. This is the course's original, untranslated content, and every translation falls back to it. |
| Delivery Languages | The languages the course can be run and consumed in. A course can be marked deliverable in a language it has no translated content for. |
| Default Delivery Language | The language the course is presented in by default in the LMS, and the language preselected when you create an Event. Must be one of the Delivery Languages. |
To set them:
- Open Training → Templates and select a Course Template.
- On the Overview tab, select Edit.
- Set Default Translation to the language the existing content is written in. On a new course this is prefilled with your instance's default language.
- Select every language the course can be delivered in under Delivery Languages.
- Choose the Default Delivery Language. Only your chosen Delivery Languages are offered, and the field is corrected automatically if you remove the language it was set to.
- Select Save.
Note
Delivery Languages are a statement of intent, not of content. Adding French to Delivery Languages does not translate anything — it says the course can be run in French. Translate the content separately, as below. This is deliberate: some courses are delivered in a language by an instructor without the catalog copy being translated.
Translate a course
Translations are managed from the same Overview tab, using the Translation control in the tab header.
Add a translation
- Open the Course Template's Overview tab.
- In the header, select Create Translation and choose a language. Every language enabled on your instance that the course is not already available in is offered.
- Fill in the fields you want translated. The form opens empty, with the reminder that content left blank uses the primary language. It does not show the primary language's text alongside.
- Select Save.
The form shows only the fields that can hold different content per language:
- Title
- Your instance's course description fields — up to fourteen, using whatever labels your instance has given them. A description field with no label configured is switched off and is not shown.
- LMS Summary and LMS Course Resources
- Related Courses text
- Any custom field marked as translatable — see Make a custom field translatable
Everything else on a Course Template — code, category, pricing, capacity, schedule, personnel, achievements — is the same whatever language the course runs in, and is edited against the primary language only.
Switch between languages
The header shows Translation: followed by the language currently displayed. Select it to switch to another language the course is available in. The primary language is labelled (Default).
Note
Switching language replaces the form, so the switcher is disabled while you have unsaved edits. Save or cancel first.
Delete a translation
- Switch to the language you want to remove.
- Select Delete Translation.
- Confirm in the Delete language Translation dialog.
The content for that language is removed and cannot be recovered. The course falls back to its primary language everywhere that translation was being used.
Translate a Learning Path
Learning Paths work the same way, with a smaller set of translatable fields.
- Open Training → Learning Paths and select a path.
- On the Overview tab, select Edit and set Language to the language the path's content is written in. Save.
- Use Create Translation in the header to add a language, exactly as for a course.
The translatable fields on a Learning Path are Name, Description, and any custom field marked as translatable.
Learning Paths have no Delivery Languages or Default Delivery Language — those exist to drive Event creation, and a Learning Path is not delivered as an Event.
Make a custom field translatable
Custom fields are not translatable by default. Each definition has to opt in.
- Go to Control Panel → Custom Fields.
- Create or edit a custom field whose entity types include Course or Learning Path.
- Select Mark field as translatable.
- Save.
The checkbox appears directly under Mark field as required, and only once Entities includes Course or Learning Path — add one and it appears straight away.
A custom field can only be translated if it:
- is marked as translatable,
- holds text rather than, for example, a date or a number, and
- has a value on the course or path itself to translate.
Fields that fail any of these are not offered on the translation form.
Create an Event in a delivery language
When you create an Event from a Course Template, the Delivery Language field decides which language the Event is run in.
- Create an Event as usual — see Create an Event.
- Choose the Course Template. The Delivery Language field offers that template's Delivery Languages, preselecting its Default Delivery Language.
- Change the Delivery Language if this delivery is in a different one.
- Complete and save the Event.
What follows from your choice:
- The Event's title and custom field values are prefilled from the template's translation for that language, falling back per field to the original content. Change the language before you save and the prefilled values follow it.
- Anything you have typed yourself is never overwritten. Once you edit the title or a custom field, switching language leaves your text alone.
- If the Course Template has no Delivery Languages configured, every language enabled on your instance is offered and nothing is restricted. Existing ways of creating Events are unaffected.
- The Event keeps the language it was created in. Duplicating an Event keeps its language too.
Choosing French prefills the title from the template's French translation:
A title you have typed yourself stays put when you switch language again:
Note
The Event's content is a snapshot taken at creation. Editing the Course Template's translation afterwards does not rewrite Events already created from it. Re-applying the Course Template to an Event re-inherits the content in that Event's language.
What learners see in the LMS and WebLink
Both the LMS and the WebLink storefront gain a language picker — a globe icon in the header, showing the language currently in use.
- It appears only on instances with more than one language enabled.
- It defaults to the learner's own language when that language is available, and otherwise to your instance's default language.
- Choosing a language reloads the page and fetches course and Learning Path content in that language.
- The choice is remembered in the learner's browser, per portal.
- Any field with no translation in the chosen language falls back to the language the course was written in, so a partly translated course is never blank.
The WebLink builder also has a content language picker, so you can set a portal's default content language and preview other languages while building.
Communications, documents and merge fields
An Event's delivery language now drives its communications end to end.
- Which template translation is sent. Triggered communications already choose their language from the Event, then the course, then the Learning Path, falling back to the communication template's default — see Languages and Translations.
- Merge fields. Course text and custom field values merged into an email — for example the course title or a course custom field — render in the Event's delivery language, falling back per field to the original language. Previously a translated email could contain untranslated course text.
- Ad-hoc emails. The ad-hoc communications modal on an Event opens on the Event's delivery language instead of always opening on English (US). Events with no delivery language of their own still open on English (US).
- Attachments. A document attached to an email is sent in the language of the email.
Find missing translations
Two tabs on the Course Template flag content that has not been translated into a language the course is deliverable in.
Content tab
The documents table has a Missing Translations column:
- a red pill naming each Delivery Language the document has no content for;
- a grey No Translations Configured where the document carries no language information at all — it is served as-is for every delivery language;
- no column at all when the course has no Delivery Languages configured.
A document with nothing translated still reaches the learner: they receive the original document.
Communications tab
Each trigger row flags the Delivery Languages its communication template has no translation for, using the same pills. The column appears only once the course has Delivery Languages.
Note
This column is deliberately compared against the course's Delivery Languages, not against every language your instance supports. It tells you what is missing for the way you actually deliver this course.
Limitations and common questions
Do I need to translate everything? No. Every translated field is optional. A field you leave blank falls back to the course's primary language, field by field.
How do I show a field as deliberately empty in one language? Not through the interface — a field left blank on the translation form falls back to the original language. A deliberately blank value in one language can only be set through the API.
What happens when I save a translation? Saving replaces that language's content completely. Anything cleared on the form is cleared for that language and falls back to the primary language again.
Can I add a translation before setting the course's language? No. A course must have a Default Translation set before translations can be managed, and you cannot create a translation in the primary language itself — that content lives on the course itself.
Can I change the primary language later? Yes, but a translation may already exist for the language you are switching to. Where that happens the primary content wins and the old translation is not shown.
Does duplicating a course copy its translations? Yes. Duplicating a Course Template copies its translations, delivery languages, learning tags and translated custom field values.
Does this translate the interface itself? No. This is about your course content. The language of the Administrate interface, and of the LMS and WebLink interface text, is handled separately.
Are Learning Path translations part of this? Learning Path translations are built on the same foundation and behave the same way, but are tracked as separate work from multi-language courses. Learning Paths have no delivery languages.
For developers
Course Template and Learning Path translations, delivery languages and the Event delivery language are all available through the Core GraphQL API. The fields and mutations are marked experimental and are gated by the same feature setting as the interface.
A Course Template's translations field returns one entry per language it has
been translated into. Each entry is an overlay: a field that is null there has
no translation, and consumers fall back to the same field on the template
itself. translatedFields lists the fields that are set for that language,
which is the signal behind the Missing Translations columns described above.
{
courseTemplates(filters: [
{field: id, operation: eq, value: "Q291cnNlVGVtcGxhdGU6MQ=="}
]) {
edges {
node {
title
courseText1
deliveryLocales { name code }
translations {
locale { name code }
title
courseText1
translatedFields
customFieldValues { definitionKey value }
}
}
}
}
}
Pass translations(locale: "<locale id>") to narrow it to one language, which
returns an empty list when the course is not translated into it.
Two attribute names differ from their interface labels: courseText2 is the
template's introduction, and relatedCoursesText its related courses text.
Start from the Core API documentation and see its Training section for the Translations reference, which documents every translatable field, the write and delete mutations, and the Locale ids these arguments take.