Skip to content

About

Local document translation workbench powered by OPUS-MT – translate DOCX, PDF, PPTX, XLSX and more, self-hosted, with formatting preserved.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

489 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Linguinator

Version License: AGPL-3.0-or-later Docker image

Local document translation workbench powered by OPUS-MT.

Linguinator UI

Open http://localhost:5051/ (or your configured LINGUINATOR_PORT/reverse-proxy URL) once the container is running.

System requirements

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)

Installation with Docker

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 .

Languages

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.

Job history

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 deploy block in docker/compose.yml (host needs the NVIDIA container runtime); CPU otherwise.
  • Reverse proxy: uncomment the two networks blocks in docker/compose.yml to join an existing proxy network.

License

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).

Model attribution

Linguinator uses the following 21 OPUS-MT models under Creative Commons Attribution 4.0 International:

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.

AI use

Most of this project's code was written with AI assistance (Claude Code). Commits and design decisions were reviewed by the maintainer.

Links

About

Local document translation workbench powered by OPUS-MT – translate DOCX, PDF, PPTX, XLSX and more, self-hosted, with formatting preserved.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages