DeepL Translator releasesself-updates
WordPress plugin for translating pages and taxonomy terms via DeepL API (Polylang)
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/dmytrivdev/deepl-translator/releases/download/v2.1.6/deepl-translator.zipShips its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.
Readme
DeepL Translator
WordPress plugin that translates entire pages and taxonomy terms via the DeepL API, using Polylang for language management.
Features
- Translates page title, excerpt, and all Gutenberg blocks in one click
- Custom blocks — uses
translate.jsonschema for precise field control - Repeater fields at any nesting depth
- Rich text with HTML tags preserved (
<mark>,<br>,<strong>) - Internal URLs resolved to target language via Polylang
- Post object IDs swapped for translated equivalents
- Synced patterns (
core/block) — translated copies created automatically - Theme meta fields — auto-detected by theme text domain prefix
- Taxonomy term translation — name, slug, and term meta
- Works on new draft translations before first save
Requirements
- WordPress 6.3+
- PHP 8.1+
- Polylang (free or Pro)
- DeepL API key (free or pro)
Installation
- Go to Releases and download the latest
deepl-translator.zip - In WordPress admin: Plugins → Add New → Upload Plugin
- Upload the zip and activate
- Go to Settings → DeepL Translator and enter your DeepL API key
Configuration
Settings → DeepL Translator
| Field | Description |
|---|---|
| DeepL API Key | Your DeepL API key |
| API Type | Free or Pro |
| Block folders | One folder per line, relative to wp-content/. Each should contain block subfolders with a translate.json file |
Block folders example:
plugins/my-blocks/blocks
themes/my-theme/blocks
After adding or editing any translate.json files — click Clear block.json cache.
Adding translation support for a custom block
Create translate.json in the block folder alongside block.json:
{
"name": "myplugin/my-block",
"attributes": {
"title": { "translate": "rich" },
"description": { "translate": "rich" },
"buttonText": { "translate": "string" },
"buttonLink": { "translate": "url" },
"buttonLinkId":{ "translate": "postobject" },
"buttonType": { "translate": "ignore" },
"imageId": { "translate": "ignore" },
"imageUrl": { "translate": "ignore" }
}
}
Then go to Settings → DeepL Translator → Clear block.json cache.
Translate values
| Value | Description |
|---|---|
rich |
Rich text — HTML tags preserved |
string |
Plain text |
url |
Internal URL — resolved to target language |
postobject |
Post ID — swapped for translated equivalent |
repeater |
Array of objects — each item processed recursively |
ignore |
Skip this field |
Updating
Updates appear in the standard WordPress Admin → Updates screen when a new release is published on GitHub.
License
MIT
Read the full README on GitHub →