# LunaTranslator: reading text out of visual novels four different ways

> A GPL-3.0 C++ application for translating visual novels that combines hooking, embedded translation, console emulation and OCR, then feeds the extracted text to almost any translation engine.

**HIllya51/LunaTranslator** — 视觉小说翻译器 / Visual Novel Translator

- Repository: https://github.com/HIllya51/LunaTranslator
- Website: https://lunatranslator.org/
- Stars: 13,614 · Forks: 1,169
- Language: C++
- License: GPL-3.0
- Published: 2026-10-06 · Updated: 2026-10-06 · Language: en
- Canonical page: https://hysenlabs.com/projects/hillya51-lunatranslator

## Four ways to get text out of a game

The feature list in the README is short and each entry links to its own documentation page, but the structure of that list is the whole design. Text extraction comes in four flavours and they are listed in descending order of how much you have to trust the game's own code.

Hooking is the primary method, and the README's claim is that it is compatible with almost all popular and niche visual novels. This is the runtime approach: the translator attaches to the game process and intercepts the text before it is drawn, which means the result is the game's own strings rather than pixels. Where a game supports it, embedded translation goes one step further and writes the translation back into the game itself, which the README frames as an immersive experience rather than an overlay.

The third method is emulation. The README describes a hook emulator that reads text directly from most games on the NS, PSP and PSV and PS2 platforms, which is the answer to the question of what you do when a console game has no hooks and no modding community. The fourth is OCR, with a built-in high-precision model plus support for many online and offline engines, and this is the fallback that works even when nothing else does.

## Translation engines are treated as interchangeable

Once text is out of the game, the README claims support for almost all translation engines, and it lists the categories rather than pretending one engine is the answer. Large language model translation is called out separately from offline translation, and the documentation link goes to a page about model selection, which suggests the LLM path is treated as a first-class choice with its own configuration rather than an afterthought bolted onto a legacy engine list.

The same pattern repeats in the two surrounding features. Text-to-speech supports a wide range of online and offline engines. Speech recognition is narrower and honestly scoped: on Windows 10 and Windows 11 you can use Windows Speech Recognition. A project this old would have been expected to overstate that last one, and the README instead names the two operating system versions where it works.

For a user, the practical consequence is that the expensive decisions, such as which paid API to route text through and whether to translate locally, are separable from the mechanical work of reading the game. You can change engines without reconfiguring how text is extracted.

## Language learning features go beyond translation

The README lists a language learning group that has nothing to do with producing a translation in your own language. It covers Japanese word segmentation and kana annotation, which is the kind of tooling that shows up in reading apps rather than translation ones, plus AnkiConnect support and the Yomitan plugin.

AnkiConnect in particular is worth pausing on, because it implies the tool can push vocabulary into a spaced repetition system rather than just showing you a sentence. Yomitan is a browser-based dictionary extension, and supporting it means the same extraction and annotation pipeline can feed a dictionary popup for the text you are reading rather than only a replacement string.

None of this is the reason most people install a visual novel translator, but it is the reason the project is not merely an overlay tool. The annotation and dictionary features are the ones that keep being useful after the translation stops being interesting.

## A mature project with a thin repository

The repository tree is seven entries: `.gitattributes`, `.github/`, `.gitignore`, `.gitmodules`, `LICENSE`, `docs/` and `src/`. There is no build system file at the root, no package manifest, and no tests directory. The `.gitmodules` entry tells you documentation or source components are pulled in as submodules, and the `docs/` directory is where the multi-language documentation lives.

The documentation is the actual documentation. The README links to a documentation site that is published in Simplified Chinese, English, Traditional Chinese, Korean, Japanese, Vietnamese and Russian, each with its own path under `docs.lunatranslator.org`. A seven-language documentation set is a signal about who the audience is and how long the project has been maintained, and it is not something the repository itself conveys.

The topic list gives the other half of the picture: galgame, ocr, reverse-engineering, translator, visual-novel and win32. Reverse-engineering and OCR as declared topics tell you that the hooking work is the hard part of this project and that reading pixels off a screen is a genuine fallback rather than an afterthought.

## Daily releases, no release notes

