Legends of Learning users speak multiple languages, and we require games to be multilingual.

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 an identical corresponding key name, 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:

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",
        }
}