Getting Started With Game Caption Translation
The process of taking a game's subtitle files and converting them into another language is straightforward on paper but absolutely miserable in practice. Most people skip straight to slapping machine translation on an SRT file and calling it done. That usually works until you hit edge cases that destroy the timing or make the dialogue sound like a robot read it through a wall. I've been doing this for years across different engines and platforms, and the reality is much more grueling than any tutorial suggests. You need to start with the source material in its original format. That means extracting the caption or subtitle files from the game itself. Some games store them as plain SRT files in the data folders. Others use proprietary formats that require decompilation tools. For indie titles built in Unity, you will typically find CSV or JSON files hidden in the StreamingAssets or Resources folder. Unreal Engine projects often use .utt files or localized text packages that need to be unpacked with tools like FModel. Once you have the raw files, you load them into a translation workflow. The traditional route involves downloading the file into a tool like Subtitle Edit, running the text through DeepL or Google Translate via their APIs, and then manually checking the results line by line. This is where most people give up. The automation is sloppy with character limits, timing gets shifted incorrectly, and cultural references get flattened into nonsense.
Here is what actually works for me. I use a Python script that reads the original subtitle format, passes the text through an API with a custom prompt that includes context about the game's tone and genre, and then writes the translated strings back into the correct format with proper line splitting. The script also respects maximum character counts per line so the text does not overflow on screen. It takes about ten minutes to set up the pipeline. After that, processing a full game's worth of captions for a medium-sized title takes roughly forty five minutes of runtime plus a couple hours of manual review. I hit a real problem last year working on a Japanese to English localization for a visual novel with around twelve thousand caption lines. The machine translation kept breaking the speaker name format because the game uses a custom markup tag like [speaker=name] at the start of each line. The API would translate the name itself, which ruined the consistency. My workaround was writing a regex preprocessor that stripped all the markup tags before sending the text to the translator, then reattached them afterward. I also maintained a lookup table of character names so they stayed consistent across every line. That naming table alone saved me from three days of quality checking. The hardest part is never the translation itself. It is the formatting. Different games use different subtitle styles and timing constraints. Some titles need the captions to appear and disappear on exact frame boundaries. A single millisecond shift can make a caption look broken during fast dialogue sequences. I have seen entire projects fail because someone used a default timing generator instead of matching the original file's interval structure.
There are tools that claim to automate the whole thing. I tried a few of them. They work fine for simple dialogue in static text games but fall apart the moment you encounter conditional text, branching dialogue trees, or dynamic UI elements that display captions differently depending on the scene. One tool I tested auto-translated everything but completely ignored context tags, so quest objectives and regular conversation ended up mixed together with no way to tell them apart. If you are just starting out, I would recommend learning how to read and edit SRT and ASS subtitle formats manually before relying on any automation. Understanding how frame timing works and how to properly escape special characters in caption files will save you far more time than any script. The actual translation quality matters less than getting the file structure right, because a perfectly translated subtitle file is useless if the game cannot parse it correctly. For the translation step itself, DeepL tends to produce better results than Google Translate for narrative content, especially when you include context notes in your API request. I add a short note about the scene, the speaker's personality, and the general tone before submitting the batch. This alone improves accuracy noticeably without requiring any additional work on your end.
Get the Full Details

One thing nobody mentions is that many games cache their subtitle assets. Even after you replace the translated files, the game might still load the originals from a compressed archive. You often need to repack the assets into the same format the game expects, whether that is a Unity AssetBundle, a Unreal packaged file, or a simple zip with a specific folder structure. I lost two days once because I replaced the text files but forgot to rebuild the packed asset cache, and the game kept playing the English audio with mismatched subtitles. The field is moving toward better automated pipelines, but we are nowhere close to a one-click solution that handles every game format and language pair without human intervention. The best results come from combining basic automation with careful manual oversight, especially on the first pass through the text. If you enjoy this kind of work, expect to spend more time debugging formats than actually translating words.