Skip to main content

Offline screen translator for Japanese retro games

Project description

Interpreter

Offline screen translator for Japanese retro games. Captures text from any window, performs OCR, translates to English, and displays subtitles in a floating overlay.

screenshot

Features

  • Fully offline - No cloud APIs, no internet required after setup
  • Free - No API costs or subscriptions
  • Private - Text never leaves your machine
  • Optimized for retro games - Uses MeikiOCR, trained specifically on Japanese game text
  • Two overlay modes - Banner (subtitle bar) or inplace (text over game)
  • Translation caching - Fuzzy matching avoids re-translating similar text

Requirements

  • Python 3.11+ (Python 3.14 not yet supported)
  • Windows 10 version 1903+, macOS, or Linux (X11/XWayland/Wayland)

Linux: Native Wayland Support (Optional)

For capturing native Wayland applications (not running through XWayland), install GStreamer with PipeWire support:

Ubuntu/Debian:

sudo apt-get install gstreamer1.0-pipewire gir1.2-gstreamer-1.0

Fedora:

sudo dnf install gstreamer1-plugin-pipewire

Arch Linux:

sudo pacman -S gst-plugin-pipewire

Without these packages, the application still works but can only capture X11/XWayland windows.

Known limitations:

  • Global hotkeys on native Wayland require input group membership:
    sudo usermod -aG input $USER
    
    Then log out and back in. Without this, use the GUI button to toggle the overlay.
  • Inplace overlay mode only works correctly with fullscreen native Wayland windows. For windowed mode, use Banner overlay or capture via X11/XWayland instead. (Wayland's security model prevents applications from knowing window positions.)

Tip: To capture a fullscreen Wayland window, put the game in fullscreen mode before starting the capture in Interpreter.

Installation

One-liner Install

macOS/Linux:

curl -LsSf https://raw.githubusercontent.com/bquenin/interpreter/main/install.sh | bash

Windows (PowerShell):

powershell -c "irm https://raw.githubusercontent.com/bquenin/interpreter/main/install.ps1 | iex"

Then run with interpreter-v2.

Upgrading

To update to the latest version, run the install script again:

macOS/Linux:

curl -LsSf https://raw.githubusercontent.com/bquenin/interpreter/main/install.sh | bash

Windows (PowerShell):

powershell -c "irm https://raw.githubusercontent.com/bquenin/interpreter/main/install.ps1 | iex"

Usage

interpreter-v2

This opens the GUI where you can select a window to capture and configure all settings.

Hotkeys

Key Action
Space Toggle overlay on/off (configurable in GUI)

In banner mode, you can drag the overlay to reposition it.

Overlay Modes

Banner Mode (default)

A subtitle bar at the bottom of the screen displaying translated text. Draggable, opaque background, centered text.

Inplace Mode

Transparent overlay positioned over the game window. Translated text appears directly over the original Japanese text at OCR-detected positions. Click-through so you can interact with the game.

Configuration

All settings are configured through the GUI and saved to ~/.interpreter/config.yml.

How It Works

  1. Screen Capture - Captures the target window at the configured refresh rate
  2. OCR - MeikiOCR extracts Japanese text (optimized for pixel fonts)
  3. Translation - Sugoi V4 translates Japanese to English
  4. Display - Shows translated text in the selected overlay mode

Troubleshooting

Poor OCR accuracy

Try adjusting the OCR confidence slider in the GUI. Lower values include more text (but may include garbage), higher values are stricter.

Slow performance

First run downloads models (~1.5GB). Subsequent runs use cached models from ~/.cache/huggingface/.

What's New in v2

  • Inplace overlay mode - Text appears directly over game text
  • Translation caching - Fuzzy matching reduces redundant translations
  • Improved OCR - Punctuation excluded from confidence calculation
  • Better window capture - Excludes overlapping windows, auto-detects fullscreen
  • Multi-display support - Overlay appears on the same display as the game

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

interpreter_v2-2.8.0.tar.gz (4.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

interpreter_v2-2.8.0-py3-none-any.whl (566.3 kB view details)

Uploaded Python 3

File details

Details for the file interpreter_v2-2.8.0.tar.gz.

File metadata

  • Download URL: interpreter_v2-2.8.0.tar.gz
  • Upload date:
  • Size: 4.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for interpreter_v2-2.8.0.tar.gz
Algorithm Hash digest
SHA256 1d9b47e30a84316adc50637e989f0d1456f4843c36206b4e599d6e6e83d12816
MD5 2af3f15cf0b2ccbdf683dc91c428e4d9
BLAKE2b-256 fad637f61fd278c98b53b7df9f9991b9aa6158451ea2e54a161d4ccc1001d567

See more details on using hashes here.

File details

Details for the file interpreter_v2-2.8.0-py3-none-any.whl.

File metadata

  • Download URL: interpreter_v2-2.8.0-py3-none-any.whl
  • Upload date:
  • Size: 566.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for interpreter_v2-2.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 60849b1ab00478ca3854a1192ed9ed8d2d068dae199356034314a6cf516edfd9
MD5 2f770c5ba66e2e71ec01702c3c771893
BLAKE2b-256 840f740cbe08ea0eade23bea9d41c927d0f436a70b1ba8c3df3b8194019a4e75

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page