Skip to content
vEduardovichPublic

About

Dodari2 AI Translator / 도다리2 AI 번역기

Topics

Resources

Stars

238 stars

Watchers

5 watching

Forks

Repository files navigation

Dodari 2

English | 한국어
Dodari 2 is a multilingual AI translator that translates
EPUB, PDF, and TXT documents with genre-aware, context-sensitive accuracy.
-------
*Successor to Dodari 1 (released March 2024)

Install with AI

  • Required app: Codex or Claude Code
  • Minimum plan: ChatGPT Plus or higher, or Claude Pro or higher
  1. Enter this prompt
https://github.com/vEduardovich/dodari install Dodari
  1. If the AI asks for permission, "Allow"
  2. When the login window opens, sign in, then "Continue"
  3. When the Dodari window opens, installation is complete

Overview

Key Features

  1. Translates EPUB (e-books), PDF, and TXT files.
  2. Note: To preserve layout, PDF translation output is saved as EPUB rather than PDF. Complex formulas and tables are embedded as images.
  3. Outputs two files: Translation (Original) and Translation only — allowing sentence-by-sentence comparison with the source.
  4. Automatic language detection.
  5. Cross-translation between Korean · English · Japanese · Chinese · French · Italian · Dutch · Danish · Swedish · Norwegian · Arabic · Persian.
  6. Automatic book genre detection.
  7. Selectable translation tone/style.
  8. Glossary — extract key terms (names, etc.) with AI and apply them consistently throughout.
  9. No file size limit.
  10. Claude and ChatGPT (Codex) subscribers can translate with their own subscription via the official CLI, and pick the model and reasoning effort in the UI. The defaults are built in; you can change them in your own dodari_config.json.

System Requirements

AI Model Gemma4 e4b 8bit Gemma4 31b 4bit
Recommendation Minimum (standard quality) Recommended (high quality)
Model description Fast and comfortable translation Deep context, rich vocabulary
Subjective quality Feels better than DeepL Close to Gemini quality
Storage 10 GB free space 35 GB SSD or more
Python 3.11 or higher —
Mac Chip Apple Silicon M1 or later M3 Pro / M4 Max or later
Unified Memory 8 GB – 16 GB 32 GB
OS macOS Ventura 13.0 or later Latest version recommended
Windows GPU Not required 24 GB VRAM or more
RAM 8 GB 64 GB
Windows Windows 10 (22H2) or later Windows 11

Installation & Setup

For beginners:

  1. Click Download ZIP
  2. Extract the archive, then:
  • Windows: double-click start_windows.bat
  • Mac: run sh start_mac.sh in a terminal window
  • Ubuntu/Linux: run sh start_ubuntu.sh in a terminal window
  1. Open http://127.0.0.1:7860 in your browser — Dodari 2 will be ready.

On first run, setup and AI model download will take a long time. Please be patient! If you encounter an error, delete the dodari_env folder and run the script again.


For advanced users:
git clone https://github.com/vEduardovich/dodari.git
cd dodari
  • Windows: run start_windows.bat
  • Mac: run sh start_mac.sh
  • Ubuntu/Linux: run sh start_ubuntu.sh

The Claude (subscription CLI) engine translates with the Haiku model (claude-haiku-5-5) at reasoning effort max. Pick another model or reasoning effort in the UI to translate with that instead. If your claude CLI is too old for Haiku, Dodari updates it automatically.


Project Structure

dodari/
├── dodari_env         # Folder where runtime dependencies are installed
├── dodari.py          # Main application
├── start_mac.sh       # Mac launch script
├── start_ubuntu.sh    # Ubuntu(vLLM) launch script
├── start_windows.bat  # Windows launch script
├── dodari_config.json # (optional, you create it) your settings over the built-in defaults (subscription CLI models/reasoning effort, Ubuntu vLLM options) — not tracked by git
├── ui_config.local.json # Last UI choices (language, engine, CLI model/effort) — written automatically, not tracked by git
├── ui_config.json     # Kept only so older installs update cleanly — do not edit
└── requirements.txt   # Dependency list

Updating to the Latest Version

For beginners:

  1. Download the ZIP again and extract it.
  2. Overwrite the existing Dodari folder with the new files.

For advanced users:

  1. git pull

