A downloadable tool

vBeta 0.0.2



Introduction

What is MLS?

001 MultiLang Support is an open-source tool for translating games created with 001 Game Creator, which does not natively support multiple languages.


How Can I Use It?

Any user can download, use in their projects, modify, and improve.


Support and Assistance

Feel free to leave comments, report bugs, post links to improved versions, make suggestions, or support the project with donations if desired.








Documentation


How to Extract Text from Interfaces?

The process has been simplified to ensure your game's translation is quick and efficient.

  • To extract text from interfaces, first, mark where there are texts without "Use Value" to be translated.Text Field
  • To mark them, copy the special character from the variable _translation_mark and place it at the beginning of each text to be translated:Initial Text

After marking all the texts, it's time to extract them... 

  • To extract, you will need to start your game with the Custom Event for extraction (Get Interface Texts MLS):
     Get Interface Texts 

When adding this event, select your LoadScreen and choose the type of file you want to extract, .txt for faster translation or .ini for more accurate translation. (Later, you will find a more detailed explanation of each file type).

  • Now that everything is set up, start your game and wait for the extraction to complete.

During extraction, you may receive some errors from the interfaces being scanned. Please check the name on the debug screen. If you see an interface name, click "Ignore Error." If you see the name of the Custom Event that is extracting, please send me a message or a screenshot to inform me about the error, and I'll fix it.

  • After extracting, you can close your game and open the saves folder by clicking on "Tools" and "Open Saved Games/Data Folder."

 

  • Upon opening, you will see a new folder called MultiLangSupport. Inside it, you will find the extracted text versions. Entering the latest version, you will find the folders of the selected languages for your game. 
  • If you chose .ini files:

In the original language folder, you will find a file called Interfaces.ini, which contains the texts from each marked Text Field in your game.

With this file open, you can start translating the other .ini files for other languages using the original as a base.

  • If you chose .txt files:

In the original language folder, you will find a file called Interfaces.txt, which is a bit messy but can help you save time in translations. With this file, you can copy all the text and paste it into Google Translate or ChatGPT to quickly translate it into the selected languages. After translating, paste the translation into the files in each language folder.

How to Load Translations?

Now that each language's files have been translated and properly saved, it's time to load the translations:

  • Using the template map called MLS DataBase  create a duplicate and rename it with the following rules:
  1. At the beginning of the name, write the language that specific map will receive, among the languages chosen from the variable _languages, ending with a space before the MLS abbreviation, which will be kept.
  2. After the MLS abbreviation, replace "DataBase" with the type of translation the map will receive: Items, Messages, or Interfaces.

Now just save the new map. Inside it, you can edit the initial comment to signal to your project's developers what that map is for.

Now that we have the new map configured, right-click on its name in the map list, open the list called Run Custom Event, and select the option Load Translations MLS.

  • If you've made several versions and the latest is not the correct version, you can check the "Selected:" option and specify which version is correct below.
  • If you chose to extract as .txt, now you need to convert it to .ini, so check the option txt->ini.

Click OK to complete the loading and see the message that will appear, which contains important information. If there is an error, send me a screenshot to help you.

Now that the translation has been loaded, you will see some new actors on the map. Each one carries the text for a specific interface. I do not recommend modifying them.

How Do I Make My Game Display the Translations?

We have two Custom Events to help you:

  • To get the interfaces translated, use the Custom Event Update Field Text MLS inside the Script of Entered Interface so that the text is translated. Using the Custom Event, you will need to select the fields that receive translation for performance reasons: 
  • When starting your game, it's important to load a language. I recommend using Switch Language and selecting the "Load Last Selected Language" option:

You can also use this Custom Event to create a language selection menu.

Ready! Your interfaces are translated!

How to Translate Items?

Translating items is similar to translating interfaces.

  • You can extract the names and descriptions by starting the game with the Custom Event Get Items Text MLS.
  • After extraction, you can translate them through the ItemsDescription and ItemsName files.
  • Create the map that will receive the translations using the template duplication rules (Example: English MLS Items).
  • And run the Custom Event Load Translations MLS to load the translations.

How to Translate Message Boxes?

Translating message boxes is a bit more complicated because it requires going through a process called "Internalization," which is responsible for organizing where each translation will be inserted.

  • To perform the internalization, follow two steps:
  1. In each different script, use the Custom Event Script Namer MLS to name that specific script. Always give simple, descriptive names without symbols.
  2. In each message box, insert the Custom Event Label Creator MLS and give a custom name for that specific message box without repeating it in other boxes within the Custom Tag field:

After completing the internalization of a script, save the script modifications and switch to text mode (BE VERY CAREFUL AT THIS PART NOT TO SAVE YOUR SCRIPT AS TEXT). Copy the entire text script, click Cancel to avoid saving, and run the Custom Event Message Box Extractor. Paste the script into it and click OK. If you encounter an error, send me a screenshot or message, and I'll help you.

  • With the messages extracted, you can now enter the saves folder to translate each of the dialogues, as explained about interfaces, and finally, you can load them in the same way.

Download

Download
MLS_vBeta_0.0.2.zip 120 kB

Install instructions

Setting Up the Tools in Your Project

When you download, extract the compressed files, and you will receive two folders: "Import" and "Install".

  • Before opening your project in the engine, copy and paste the files from the "Install" folder into your project folder, which can be accessed via the default path Documents\My 001 Games\*PROJECT NAME*. 
  • After pasting the files into the folder, open your project in the engine, click the "Import" button  and import the files from the "Import" folder.

After this, you need to close and reopen your project for the Custom Events to work correctly.

Setting Up Global Variables

Before you start using the tools, you need to create 5 global variables. 


Variable Name Value Description
_translation_mark Indicates to the tool where a translation is needed. (The symbol is customizable. I recommend using symbols that are not used in your game).
_languages pt,en,es Stores the languages you want to add to your game, separated by commas.
_selected_language en Stores the language selected by the player.
_original_language en Stores the game's original language so the script can function.
_script_name Indicates to the tool which script is currently running.

Now we can use the tools.