Local document translation workbench powered by OPUS-MT.
Open http://localhost:5051/ (or your configured LINGUINATOR_PORT/reverse-proxy URL) once the
container is running.
| Platform | Docker with Compose, x86-64 (linux/amd64) |
| CPU | Any, no GPU needed |
| Memory | 4 GB recommended |
| Disk | 0.6 to 2 GB per downloaded model (the weights plus their CTranslate2 copy) |
| Network | Only for the first use of a language pair, and of the PDF layout model (model download) |
docker/compose.yml runs the published image as it is. Settings are
optional and go into a .env next to it, see docker/.env.example. Turn on
authentication before exposing the service.
To build the image yourself:
docker build -f docker/Dockerfile -t ghcr.io/marschux/linguinator:latest .
English, German, French, Spanish, Italian, Dutch, Portuguese, Polish, Russian, Ukrainian, Swedish,
Danish, Finnish, Greek, Hungarian, Bulgarian, Chinese, Japanese, Turkish and Latin. Any pair works.
Pairs with a dedicated bilingual model (app/opus_pairs.json, ~170 pairs, shown per selection in
the UI and via /languages) translate better than the multilingual fallback the rest use.
Other notes:
- PDF translation preserves layout by default (reflows into the original lines, images/graphics untouched), with automatic OCR fallback for scans. Plain text/Markdown/PDF/DOCX downloads are always available too.
- Original-format export also covers ODT, PPTX, HTML, SRT/VTT, JSON/YAML, PO, and XLIFF.
- History (with retained source files) is kept locally and cleaned up after the configured retention time.
- GPU: uncomment the
deployblock indocker/compose.yml(host needs the NVIDIA container runtime); CPU otherwise. - Reverse proxy: uncomment the two
networksblocks indocker/compose.ymlto join an existing proxy network.
AGPL-3.0-or-later. See LICENSE.
Translation is powered by the OPUS-MT models from the
University of Helsinki's Language Technology Research Group (Helsinki-NLP), commercially usable
and licensed per model as either Apache-2.0 or CC-BY-4.0 (the latter requires attribution, given
here). app/opus_pairs.json (generated by tools/generate_opus_pairs.py) records the license of
every dedicated pair model actually in use; the fallback model,
Helsinki-NLP/opus-mt-tc-bible-big-mul-mul, is Apache-2.0. The models run on
CTranslate2 (MIT), converted once on first use.
PDF paragraphs and headings are found with the help of docling-layout-heron from IBM's Docling project (Apache-2.0).
Linguinator uses the following 21 OPUS-MT models under Creative Commons Attribution 4.0 International:
- Helsinki-NLP/opus-mt-tc-big-bg-en
- Helsinki-NLP/opus-mt-tc-big-de-es
- Helsinki-NLP/opus-mt-tc-big-el-en
- Helsinki-NLP/opus-mt-tc-big-en-bg
- Helsinki-NLP/opus-mt-en-de
- Helsinki-NLP/opus-mt-tc-big-en-el
- Helsinki-NLP/opus-mt-tc-big-en-es
- Helsinki-NLP/opus-mt-tc-big-en-fi
- Helsinki-NLP/opus-mt-tc-big-en-fr
- Helsinki-NLP/opus-mt-tc-big-en-hu
- Helsinki-NLP/opus-mt-tc-big-en-it
- Helsinki-NLP/opus-mt-tc-big-en-pt
- Helsinki-NLP/opus-mt-tc-big-en-tr
- Helsinki-NLP/opus-mt-tc-big-fi-en
- Helsinki-NLP/opus-mt-tc-big-fr-en
- Helsinki-NLP/opus-mt-tc-big-hu-en
- Helsinki-NLP/opus-mt-tc-big-it-en
- Helsinki-NLP/opus-mt-ru-en
- Helsinki-NLP/opus-mt-tc-big-tr-en
- Helsinki-NLP/opus-mt-zh-en
- Helsinki-NLP/opus-mt-tc-big-zh-ja
Attribution: Helsinki-NLP, Language Technology Research Group, University of Helsinki. The model files are used without modification. Their model cards contain further information about source code, training data and notices.
Model cards: https://huggingface.co/Helsinki-NLP
The fallback model is fixed in app/config.py rather than configurable, so that this section stays
true for every deployment. Before swapping it there, or extending app/opus_pairs.json, check that
model's own license and training-data rights.
Most of this project's code was written with AI assistance (Claude Code). Commits and design decisions were reviewed by the maintainer.

