# LinguaGacha: an AI text translator for novels, games and subtitles

> LinguaGacha is a desktop Electron application from neavo that routes subtitle, ebook, Markdown and game-text files through online or local AI models, with an agent mode that chains terminology extraction, translation and review. It is aimed at fan translators and small localisation teams, not at people who want a hosted API.

**neavo/LinguaGacha** — 使用 AI 能力一键翻译 小说、游戏、字幕 等文本内容的次世代文本翻译器

- Repository: https://github.com/neavo/LinguaGacha
- Website: https://github.com/neavo/LinguaGacha/wiki
- Stars: 2,523 · Forks: 139
- Language: TypeScript
- License: not declared
- Published: 2026-09-28 · Updated: 2026-09-28 · Language: en
- Canonical page: https://hysenlabs.com/projects/neavo-linguagacha

## What LinguaGacha is for, and who it is not for

LinguaGacha is a desktop translator for long-form text that has to keep its original shape. The README lists subtitle files (.srt, .ass), ebooks (.txt, .pdf, .epub), Markdown, and game scripts exported by RenPy, MTool, SExtractor, VNTextPatch, Translator++ and the official WOLF translation tool. The stated selling point is style and code preservation: the README claims .md, .ass and .epub keep almost all original formatting, and that many WOLF, RenPy, RPGMaker and Kirikiri titles need no manual handling before play.

That framing tells you who the tool is for. A fan translator working on a single visual novel, a subtitler with a season of .ass files, or a small team doing an embedded translation all fit. So does anyone who wants to point the tool at a local SakuraLLM or Qwen2.5-7B instance and keep the text on their own machine.

It is a poor fit for a developer who wants a translation API to call from their own service. There is no documented public HTTP API in the README, only a command line mode described in the wiki. It is also a poor fit for anyone translating a one-off paragraph: the setup cost is a model endpoint plus a project, and the AGENT workflow assumes a body of text large enough that terminology consistency matters.

## How the AGENT pipeline moves a file from source to translation

The application is an Electron app written in TypeScript, with a Go component in the build. The package.json declares three runtime dependencies, all from the @earendil-works scope: pi-agent-core, pi-ai and pi-coding-agent. Those names carry the design: the translation work is driven by an agent runtime rather than by a fixed pipeline of prompt templates.

The README describes the flow in three steps inside AGENT mode. First, terminology extraction, which it marks as optional but recommended and important for quality. Second, full translation. Third, automatic review, also optional and recommended. Only after those does the user click to generate the translated output. The glossary produced in step one is what keeps character names consistent across a whole work, which is the problem that makes machine translation of fiction readable or unreadable.

Around that core sit three supporting features documented in the wiki: a glossary, text preservation rules, and text replacement rules. Text preservation matters more than it sounds. A game script or an .ass subtitle file contains control codes, variable names and markup that must survive translation untouched, and the README's claim about style retention rests on that mechanism working.

The model connection is the other half. The README lists OpenAI, Google, Anthropic and SakuraLLM as supported interfaces, local or online, and recommends DeepSeek as an endpoint with no GPU requirement. Sixteen languages are listed for translation, including Chinese, English, Japanese, Korean, Russian, German, French and Italian.

## Installing LinguaGacha and translating a first subtitle file

There is no package manager install. The README points to the releases page, where each build is a manual build archive named for the platform and CPU. On Windows you unpack the zip and double-click app.exe.

On macOS the README gives a specific sequence, because the app is not distributed through the App Store. Download the dmg matching your CPU, drag the app to Applications, then remove the quarantine attribute before launching:

```bash
sudo xattr -rd com.apple.quarantine /Applications/LinguaGacha.app
```

On Linux the release is an AppImage. The README gives two commands:

```bash
chmod +x LinguaGacha*.AppImage
./LinguaGacha*.AppImage
```

If you would rather build from source, the development guide asks for Go and Node.js, then:

```bash
npm install
npm run dev
```

The README states that non-developers should use the packaged release instead, and that contributors should run the relevant checks in docs/WORKFLOW.md before opening a pull request.

For a first real use, the README's own sequence is short. Drag the file you want translated onto the page to create a project. Open 基础设置 (basic settings) and set the source language and target language. Open AGENT, choose a model, then run the preset commands in order: terminology extraction, full translation, automatic review. Finally click to generate the translated output. The README notes that subtitle and ebook files generally need no preprocessing, while game text has to be extracted first with a tool suited to that engine.

If something goes wrong, the README says runtime logs are written to a log folder in the application root directory, and asks you to attach those files when reporting a problem.

## Where LinguaGacha breaks down

The first limitation is stated in the README itself and is easy to miss. PDF support, added in v0.122.0, only works in AGENT mode. If you were planning to run a PDF through some simpler path, that path does not exist. The release notes also say PDF handling covers both plain text and image text, which implies OCR is in the loop, and OCR on a scanned book is a different reliability class from parsing an .srt file.

The second is the preprocessing boundary. The README is explicit that game text needs extraction with an engine-appropriate tool first. LinguaGacha translates exported text; it does not open a game archive. If your engine is not among WOLF, RenPy, RPGMaker or Kirikiri, the README's claim of no manual handling does not apply to you, and you are on your own for extraction.

The third is that quality is a function of your endpoint, not the application. The README claims good results from both flagship models such as DeepSeek-R1 and small local models such as Qwen2.5-7B, but the terminology and review steps are the mechanism that carries consistency, and both are marked optional. Skip them and you get a faster, less consistent translation. That is a real trade-off, not a defect, but it means the tool's headline quality depends on the user running three steps instead of one.

Finally, the licence is not stated in the repository metadata. The README carries a badge for it, but the terms are not spelled out in the text provided, and the README separately asks for visible credit and for contact before any commercial use. Treat the licence as something to confirm with the author rather than something you can assume.

## How it compares with AiNiee and GalTransl

The two names that come up around this project are AiNiee and GalTransl, and the difference is mostly in where the intelligence sits.

AiNiee is the established translator in this space, and it works by sending text through a model with a configured prompt and a set of request parameters. The user controls the prompt, the batching and the retry behaviour. LinguaGacha replaces that with an agent: the README's AGENT mode runs preset commands in sequence, and the runtime dependencies (pi-agent-core, pi-coding-agent) suggest the model is choosing actions rather than filling a template. Whether that produces better output depends on the model, but it shifts control away from the prompt author.

GalTransl is built around visual novels and a project workflow, with a translation pipeline aimed at that genre. LinguaGacha is broader in file types, covering subtitles, ebooks and Markdown alongside game scripts, and it ships as a packaged desktop application for Windows, macOS and Linux rather than as a script you configure. That breadth is the trade: a tool that handles .ass, .epub and .rpy has to make assumptions about each format's markup, and the README's claim of near-total style retention is the promise that those assumptions hold.

For a Japanese-to-Chinese visual novel, GalTransl's narrower focus may fit better. For a mixed workload of subtitles and ebooks, LinguaGacha's format list is the reason to pick it.

## Maintenance, releases and what upgrading costs you

The repository is not archived, and the last push was on 2026-09-20. Releases are frequent and versioned: v0.122.1 on 2026-09-19, v0.122.0 on 2026-09-18, v0.121.0 on 2026-09-14. The naming convention, MANUAL_BUILD_v0.122.1, suggests these are manual builds rather than fully automated release artefacts.

The changelog is granular. v0.122.0 added PDF support and a special field rule for OpenCode Go, and closed a list of issue numbers. v0.122.1 fixed issues 902, 903 and 905. That cadence means bug fixes arrive quickly, and it also means the version you download today will be superseded within days. There is no documented migration or rollback procedure in the README, so the practical upgrade path is to keep the previous archive until the new one has translated a file correctly.

On licensing, two statements in the README matter more than the badge. The first asks that if you used LinguaGacha in translation work, you say so prominently in the work's information or release page. The second asks you to contact the author for authorisation before any use involving commercial activity or commercial revenue. Neither is a licence text, and the repository metadata does not name one. If you plan to ship a translated product, resolve that question with the author before you start, not after. This is not legal advice; it is a description of what the README asks for.

## Conclusion

Adopt LinguaGacha if you already have a model endpoint and a file the README lists, and you are willing to run the AGENT steps in order: terminology extraction, full translation, automatic review. Do not adopt it if you need a hosted service, a documented rollback path, or a licence you can read without asking the author. Verify two things first: that the current release accepts your file extension, and that you have the right to publish a translation at all, since the project asks for visible credit and for prior authorisation on commercial use.

## FAQ

### How do I install LinguaGacha on Windows, macOS or Linux?

Download the archive for your platform and CPU from the releases page. Windows builds unpack to app.exe, macOS builds ship as a dmg that needs the quarantine attribute removed with sudo xattr -rd com.apple.quarantine /Applications/LinguaGacha.app, and Linux builds are AppImages that need chmod +x before running.

### Which AI models can LinguaGacha use?

The README lists OpenAI, Google, Anthropic and SakuraLLM interfaces, online or local, and recommends DeepSeek as an endpoint that needs no GPU. It states that both flagship models such as DeepSeek-R1 and small local models such as Qwen2.5-7B produce good results.

### Does LinguaGacha support Gemini?

The README names OpenAI, Google, Anthropic and SakuraLLM as supported interfaces. Google's API is the entry that would cover Gemini, but the README does not list Gemini by name, so confirm the current model list in the application's AGENT settings.

### Can LinguaGacha translate PDF files?

Yes, since v0.122.0, but the release notes state that PDF files can only be translated in AGENT mode. Both plain text and image text are supported.

## Sources

- [Issues](https://github.com/neavo/LinguaGacha/issues)
- [neavo/LinguaGacha on GitHub](https://github.com/neavo/LinguaGacha)
- [Project website](https://github.com/neavo/LinguaGacha/wiki)
- [README](https://github.com/neavo/LinguaGacha/blob/main/README.md)
- [Releases](https://github.com/neavo/LinguaGacha/releases)

---

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