๐ฎ Use AI to translate all the dialogs and texts of your RPGMaker automatically.
๐ You worked hard to make your game, now let AI work hard for you.
Original language ๐ฎ๐น | Automatic Translation ๐บ๐ธ |
---|---|
๐ RPG games usually consist of many thousands of dialog events and other forms of text displaying valuable information to understand the plot of the game, but also to know the effect and proprieties of various objects present in the game such as items, weapons, skills, enemies, ... .
๐ Translating an RPG game from one language to another would thus require an enormous amount of time and effort for a human, but it is a task that can be easily accomplished by a machine, or at least speed up considerably the work of a human translator saving costs and time.
๐ This project implements a tool that is able to automatically translate a game deployed with RPGMaker-MV.
Game files containing the data we want to translate are usually contained in the folder data/
.
Among these json files, the ones we are going to translate are the following:
Armors.json
: contains the name and the description of all armors ๐ก๏ธ. ๏ธWeapons.json
: contains the name and the description of all weapons ๐ก๏ธ.Items.json
: contains the name and the description of all items ๐ก.Skills.json
: contains the name and the description of all skills โก.Enemies.json
: contains the name of all enemies ๐พ.MapInfos.json
: contains the name of all maps ๐บ๏ธ.Classes.json
: contains the name of all classes ๐ง.States.json
: contains the name and the relative messages of all states โจ.Actors.json
: contains the profile of all characters ๐ฉ.Other files that need to be translated, but deserve particular attention are:
CommonEvents.json
: contains the dialogs relative to the common events in the game ๐ค.MapXXX.json
: contains the dialogs relative to all the maps. Basically it contains most of the dialogs on the
game which would probably require a massive amount of time if translated manually ๐บ๏ธ.The remaining files are not translated since they don't contain much text to translate such as System.json
or there is
nothing critical to translate such as Animations.json
.
Note: the program uses a Google Translate API to perform translations, thus a stable internet connection is required.
git clone https://github.com/davide97l/rpgmaker-mv-translator
.pip install -r requirements.txt
.CommonEvents.json
and all the MapXXX.json
files from you game data/folder
to this project dialogs
folder.python dialogs_translator.py --print_neatly --source_lang it --dest_lang en
source_lang
: (string) the original language of your game (en - english, it - italian, zh - chinese, fr -french,
sp - spanish, de - deutsch, ...). dest_lang
: (string) the language you want to translate your game.verbose
: (bool) if True, show each original and corresponding translated sentence during execution.input_folder
: (string) the folder containing the files to translate (default: dialogs
).print_neatly
: (bool) if True, adapts the translated sentence to fit the dialog window.
This is because, by default, each dialog window row is a unique string itself and its length can change after translation.
This option also improves the translation quality because each dialog window would be translated at once without
translating each row one by one which causes loss of context. If you are curious how this algorithm works you can
check this blog.max_len
(int): Used only when print_neatly
is True. Indicates the length of the dialog window.data_xx
where xx
is the code of the translated language (dialogs_en
if --dest_lang en
).dialogs_xx
to the folder data
of your game replacing the old files.Example of print neatly with max_len=32
translating from english to italian:
|The hunter has won the battle |
|and unlocked a new secret |
|skill. |
After italian translation without print neatly:
|Il cacciatore ha vinto la batta|glia
|e sbloccato una nuovo segreto |
|potere. |
After print neatly:
|Il cacciatore ha vinto la |
|battaglia e sbloccato un nuovo |
|potere segreto. |
Armors.json
, Weapons.json
, Items.json
, Skills.json
, Enemies.json
, MapInfos.json
, Classes.json
, States.json
, Actors.json
from you game data/
folder to this project object
folder.python objects_translator.py --source_lang it --dest_lang en
dialogs_translator.py
, and print neatly is automatically used in the description field.
By default input_folder
is set to objects
).objects_xx
where xx
is the code of the translated language (objects_en
if --dest_lang en
).objects_xx
to the folder data
of your game replacing the old files.If you found this project interesting please support me by giving it a :star:, I would really appreciate it :grinning:
Check this link to play some of my RPGs ๐.