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)

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.

Controls

Default hotkeys (configurable in config.yml):

Key Action
Space Toggle overlay on/off
m Switch mode: banner ↔ inplace
- Decrease font size
= Increase font size
q Quit

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

Custom Hotkeys

You can customize hotkeys in config.yml:

hotkeys:
  toggle_overlay: "space"   # Toggle overlay on/off
  switch_mode: "m"          # Switch between banner/inplace
  increase_font: "="        # Increase font size
  decrease_font: "-"        # Decrease font size
  quit: "q"                 # Quit application

Supported key values:

  • Single characters: a-z, 0-9, `, -, =, etc.
  • Function keys: f1-f12
  • Special keys: space, escape, enter, tab, backspace, delete, insert, home, end, page_up, page_down, up, down, left, right

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

Edit config.yml:

# Window to capture (partial title match)
window_title: "Tales"

# Refresh rate in seconds
refresh_rate: 0.5

# OCR confidence threshold (0.0-1.0)
# Filters out garbage text by average per-line confidence
ocr_confidence: 0.6

# Subtitle appearance
font_size: 24
font_color: "#FFFFFF"
background_color: "#404040"

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 ocr_confidence in config. 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
  • Mode cycling - Press m to switch between off/banner/inplace
  • Font size adjustment - Press -/= to resize on the fly
  • 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.3.1.tar.gz (4.3 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.3.1-py3-none-any.whl (558.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: interpreter_v2-2.3.1.tar.gz
  • Upload date:
  • Size: 4.3 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.3.1.tar.gz
Algorithm Hash digest
SHA256 7f37273308a079fbba8e3e78a0e85b6a1f02f903a1adfc221d6a0195449b7ef4
MD5 ce86023a3bb717696829be1a0aa34496
BLAKE2b-256 7ed25e0d5e7c8ff2bcf2593cb7807a6557505580cfad093e7b82f0c8701351aa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: interpreter_v2-2.3.1-py3-none-any.whl
  • Upload date:
  • Size: 558.9 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.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f27fe6c9543c63d597fd6591c330482a7f9bddf040ce68f7c0771a3153b4b63e
MD5 1e04f8f14bd6acf8d4fedcf277d8ccb4
BLAKE2b-256 1ff9501c1153efb120a51dbafe99a8faf8c591afb8b2a9c9009592f0fef8e91b

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