The three most recent releases are v10.17.1.9 published on 2026-09-21, v10.17.1.8 on 2026-09-20 and v10.17.1.7 on 2026-09-19. Three patch releases in three consecutive days, with nothing but a version number in the body of each one.

That cadence is itself the signal. For a desktop application aimed at end users rather than a library, a daily build means the project is being run hard by its users, tested against whatever games and translation engines are currently broken, and shipped the same day. It also means the release page is close to useless as a history: there is no changelog to read, and the version number will not tell you which game gained support.

Where the project does document changes is the user guide, and for the specific behaviour you care about, the per-feature documentation pages linked from the README feature list are the place to look. A hook added for a new title is a fact you will find by trying the title, not by reading a release entry.

## Distribution, signing and where support happens

LunaTranslator is GPL-3.0 licensed and distributed as a downloadable application rather than through a package manager, with the download and frequently asked questions page linked from the README title. A SignPath.io notice at the bottom of the README says free code signing is provided by SignPath, with a certificate from the SignPath Foundation, which matters for a Windows application that people are being asked to install.

Code signing is not a detail here. A tool that attaches to game processes and rewrites their text needs to get past Windows SmartScreen, and an unsigned or self-signed binary would be a much harder sell. The SignPath arrangement is what lets a GPL project ship a signed Windows build without a commercial certificate budget.

Support runs through several channels and the README is explicit about each. The Chinese documentation at `docs.lunatranslator.org/zh` is the primary guide, there is a video channel on Bilibili, and a QQ group whose number is printed in the README. The English version points at the English user guide and a Discord server. Sponsorship is handled through Afdian and Patreon, and the README asks for it directly, noting that maintaining the software is not easy.

## Conclusion

LunaTranslator's real contribution is not any single feature but the ladder of extraction methods, where a game that resists one method usually falls to the next, and where a user who gets text out of a hard case can apply the same translation interface to everything else. The repository is correspondingly thin, a `src/` tree and a `docs/` tree with submodules, because the work is the application rather than a library someone else would import. Releases land almost daily at patch-level version numbers with no release notes attached, so the GitHub releases page tells you when something changed and nothing about what. Start from the user guide at docs.lunatranslator.org, pick your extraction method from the game you actually want to read, and treat the choice of translation engine as a separate decision you can change later without touching the extraction setup.

## FAQ

### How to use luna translate?

The user guide at docs.lunatranslator.org is the place to start, with separate English and Simplified Chinese versions. In practice you choose a translation engine in the settings, pick an extraction method that works for your game, and let the tool read and replace the text. Per-game hook configuration is documented on its own page under the feature list.

### How does LunaTranslator get the text out of a game?

Four ways, in the README's own order: hooking the game process to intercept text before it is drawn, embedding translations directly into games that support it, a hook emulator that reads text from NS, PSP and PS2 titles, and OCR with a built-in high precision model plus other online and offline engines when the game resists everything else.

### Which translation engines does LunaTranslator work with?

The README claims support for almost all translation engines, and it calls out large language model translation and offline translation as separate categories. Text-to-speech likewise supports a wide range of online and offline engines, so the engine choice is separable from how the text is extracted.

### Does LunaTranslator work outside Windows?

The repository declares win32 as a topic and the source is C++, so the application itself is Windows focused. Two features are explicitly Windows scoped: speech recognition through Windows Speech Recognition is documented as working on Windows 10 and Windows 11, and the build ships as a signed Windows binary with free code signing provided by SignPath.io.

### What license is LunaTranslator released under?

GPLv3. The README states it in both the Chinese and English sections and links to the LICENSE file in the repository root. The signing arrangement through SignPath.io, with a certificate from the SignPath Foundation, exists so GPL software can still ship a signed Windows build.

## Sources

- [HIllya51/LunaTranslator on GitHub](https://github.com/HIllya51/LunaTranslator)
- [License: GPL-3.0](https://github.com/HIllya51/LunaTranslator/blob/main/LICENSE)
- [Project website](https://lunatranslator.org/)
- [README](https://github.com/HIllya51/LunaTranslator/blob/main/README.md)
- [Releases](https://github.com/HIllya51/LunaTranslator/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/hillya51-lunatranslator