Your settings are kept. Dodari saves your UI choices in ui_config.local.json. To change a setting such as the Ubuntu vLLM memory options, create dodari_config.json in the Dodari folder and put in only the values you change (keys and defaults: DODARI_CONFIG_DEFAULTS in dodari.py):

{"vllm": {"gpu_memory_utilization": 0.85}}

Git does not track these two files, so updates never overwrite them and git pull is not blocked. Do not edit ui_config.json.

If git pull stops because untracked files such as AGENTS.md or CLAUDE.md would be overwritten (an AI assistant may have created them in the folder), rename or delete those files and run git pull again.

Translation Speed Reference

  1. The M5 Max is a very high-end machine — the M1 Pro numbers are more representative for most users.
  2. Novels are text-only, so EPUB and PDF translation speeds are similar.
  3. Books with many images or code blocks translate faster as PDF — PDFs skip translating images entirely and embed them as-is, while EPUB translates tables and detailed flags too.
  4. Running ChatGPT Plus's Luna model at max, a 900-page programming book took about 10 hours and used about 28% of the 5-hour limit and about 5% of the weekly limit. That's close to free.
BookMacBookepubpdf
e4b (standard)31b (high quality)e4b (standard)31b (high quality)
1984
(novel)
M1 Pro 16 GB133 min—133 min—
M5 Max 128 GB40 min135 min41 min136 min
Pro Git
(IT book)
M1 Pro 16 GB137 min—65 min—
M5 Max 128 GB45 min159 min21 min81 min
  1. Windows is considerably slower.
  • On a 2020 LG Gram laptop, translating one page of the novel 1984 took 15 minutes for EPUB and 18 minutes for PDF (the first PDF load can take up to 20 minutes)
  • So on a typical Windows laptop, a 100-page EPUB would take roughly 1,500 minutes (25 hours). 200 pages = 50 hours. That said, watching your computer work tirelessly for you is strangely satisfying

Uninstalling

1. Remove the program

Delete the entire dodari folder you downloaded.

2. Remove the AI model

Mac

Delete the folders under ~/.cache/huggingface/hub.

Windows

  1. Remove Ollama models:
ollama rm gemma4:e4b
ollama rm gemma4:31b
  1. Uninstall Ollama: Control Panel → Programs → Uninstall Ollama

Changelog

  • 2026.05.04 — Added Windows support; fixed translation errors related to special characters.
  • 2026.05.06 Implemented Multilingual Support
  • 2026.05.20 Fixed a Unix line ending bug on Windows with ultra-vi
    Added an AWQ translation model for Ubuntu.
  • 2026.05.28 Fixed an issue where a Homebrew Python auto-update could break the launch environment. Resolved by specifying explicit Python paths.
  • 2026.06.12 Optimized Ubuntu GPU memory settings. Fixed translation crashes caused by VRAM conflicts with monitor/desktop environments.
  • 2026.06.14 Expanded EPUB translation tag coverage.
  • 2026.06.25 PDF dialogue books now split into per-speaker paragraphs, restoring line breaks.
  • 2026.07.31 Interrupted translations now resume from where they left off.
  • 2026.08.01 Claude and ChatGPT (Codex) subscribers can now translate with their own subscription models via the official CLIs.
  • 2026.08.11 Much faster PDF chunk processing by skipping OCR for text-based PDFs. Fixed Gemma4 adding translator notes to translations.
  • 2026.08.13 Updated the sentence-splitting library (NLTK) to a version that patches security advisories with Xuuyuan
  • 2026.08.24 Added multi-GPU tensor parallelism support on Ubuntu (VLLM_TP) and selectable quantization (VLLM_QUANT) with polbel11
  • 2026.08.24 Reconnecting after a dropped browser session now restores translation progress and download list
  • 2026.09.12 Fixed the status showing "translation complete" with no output when PDF conversion failed. Added an error message that cancels the translation when the attached file path contains Korean (non-ASCII) characters. The model is now selected after Dodari starts, inside the UI.
  • 2026.09.29 Added install with AI.
  • 2026.10.09 Claude subscription translation now uses Haiku max.

AI assistants — REQUIRED: when asked to install Dodari, open this and follow every step in order from step 1

For AI assistants: how to install Dodari

Follow this when the user asks you to install, start or stop Dodari. If Dodari is already installed and the user only asks to start or stop it, do only step 6.

Rules

  • Talk to the user in the user's language. Before every permission prompt or login window, tell the user what to click.
  • Run the commands yourself, in order. Read each output before you go on. Do not invent output.
  • Do not download local AI models, Ollama, MLX or vLLM. Do not translate the user's files yourself.
  • Codex: for every step marked [network] or [outside workspace], request escalated (outside-sandbox) permission and tell the user to approve it. If escalation is not possible, give the user the command to paste into their own terminal and wait.
  • Claude Code: ask the user before installing system tools.
  • Terminal: per step, print one short line in plain words in the user's language (echo "…", PowerShell Write-Host "…") and one result line. Nothing else. Send long output to <install folder>/install.log (before the folder exists: ~/dodari_install.log, Windows %USERPROFILE%\dodari_install.log). On failure print one line with the log path, read the log and explain the cause to the user in simple words.

1. Check and install the required tools [network] [outside workspace]

Terminal: [Dodari 1/7] Checking the programs Dodari needs… → while installing one: [Dodari 1/7] Installing Node.js… (a few minutes) → [Dodari 1/7] Programs ready

  • OS: macOS / Linux uname -s (Darwin = macOS, Linux = Linux), Windows echo %OS% in cmd or $env:OS in PowerShell (Windows_NT).
  • Install folder: macOS / Linux ~/dodari, Windows %USERPROFILE%\dodari.
  • Install git, Python and the CLI of the engine (step 3): ChatGPT by default (Node.js + codex CLI), claude CLI only for Claude.
  • Install only what is missing. Check the command itself, also inside the Codex app or Claude Code desktop.
