A full toolset that will help you to translate 1000xRESIST to your favourite language.
There is now a 1000xr-modding
channel on the official sunset visitor Discord, feel free to join and say hi if you're planning to translate the game.
The toolset is intended to be used in the following way:
- Toolset exports and parses what is needed from the game files you provide.
- Toolset uploads all strings into a pre-defined Google Sheets document.
- You translate all game text in Google Sheets, with optional help of LLMs.
- Toolset pulls all translated strings and builds a ready to use distribution package with localization.
NOTE: While this toolset makes the translation 1000 times easier, you still need to have solid computer usage skills to set it up.
be able to export, parse, translate and import all visible text datatranslator/checker- fonts patching
general polishing & documentationtextureand other resources overrides (?)
Function | State | Description |
---|---|---|
Exporter | ✅ | Exports required game data |
Sheetifier | ✅ | Parses game data and imports all strings into Google Sheets |
Translator | ✅ | (optional) Translates dialogues using LLMs |
Checker | ✅ | (optional) Checks for abnormalities in the translated dialogues |
Desheetifier | ✅ | Pulls all strings from Google Sheets and writes them into game data |
Boom Boom Build | ✅ | Imports required game data, creates distribution packages |
Exports required game data from GAME_DIR
to RES_DIR
using UnityPy. It tries to be as version-agnostic as possible to support any patch version of the game (we'll see about that). Game files that we need are resources.assets
and individual bundles listed in the bundles list.
Parses exported game data from RES_DIR
into human-readable format, imports it into the pre-defined Google Sheets document (SPREADSHEET_ID
and the rest). If there already were some strings, it appends only missing strings. The function tries to sort the strings into chapters (see chapter definitions). The name is non-negotiable.
(optional) Automatically or semi-automatically translates untranslated dialogues from Google Sheets using vocabulary and context. Marks translated strings with red, because you probably don't want to have unedited machine translation.
(optional) Checks for anomalies in the dialogues using LLMs, creating a report of what was found.
Pulls translated strings from Google Sheets and inserts them into the game data in RES_DIR
.
Imports resources from RES_DIR
into the game files, outputs changed bundles ready to be replaced in the game directory.
- a copy of game files (everything under
1000xRESIST_Data
) - Linux/macOS/Windows
- node.js 20 or higher
- python 3.9 or higher
See INSTALL.md for installation instructions.
See USAGE.md for usage instructions.
- K0lb3 for his work on UnityPy, without which none of this would've been possible
- VaDiM and idkwhatimsaying for helping with typetree extraction
- turinar71 (who is the author of the Italian translation, btw) for some useful info
- K_A_S_a_L_E_X for original data mining
- F3rn4n for making a list of textures for translation