This project aims to translate Uma Musume Pretty Derby through (mainly) Unity asset edits.
The intent is to be an all-in-one toolset/patch but right now it is focused on any dialogues with a few extras.
Translation progress and credits can be checked on the overview. Guides can be found below.
This is based on the DMM version of the game. If you can figure out how to run it on other versions, it may (should) work as well, but no support is provided right now.
Please consider supporting the project.
Translates (or can translate):
- Character stories
- Main & Event stories
- Race segments
- Event prologues
- Training stories
- Home screen interactions
- Lyrics
- Planned: images
- Deepl integration for automatic machine translation
Provides text strings and related tools for UI translation using umamusume-localify
Toolset: see scripts
This tool collection only changes text to translate it and it is my belief this is harmless and unlikely to be an issue. 1
Nonetheless such edits are of course against cygames/Umamusu TOS so proceed at your own risk!
- Install Python 3.9+
- During install, make sure to check the
Add to PATH
option.
- During install, make sure to check the
- Download this project
- Open the (extracted) folder and double click
install.bat
- (Optional but recommended) Download all game data through the game menu
- Dialogue: double click
run.bat
- UI: Open the game's install folder (where the
Umamusume.exe
is)- Download localify's
release.7z
from here and extract theversion.dll
inside to the install folder - Copy the contents of the localify folder to the install folder
- If it doesn't work when you start the game, try renaming the
version.dll
file touxtheme.dll
- In rare cases when a story overlay pops up in the main menus, your UI may blur and get stuck that way. Temporarily remove the dll and restart the game to do the action. (may only affect uxtheme.dll naming?)
- If it doesn't work when you start the game, try renaming the
- Download localify's
- Skills and other variable text: See the db-translate project and follow its guide.
- Download the project again and overwrite
- Any files you've added yourself through the deepl integration should stay intact, or at worst be overridden with the same (deepl) or better (manual translation) versions. If you've made your own edits to anything though, those would be lost! You could keep a backup of any edits at the moment you make them, or try picking up git or other version control software.
- Double click
run.bat
In general, check out the scripts
- Dialogue
- To install specific things, see id-structure.md and use:
py src/import.py -O -g <group> -id <id>
- To add additional translations through deepl, or contribute your own, see translating.md
- To install specific things, see id-structure.md and use:
- UI
- To update yourself when the translations are jumbled, see here
- Skills and other variable text: See the db-translate project
All scripts are made to be run from the root dir, i.e: py src/script.py -opt val
Arguments can be given to all and it is recommended you do so, processing the smallest amount of files you're comfortable with at a time.
For arg info run a script with the -h
arg or just look at the code. Most are very similar.
script | desc |
---|---|
filecopy | Simply copies files from the game dir to the project dir for backup. These will also be used by some other scripts where useful. |
restore | Downloads fully fresh files from cygames servers, in case of mess ups |
extract | Reads game files and writes relevant data to a local folder, ready to be translated. Creates Translation Files |
import | The reverse; loads Translation Files and writes them back to game assets for importing into the game |
machinetl + deepl-translator.user.js | In tandem, provide a way to translate Translation Files with deepl. Install the userscript in your browser. Run the python file first, then go to the deepl site and use your userscript manager's menu to connect and wait until python exits. The script can also use trained neural net models through fairseq. |
names | Simply translates names in Translation Files using data from the db-translate project |
textprocess | Processes dialogue text in Translation Files in various ways. Most immediate manual use is adjusting lengths of lines for newline splits. |
subtransfer | Imports ASS, SRT or TXT subtitle files into Translation Files. A few conventions must be followed, see its -h switch |
common | Not a script. Is used by the other files and holds shared functions and data. |
Most scripts take these arguments, given as -arg <opt>
:
arg | desc |
---|---|
h | Print basic usage information. Use this to see script-specific options |
g | Process specific group |
id | Process specific id |
idx | Process specific idx |
l | Limit processing to given number of files |
O | General overwrite option. extract.py : overwrite files in extract folder import.py : (over)write directly to game dir instead of dat/ |
src | Define umamusu game dir (defaults to the usual location in LocalLow ) or script input |
dst | Define root dir to save output in (defaults to dat/ for import.py and translations/ for extract.py ) |
For g, id, and idx see id-structure.md
An example to extract Special Week's story:
python src/extract.py -g 04 -id 1001
For details run with -h
or check the code.
script | desc |
---|---|
static/manage | Small tool to manage localify's data for translating static strings. Requires use of umamusume-localify. Note this is a module-script, run as: python -m src.static.manage [-opts] |
To contribute translations, see translating.md (deepl dumps are accepted!)
For dev contributions, open a PR or Issue.
Both are extremely welcome!
UnityPy
The original umamusume-db-translate
umamusume-localify
Unofficial Umamusume Discord server
All the translators
Footnotes
-
cygames has a relatively good track record in leaving non-cheating, non-damaging tools and users alone in my experience. any possible crackdown is also likely to start with announcements and warnings before bans. ↩