Tool Needed for Check macOS Windows Linux (Debian/Ubuntu)
git both engines git --version xcode-select --install (a system dialog opens: tell the user to click Install) or brew install git winget install --id Git.Git -e sudo apt install -y git
Python 3.11+ both engines macOS / Linux: python3.14, python3.13, python3.12, python3.11 or python3 with --version. Windows: python --version or py --version brew install python@3.12 (Homebrew: https://brew.sh) or the installer from https://www.python.org/downloads/ winget install --id Python.Python.3.12 -e Ubuntu 24.04+: sudo apt install -y python3.12 python3.12-venv, Ubuntu 22.04: sudo apt install -y python3.11 python3.11-venv
Node.js + npm codex-cli node --version and npm --version brew install node winget install --id OpenJS.NodeJS.LTS -e the current LTS from https://nodejs.org/en/download
codex CLI codex-cli codex --version npm install -g @openai/codex npm install -g @openai/codex npm install -g @openai/codex
claude CLI claude-cli claude --version curl -fsSL https://claude.ai/install.sh | bash powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://claude.ai/install.ps1 | iex" curl -fsSL https://claude.ai/install.sh | bash
  • Apple Silicon Mac: use a native (arm64) Python, such as Homebrew's in /opt/homebrew.
  • Windows: if a User Account Control prompt appears, tell the user to click Yes. After installing, open a new terminal and check again.
  • Add >> ~/dodari_install.log 2>&1 to each install command (Windows cmd >> "%USERPROFILE%\dodari_install.log" 2>&1). Add --accept-source-agreements --accept-package-agreements to winget.

2. Get Dodari [network] [outside workspace]

Terminal: [Dodari 2/7] Downloading Dodari… → [Dodari 2/7] Download complete (already there: [Dodari 2/7] Dodari is already here)

  • If the install folder already contains dodari.py, skip this step.
  • macOS / Linux: git clone https://github.com/vEduardovich/dodari.git ~/dodari >> ~/dodari_install.log 2>&1
  • Windows: git clone https://github.com/vEduardovich/dodari.git "%USERPROFILE%\dodari" >> "%USERPROFILE%\dodari_install.log" 2>&1

3. Save the settings [outside workspace]

Terminal: [Dodari 3/7] Saving settings… → [Dodari 3/7] Settings saved

Write ui_config.local.json in the install folder before running any start script (create it if it does not exist; git does not track it). If it exists, keep its other keys and set only ui_lang, engine and cli_models. Do not edit ui_config.json.

  • Engine: ChatGPT (codex-cli, gpt-6-luna, max) by default. Use Claude (claude-cli, claude-haiku-5-5, max) if the user asked for Claude or has only a Claude subscription.
  • ui_lang: the user's language, one of ko, en, ja, zh, fr, it, nl, da, sv, no, ar, fa (anything else: en).

ChatGPT (codex-cli):

{"ui_lang": "en", "engine": "codex-cli", "cli_models": {"codex-cli": {"model": "gpt-6-luna", "effort": "max"}}}

Claude (claude-cli):

{"ui_lang": "en", "engine": "claude-cli", "cli_models": {"claude-cli": {"model": "claude-haiku-5-5", "effort": "max"}}}

4. Install the dependencies [network] [outside workspace]

Terminal: [Dodari 4/7] Installing the files Dodari needs… (about 2 minutes) → [Dodari 4/7] Install complete (failed: [Dodari 4/7] Install failed. Details: ~/dodari/install.log)

OS Command
macOS cd ~/dodari && DODARI_SETUP_ONLY=1 bash start_mac.sh > install.log 2>&1
Linux cd ~/dodari && DODARI_SETUP_ONLY=1 bash start_ubuntu.sh > install.log 2>&1
Windows (cmd) cd /d "%USERPROFILE%\dodari" && set "DODARI_SETUP_ONLY=1" && start_windows.bat > install.log 2>&1
Windows (PowerShell) $env:DODARI_SETUP_ONLY="1"; & "$env:USERPROFILE\dodari\start_windows.bat" > "$env:USERPROFILE\dodari\install.log" 2>&1; Remove-Item Env:DODARI_SETUP_ONLY
  • Success: the last line of install.log is Setup complete (DODARI_SETUP_ONLY=1): Dodari was not started. (check with tail -n 1 ~/dodari/install.log, PowerShell Get-Content "$env:USERPROFILE\dodari\install.log" -Tail 1).
  • "Python 3.11 or higher is required": go back to step 1.
  • Failed: delete the dodari_env folder if it is still there and run the command again.

5. Log in [network] [outside workspace]

Terminal: [Dodari 5/7] Checking your ChatGPT login… → login needed: [Dodari 5/7] Sign in in the login window that just opened and click 'Continue' (allow) there. You are done when the page says you are signed in. and [Dodari 5/7] If you don't see the window, open this address: <address> → [Dodari 5/7] Login complete (already logged in: [Dodari 5/7] Already logged in; Claude: Claude and 'Authorize')

ChatGPT (codex-cli): CODEX_HOME is codex.home in dodari_config.json in the install folder if that file exists and sets it (default ~/.dodari/codex-home; ~ is the home folder, %USERPROFILE% on Windows). The commands below use the default.

  • Create the folder: macOS / Linux mkdir -p "$HOME/.dodari/codex-home", Windows cmd if not exist "%USERPROFILE%\.dodari\codex-home" mkdir "%USERPROFILE%\.dodari\codex-home".
  • Check: macOS / Linux CODEX_HOME="$HOME/.dodari/codex-home" codex login status, Windows cmd set "CODEX_HOME=%USERPROFILE%\.dodari\codex-home" && codex login status, PowerShell $env:CODEX_HOME="$env:USERPROFILE\.dodari\codex-home"; codex login status. Exit code 0 (Logged in …): go to step 6.
  • Log in: run the same command with codex login instead of codex login status, in the background with its output in <install folder>/login.log, for example CODEX_HOME="$HOME/.dodari/codex-home" nohup codex login > ~/dodari/login.log 2>&1 &. If you cannot run it in the background, run it normally.

Claude (claude-cli):

  • Check: claude auth status --json. "loggedIn": true: go to step 6.
  • Log in: nohup claude auth login > ~/dodari/login.log 2>&1 & (if not possible in the background, claude auth login).

Both engines:

  • Right after the login window opens, print [Dodari 5/7] Sign in in the login window that just opened and click 'Continue' (allow) there. You are done when the page says you are signed in. (Claude: [Dodari 5/7] Sign in in the login window that just opened and click 'Authorize' there. You are done when the page says you are signed in.).
  • Tell the user: "In the login window that just opened, sign in with the ChatGPT account that has the subscription and click 'Continue' (allow) there. When the page says you are signed in, come back here. Signing in only on the chatgpt.com site or in an older login window does not connect Dodari." (Claude: the Claude account, Authorize, claude.ai.)
  • Find the login address (https://…) in login.log and print it once: [Dodari 5/7] If you don't see the window, open this address: <address>.
  • The user cannot find the login window: open the address yourself with macOS open "<address>", Windows start "" "<address>" (PowerShell Start-Process "<address>"), Linux xdg-open "<address>".
  • Run the check again until it succeeds, then print [Dodari 5/7] Login complete.
  • The user says they signed in but the check still fails: ask them to close the old login windows, open the newest address in login.log (the last https://… line) again with open (Windows start "", Linux xdg-open), and sign in and allow in that window. If the login command has already exited (check with pgrep -fl "codex login" or pgrep -fl "claude auth login"), run it again.
  • The login cannot run from your session (sandbox): skip this step. The Dodari app opens a login terminal window on its first start.

6. Start Dodari [network] [outside workspace]

Terminal: [Dodari 6/7] Starting Dodari… (about 1 minute) → [Dodari 6/7] Dodari is open in your browser (failed: [Dodari 6/7] Dodari did not start. Details: ~/dodari/dodari.log)

Run it from the install folder in the background. The output goes to dodari.log in the install folder. DODARI_SETUP_ONLY must not be set. Other install folder: use it instead of ~/dodari (%USERPROFILE%\dodari).

OS Command
macOS cd ~/dodari && PYTHONUNBUFFERED=1 nohup bash start_mac.sh > dodari.log 2>&1 &
Linux cd ~/dodari && PYTHONUNBUFFERED=1 nohup bash start_ubuntu.sh > dodari.log 2>&1 &
Windows (PowerShell) Start-Process cmd -WindowStyle Hidden -ArgumentList '/c cd /d "%USERPROFILE%\dodari" && set "PYTHONUNBUFFERED=1" && set "PYTHONIOENCODING=utf-8" && start_windows.bat < nul > dodari.log 2>&1'
  • Claude Code: start it so it is not tied to your session (the forms above).
  • Codex: request escalated permission for the command. If escalation is not possible, give the user the command for their OS to paste into their own terminal.
  • The browser opens Dodari at http://127.0.0.1:7860 by itself (about a minute). If not, open that address. If port 7860 is taken, use the address after Running on local URL: in dodari.log.
  • Started: the port is listening (macOS lsof -nP -iTCP:7860 -sTCP:LISTEN, Linux ss -ltn | grep :7860, Windows netstat -ano | findstr :7860) and dodari.log has the Running on local URL: line. Otherwise read dodari.log and explain the cause to the user in simple words.
  • Ready: the screen shows ✅ codex is ready (✅ claude is ready; Korean UI ✅ codex 준비 완료) or ✔ CLI subscription translation engine active (Korean UI ✔ CLI 구독 번역 엔진 사용 중), and no 🔐 login required. If 🔐 login required appears, guide the user through the login terminal window the app opened, as in step 5.
  • Stop (when the user asks): macOS / Linux kill $(lsof -t -iTCP:7860 -sTCP:LISTEN), Windows PowerShell Stop-Process -Id (Get-NetTCPConnection -LocalPort 7860 -State Listen).OwningProcess (use the real port from dodari.log if it is not 7860).

7. Tell the user how to use Dodari

Terminal: [Dodari 7/7] All done! Next time, ask your AI "Start Dodari".

Give this summary in the user's language, with the real folder and the button name of the user's UI language (English Start Translation, Korean 번역 실행하기). Other install folder: replace ~/dodari/outputs (Windows %USERPROFILE%\dodari\outputs) with the outputs folder inside it.

Dodari is installed and connected to your ChatGPT (or Claude) subscription.
1. Open Dodari: ask your AI "Start Dodari". To open it yourself, do as in "Installation & Setup" in the README, in the dodari folder: Windows: double-click start_windows.bat. Mac: run sh start_mac.sh in a terminal window. Ubuntu/Linux: run sh start_ubuntu.sh in a terminal window. The browser shows Dodari at http://127.0.0.1:7860.
2. Upload: drag an EPUB, PDF or TXT file into the "1. Select files to translate" box (Step 1).
3. Check the target language (Step 2). Genre and bilingual layout are optional (Step 3).
4. Click "Start Translation" (Step 4). Progress appears in the Status box.
5. Results: the download list under the Status box, and the folder ~/dodari/outputs (Windows: %USERPROFILE%\dodari\outputs).
To quit: ask your AI "Turn off Dodari", or press Ctrl+C in the terminal window where you started it yourself.

© 2026 Dodari Project. All rights reserved.

About

Dodari2 AI Translator / 도다리2 AI 번역기

Topics

Resources

Stars

238 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages