Easydict for Windows
Easy to look up words or translate text
A Windows port of Easydict
Table of Contents
Introduction
This is a Windows port of Easydict, originally a macOS translation dictionary app. The project was developed using Vibe Coding - AI-assisted programming to migrate the Swift/SwiftUI codebase to .NET + WinUI 3.
Easydict supports Copilot+ PC enhanced local AI translation: on supported Copilot+ PCs with a 40+ TOPS NPU, translations run on-device via Phi Silica for fast, private output. Foundry Local is supported on regular Windows PCs, with OpenVINO NLLB-200 as an offline fallback — standard translation services remain fully available on every Windows device.
While the feature set is not yet complete compared to the macOS version, this port fills the gap for Windows users who want a convenient translation tool with global hotkey support and multiple translation services.
Back to Top
Screenshots

Main Window with Mini Window (Quick Translate)
| Main Window | All Windows | Settings |
|---|
 |  |  |
| Full translation interface | Main + Mini + Fixed windows with hotkey settings | Service configuration |

Light & Dark Mode — Mini Window (Quick Translate)
| Grammar Correction | Dictionary Mode | Long Document Translation |
|---|
 |  |  |
| AI-powered grammar correction | Word definitions, phonetics, and examples | PDF/Text/Markdown translation with progress |
| OCR Screenshot Translate | Mouse Selection Translate |
|---|
 |  |
| Capture screen region → OCR → translate | Select text in any app → click to translate |
Back to Top
Features
-
Copilot+ PC Enhanced Local AI Translation - Windows Local AI runs on-device with NPU acceleration via Phi Silica on supported Copilot+ PCs (40+ TOPS), Foundry Local on regular Windows PCs, or OpenVINO NLLB-200 as an offline fallback. Auto mode picks the best available provider; standard cloud translation services remain fully available everywhere.
-
OCR Screenshot Translate - Snipaste-style screen capture: press Ctrl+Alt+S to capture a screen region, auto-detect windows or drag to select, then OCR the text and translate. Uses Windows OCR API with configurable recognition language. Also supports silent OCR (Ctrl+Alt+Shift+S) that copies recognized text to clipboard without translating.
-
Mouse Selection Translate - Select text in any app (drag, double-click, or triple-click) and click the floating pop button to translate instantly in Mini Window
-
Grammar Correction Mode - AI-powered grammar correction that highlights errors and provides corrected text with explanations
-
Long Document Translation - Translate PDF, plain text, and Markdown documents with ML-based layout detection, formula protection, parallel processing, bilingual output, and translation cache
-
Dictionary Mode - Word definitions, phonetics, and example sentences powered by Google Dict and Linguee
-
MDX Dictionary - Import MDict (.mdx) dictionary files for offline word lookups with rich HTML rendering
-
Global Hotkeys
Ctrl+Alt+T - Show/hide main window
Ctrl+Alt+D - Translate clipboard content
Ctrl+Alt+M - Show mini window (copies selection and translates when available)
Ctrl+Alt+F - Show fixed window
Ctrl+Alt+S - OCR screenshot translate
Ctrl+Alt+Shift+S - Silent OCR (copy recognized text to clipboard)
Ctrl+Alt+Shift+M - Toggle mini window visibility
Ctrl+Alt+Shift+F - Toggle fixed window visibility
-
Multiple Window Modes
- Main Window - Full translation interface
- Mini Window - Compact floating window
- Fixed Window - Persistent translation window
-
LLM Streaming Translation - Real-time display of translation results
Back to Top
Installation
System Requirements
- Windows 10 version 2004 (build 19041) or later
- x64 or ARM64 processor
Install via winget
winget install xiaocang.EasydictforWindows
Download
Download from the Releases page.
Portable Version (Recommended)
File: easydict_win32-vX.Y.Z-x64.zip
- No installation required - extract and run
- No administrator privileges needed
- Self-contained (.NET runtime included)
- First run may trigger Windows SmartScreen warning - click "More info" → "Run anyway"
# Extract and run
Expand-Archive easydict_win32-v1.0.0-x64.zip -DestinationPath Easydict
.\Easydict\Easydict.WinUI.exe
Verify Download (Optional)
Each release includes SHA256 checksums for verification.
# Linux/macOS/WSL
sha256sum -c checksums-x64.sha256 --ignore-missing
# PowerShell
$expected = (Get-Content checksums-x64.sha256 | Select-String "easydict_win32").ToString().Split()[0]
$actual = (Get-FileHash easydict_win32-v1.0.0-x64.zip -Algorithm SHA256).Hash.ToLower()
if ($expected -eq $actual) { "OK" } else { "FAILED" }
Build from Source
# Clone repository
git clone https://github.com/xiaocang/easydict_win32.git
cd easydict_win32/dotnet
# Build
dotnet build src/Easydict.WinUI/Easydict.WinUI.csproj -c Release
# Run
dotnet run --project src/Easydict.WinUI/Easydict.WinUI.csproj
Back to Top
Tech Stack
- .NET - Runtime framework
- WinUI 3 (Windows App SDK) - Modern Windows UI framework
- C# - Programming language
- xUnit + FluentAssertions - Unit testing
Back to Top
Translation Service Integration Tests
| Service | Protocol | Status | Notes |
|---|
| Google Translate | REST | ✅ | Free, no API key |
| Bing Translate | REST | ✅ | Free, no API key |
| Youdao | REST | ✅ | Web + OpenAPI |
| OpenAI | OpenAI API | ✅ | |
| DeepSeek | OpenAI API | ✅ | |
| Gemini | Gemini API | ✅ | Custom SSE streaming |
| Zhipu AI | OpenAI API | ✅ | |
| Volcano Engine | REST | ✅ | HMAC-SHA256 signing |
| Groq | OpenAI API | — | OpenAI-compatible, missing API key |
| GitHub Models | OpenAI API | — | OpenAI-compatible, missing API key |
| Doubao | Custom SSE | — | Missing API key |
| DeepL | REST | — | Missing API key |
| Caiyun | REST | — | Missing API key |
| NiuTrans | REST | ✅ | |
| Linguee | REST | — | Not tested |
| Google Dict | REST | ✅ | |
| Ollama | OpenAI API | — | Requires local Ollama setup |
| BuiltIn AI | OpenAI API | — | Embedded key |
| Custom OpenAI | OpenAI API | — | OpenAI-compatible, user-defined endpoint |
> Services marked OpenAI API extend BaseOpenAIService and share the same OpenAI-compatible implementation, so untested ones are expected to work similarly.
Back to Top
TODO
High Priority
Medium Priority
Low Priority
Distribution
Back to Top
Comparison with macOS Version
| Feature | macOS | Windows |
|---|
| Translation Services | 25+ | 20 |
| OCR Screenshot Translation | Yes | Yes |
| TTS | Yes | Yes |
| Selection Translation | Yes | Yes |
| Grammar Correction | No | Yes |
| Long Document Translation | No | Yes |
| Dictionary Mode | Yes | Yes |
| Window Types | 3 | 3 |
| Global Hotkeys | 10+ | 8 |
| LLM Streaming | Yes | Yes |
| Traditional Chinese | Yes | Yes |
Back to Top
Comparison with pdf2zh
pdf2zh (PDFMathTranslate) is a popular open-source PDF translation tool focused on scientific papers. The table below compares the long document translation capabilities of the two.
| Feature | pdf2zh | Easydict Win32 |
|---|
| Layout Detection | DocLayout-YOLO | ONNX (DocLayout-YOLO) / Vision LLM / Heuristic / Auto |
| Formula Protection | LaTeX preservation | Three-tier detection, multi-font glyph rendering, subscript/superscript handling |
| LLM Backends | OpenAI, Ollama, Azure OpenAI, etc. | OpenAI, Gemini, DeepSeek, Groq, Zhipu, GitHub Models, Doubao, Ollama, Custom OpenAI-compatible |
| Document Context Pass | No | Yes — glossary + summary + preservation hints extracted before block translation for terminology consistency |
| Translation Cache | No | Yes — SQLite cache keyed by source hash + service + language pair |
| Parallel Translation | Limited | Configurable concurrency with retry + quality feedback |
| OCR Fallback (Scanned PDF) | No | Yes — Windows OCR for image-only pages |
| CJK Font Handling | Basic | Built-in CJK font resolver + TrueType CMAP parser + automatic font download |
| Page Range Selection | Yes | Yes (1-3,5,7-10 or all) |
| UI | CLI + minimal GUI | Native WinUI 3 app with progress, preview, cancellation |
| Integration | Standalone | Part of full translation dictionary app (OCR, selection, hotkeys, streaming, etc.) |
| Platform | Cross-platform (Python) | Windows 10/11 (native .NET 8) |
Back to Top
License
GPL-3.0 - For learning and communication purposes only. License and copyright notice must be included when using source code.
Back to Top
Acknowledgements
This project was developed using Vibe Coding, with AI-assisted programming by Claude (Anthropic).