Skip to content

Change the translation system to output content resources instead of using the engine translation system #1179

@NathanLovato

Description

@NathanLovato

Currently we use the engine translation features which allow us to translate lessons and practices partially: Every string is individually translated by calling the tr() function (This is also used to detect and extract strings to translate).

It works very well when you make a game because usually you only translate late in the production process when the content is relatively final. You ship a translation only when it's 100% complete.

For an app like this, we need to ideally be able to tweak the content freely. But a single letter or punctuation change invalidates a translation and, if we ship a release for the English version, it may prevent shipping e.g. the Chinese translations in the following release. This is in part because this is a free and open source project and translations are community made, aside from French/Spanish/small update patches to Japanese.

Suggested change of system

We could still use the tr() function from the engine to extract and maintain the translation strings.

However, this proposal is to build copies of the course in the target language at build time for a given version when translations are complete. Concretely, we would build probably lesson resource files like lesson.fr.tres, lesson.es.tres, etc.

Then, when we're about to build the next release, If the translations for a language are now incomplete, we keep the previous build files for that language.

Once we have done that, we can then address all the content paper cuts that people report or change the content without risking invalidating languages that have a full translation of the course.

There are many content improvements I have been holding on doing to avoid losing all the hard work contributed by the benevolent community contributors

Pre-requisites

Before implementing this feature, I would like to clean up whatever we can from the lesson resources and do a data migration. Because once we have all the languages, the data migrations will be slightly more involved.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions