Language + Translation

Legends of Learning users speak multiple languages and we require games to be multi-lingual.

Practically, this means:

  1. Storing game text in a separate data file (JSON) and uploading it during game submission.

  2. Subscribing and receiving a language payload during game initialization.

Important: Language selection will happen outside the game, via teacher or student settings. A game needs to handle multiple languages, but only one language will be passed in at a time.

In the StartGame payload, the language is specified. Use this to select a font.

{ "languageCode": "en" }

The Language payload contains keys and values for a single language. Each language must have am identical corresponding key names and each key must have a name.

{ "welcome": "myText" }

For development, you can use a multi-language file like this. Use the languageCode key from your StartGame handler to call the LanguageDefsReceived with the key, in pseudocode: language[startKey['languageCode'].

Unity developers can reference the Example Project's Loader.cs for more examples.

{
  "_meta": {
    "maxChars": {
       "welcome": 50
     }
   },
   "en": {
     "welcome": "Welcome"
   }, 
   "es": {
     "welcome": "Bienvenido"
   }
 }

This file is also used in game upload. The minimum required keys are:

  • _meta with maxChars key/value each language key

  • en English

Optional:

  • es The Spanish translation will be added to any accepted game by our translators, usually within 1 week after approval. When this happens you will be notified by email, and no action is required, but you can download the new JSON from the developer portal for submitting updates. If your team speaks Spanish fluently, you are certainly welcome to submit your own translation during submission.

Note: The language file should be formatted as seen above. Using an array structure will not be accepted. There should be no nested objects and only single level key values should be used. Below is an example of a JSON line that will not read with TTS (Text to Speech), and the correct way to structure the same code to work for TTS.

{
//Incorrect structure, wont play TTS
    "en": {
        "FullTutuorial": {
            "0": "Welcome",
            "1": "This is the tutorial", 
            }
// Correctly structured version, will play TTS
    "en": {
        "FullTutorial_0":"Welcome to the game!",
        "FullTutorial_1":"This is the tutorial",
        }
}
  • The text used in the game should be taken from the language JSON file so that it can be translated and edited by reviewers

  • It is highly recommended that developers test Spanish text in their games to verify font and UI compatibility. I.e., check that special characters like accents and tildes render properly, and that translated text fits within your defined text areas. This can be done in the Test Harness

  • Please be careful with any placeholder text that you use for testing. If that placeholder text is kept in the game build files, and there's an error where the game doesn't properly replace the placeholder text with the correct values in the language JSON, it can be a problem for students. Any inappropriate text content, whether displayed accidentally or not, will result in an immediate ban of the studio's games on the platform.

Last updated