DOCX translator using DeepL
Project description
docx-translator-smith
A lightweight, developer-friendly DOCX translation tool powered by the DeepL API.
Provides both a Python library and CLI tools for batch-translating Microsoft Word (.docx) files while preserving structure.
Features
- Translate DOCX documents using the DeepL API
- Preserve document structure (runs, paragraphs, tables)
- Automatic deduplication for translation memory efficiency
- Batch translation (entire folders)
- Benchmark mode to measure throughput and latency
- CLI commands suitable for automation
Installation
pip install docx-translator-smith
Requires Python 3.11+.
Quick Start (CLI)
Translate an entire directory:
docx-translator translate-dir -s EN -t JA -i in_docs -o out_docs
Benchmark translation performance:
docx-translator-bench --src EN --tgt JA --input-dir in_docs --output-dir out_docs -v
Example Makefile for end users
If you prefer a simple make interface in your own project (not for developing this library itself), you can use a wrapper Makefile like the one below.
Adjust the VENV path to your virtual environment, save this as Makefile (or Makefile_sample.mk) in your project root, and run make help to see the available targets.
# Define variables
VENV := /path/to/venv
BIN = $(VENV)/bin
PYTHON = $(BIN)/python
.DEFAULT_GOAL := help
.PHONY: help ende deen ende-pro deen-pro
help: ## Show this help message
@echo "Usage: make [target]"
@echo ""
@echo "Targets:"
@printf " \033[36m%-15s\033[0m %s\n" "help" "Show this help message"
@grep -E '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) \
| grep -v '^help:' \
| sort \
| awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}'
# ----------------------------------------------
# English <-> German Using FREE endpoint
# ----------------------------------------------
ende: ## Batch translate: in_docs -> out_docs, EN → DE
$(PYTHON) -m docx_translator.cli \
translate-dir \
-s EN -t DE \
-i in_docs -o out_docs \
deen: ## Batch translate: in_docs -> out_docs, DE → EN
$(PYTHON) -m docx_translator.cli \
translate-dir \
-s DE -t EN \
-i in_docs -o out_docs \
# ----------------------------------------------
# English <-> German Using PRO endpoint
# ----------------------------------------------
ende-pro: ## Batch translate: in_docs -> out_docs, EN → DE
$(PYTHON) -m docx_translator.cli \
translate-dir \
-s EN -t DE \
-i in_docs -o out_docs \
--pro
deen-pro: ## Batch translate: in_docs -> out_docs, DE → EN
$(PYTHON) -m docx_translator.cli \
translate-dir \
-s DE -t EN \
-i in_docs -o out_docs \
--pro
This sample Makefile is not installed by the package; it is only provided here as a reference for end users who like a make-based workflow.
🐍 Quick Start (Python)
from docx_translator import DocxTranslator
translator = DocxTranslator()
translator.translate_file(
input_path="example.docx",
output_path="example.ja.docx",
source_lang="EN",
target_lang="JA",
)
Requirements
- DeepL API key
- Python 3.11 or later
python-docx,requests
Export your DeepL API key:
export DEEPL_API_KEY="your-key"
Note on Authentication: Since version 0.1.2, this tool uses the
Authorization: DeepL-Auth-Key <key>header as recommended by the latest DeepL API specifications.
DeepL API Endpoint (Free / Pro)
DocxTranslator itself is endpoint-agnostic.
DeepL Free / Pro selection is handled by the translation engine (DeepLEngine),
typically via the CLI or engine configuration.
Default behavior (Free)
By default, the DeepL Free endpoint is used:
https://api-free.deepl.com/v2/translate
Using DeepL Pro (CLI)
Enable the Pro endpoint explicitly when using the CLI:
docx-translator translate-dir -s EN -t JA -i in_docs -o out_docs --pro
This switches the endpoint to:
https://api.deepl.com/v2/translate
Python usage note
The Python API does not select endpoints via DocxTranslator.
If needed, configure the DeepL engine explicitly and inject it:
from docx_translator import DocxTranslator, DeepLEngine
engine = DeepLEngine(pro=True)
translator = DocxTranslator(engine=engine)
Development
git clone https://github.com/yeiichi/docx-translator
cd docx-translator
make venv
make install
make test
Build & publish:
make build
make dist-check
make publish
License
MIT License © 2026 Eiichi Yamamoto
See LICENSE for full text.
Author
Eiichi Yamamoto
Project Status
This is an Alpha release — stable for CLI use, but internal APIs may evolve.
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file docx_translator_smith-0.1.2.tar.gz.
File metadata
- Download URL: docx_translator_smith-0.1.2.tar.gz
- Upload date:
- Size: 26.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af6a50b37be2ba4336dd87bf60ac10735b5cd656735f7d2a6a3db0f207c58b41
|
|
| MD5 |
b5f57d5334fb2652f16c4f494e78cc8b
|
|
| BLAKE2b-256 |
be9b98362b82be113441fefb50a70932499620ee09c75660f8a6f4f1c7ffa48f
|
File details
Details for the file docx_translator_smith-0.1.2-py3-none-any.whl.
File metadata
- Download URL: docx_translator_smith-0.1.2-py3-none-any.whl
- Upload date:
- Size: 24.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f1b18ae8eaaa7339c1337affbd7856852c8e19239e674098b0d9babe28e2f85
|
|
| MD5 |
452a272b824b28a7ca362402e4bf2cf2
|
|
| BLAKE2b-256 |
67ea1b446cca35d7454d9b7ff4540ac2b6253283e530b2a413fe958d07b83cf6
|