The in-context translation has been removed temporarily as translation infrastructure is being updated. We aim to re-add this feature in a future update.
We use a localisation management platform called Crowdin for translation of CS Unplugged. The project is public, meaning that anyone can create an account and contribute translations.
There are 3 types of files that contain translatable content:
Content Markdown files
Content YAML files containg translatable model strings
django.pofile containing translatable system strings
Translatable source files must always reside under an
en directory tree.
Translated files are downloaded into a directory named with the language’s
locale code, and with the same structure as the source tree.
The locale code differs from the language code in format - where a language
code is of form
ab-cd, the locale code will be
ab_CD. Directories must be named
using the locale code recognised by django for that language.
For more information, see
The configuration specifying which files should be uploaded for translation is stored in the file
crowdin.yaml in the repository root.
Details about the structure of this file are available in the Crowdin documentation.
For a translation of any given string to make it to production release, it must pass the following stages of review:
(Crowdin) Translation Proofread - Review by a second translator with ‘proofreader’ status in the target language.
(GitHub) Technical Review - Review by a member of the CS Unplugged technical team to catch technical errors (i.e. with Verto tags, links, Markdown syntax etc). Automated testing on travis will also occur at this stage.
The translation pipeline is implemented by the Crowdin GitHub Action. The following diagram gives a broad overview of the translation pipeline. The blue arrows indicate the path from a source file change through to the release of the translation for that change.