Giter VIP home page Giter VIP logo

rpgmaker-mv-translator's Introduction

RPGMaker-MV Translator ๐Ÿ•น๏ธ

๐ŸŽฎ 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 ๐Ÿ‡บ๐Ÿ‡ธ

Why should you use it? ๐Ÿค”

๐Ÿ‘‰ 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 overview ๐ŸŽฎ

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.

Usage ๐Ÿ’ก

Translate the dialogs files

Note: the program uses a Google Translate API to perform translations, thus a stable internet connection is required.

  1. Clone this repo: git clone https://github.com/davide97l/rpgmaker-mv-translator.
  2. Install dependencies: pip install -r requirements.txt.
  3. Copy CommonEvents.json and all the MapXXX.json files from you game data/folder to this project dialogs folder.
  4. For a basic usage, run the command:
  python dialogs_translator.py --print_neatly --source_lang it --dest_lang en
  1. Most important arguments explanation:
    • 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.
  2. After execution, which may take a while depending on the number and size of files, your translated files will be saved in data_xx where xx is the code of the translated language (dialogs_en if --dest_lang en).
  3. Copy back the content of 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.                |

Translate the object files

  1. Copy the files you want to translate among 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.
  2. For a basic usage, run the command:
  python objects_translator.py --source_lang it --dest_lang en
  1. The arguments are the same as the ones used by dialogs_translator.py, and print neatly is automatically used in the description field. By default input_folder is set to objects).
  2. After execution, your translated files will be saved in objects_xx where xx is the code of the translated language (objects_en if --dest_lang en).
  3. Copy back the content of objects_xx to the folder data of your game replacing the old files.

Support

If you found this project interesting please support me by giving it a โญ, I would really appreciate it ๐Ÿ˜€

More

Check this link to play some of my RPGs ๐Ÿ˜.

rpgmaker-mv-translator's People

Contributors

davide97l avatar semteulgaram avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

rpgmaker-mv-translator's Issues

"translated in total 0 dialog windows"

After a long time i got this output message, when i put the translated files back in, it seems to have done nothing.

Using command :
python dialogs_translator.py --print_neatly --source_lang zh --dest_lang en
For Chinese to English

Output has a lot of "Anomaly" outputs and squares with question marks. Is it the terminal i'm using? (cmd)

UnicodeDecodeError

Hello, does this work when translating from japanese?
I'm getting this error and i don't know what do do
translating file: dialogs\CommonEvents.json
Traceback (most recent call last):
File "C:\Users\wien_\rpgmaker-mv-translator\dialogs_translator.py", line 215, in
new_data, t = translate_neatly_common_events(file_path, tr=Translator(), max_len=args.max_len,
File "C:\Users\wien_\rpgmaker-mv-translator\dialogs_translator.py", line 132, in translate_neatly_common_events
data = json.load(f)
File "C:\Users\wien_\AppData\Local\Programs\Python\Python310\lib\json_init_.py", line 293, in load
return loads(fp.read(),
File "C:\Users\wien_\AppData\Local\Programs\Python\Python310\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 1137: character maps to

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.