PHPackages                             recranet/craft-ai-translator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. recranet/craft-ai-translator

ActiveCraft-plugin

recranet/craft-ai-translator
============================

AI-powered content translation for Craft CMS (Claude, OpenAI, DeepL)

1.1.2(today)09↑2900%MITPHP

Since Jul 30Pushed todayCompare

[ Source](https://github.com/recranet/craft-ai-translator)[ Packagist](https://packagist.org/packages/recranet/craft-ai-translator)[ RSS](/packages/recranet-craft-ai-translator/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (2)Versions (5)Used By (0)

AI Translator for Craft CMS
===========================

[](#ai-translator-for-craft-cms)

AI-powered content translation for multi-site Craft CMS installations. In-house replacement for the Multi Translator plugin.

Features
--------

[](#features)

- **Providers**: Claude (Anthropic), OpenAI (GPT) and DeepL behind a single interface — switch in the plugin settings
- **Element types**: entries, categories and global sets
- **Bulk element action**: select entries/categories in any index → "Translate with AI" → choose target sites; translations run as queue jobs
- **Sidebar button**: translate the entry/category you're editing from any other site in one click
- **Per-field buttons**: a small "Translate" button on Plain Text, CKEditor and Redactor fields (shown when editing a non-primary-language site)
- **Utility**: translation status per section/site (translated, outdated, missing) plus bulk translate forms for sections, category groups and globals (Utilities → AI Translator)
- **Supported content**: titles, Plain Text, CKEditor/Redactor (HTML structure preserved), Matrix (recursive, incl. nested Matrix), SEOmatic meta title/description/keywords
- **Translation tracking**: every run stores a per-field hash of the source; later runs only re-translate fields whose source changed, and outdated translations are surfaced in the utility
- **Draft or direct save**: per action, editors choose whether translations land as a draft (review first) or are saved directly; repeated draft runs reuse the same draft
- **Skip or overwrite**: fields that were manually translated (deviating target without a tracking record) are left alone; overwrite mode replaces everything
- **Slug updates**: slugs are regenerated from the translated title (configurable)
- **Resilient**: transient provider failures (rate limits, timeouts, malformed output) are retried with backoff
- **Glossary &amp; tone of voice**: brand terms that must never be translated, and free-form style instructions (Claude/OpenAI only)

Requirements
------------

[](#requirements)

- Craft CMS 5.0+
- A multi-site install with sites in different languages
- An API key for at least one provider

Installation
------------

[](#installation)

```
composer require recranet/craft-ai-translator
php craft plugin/install ai-translator
```

Configuration
-------------

[](#configuration)

Settings → Plugins → AI Translator:

SettingDescriptionProviderClaude, OpenAI or DeepLAPI keySupports env vars, e.g. `$ANTHROPIC_API_KEY`ModelModel id for Claude/OpenAI (defaults: `claude-sonnet-5`, `gpt-4o-mini`)GlossaryTerms that must never be translated, one per lineTone of voiceExtra prompt instructions (e.g. "Gebruik informele aanspreekvorm")Default save modeDraft or direct save (editors can override per action)Overwrite by defaultWhether existing translations are replacedBatch sizeMax texts per API requestGrant the **Translate content with AI** permission to the user groups that may translate.

### Permissions

[](#permissions)

`ai-translator:translate` only grants access to the tool. Every translation is additionally checked against the acting user's own element permissions: they must be able to view the element in the source site and save it (or create drafts for it) in the target site, including `editSite` access to both. Queued jobs re-check at execution time, so revoking access also stops jobs that are already queued. The utility only lists sections, category groups, global sets and sites the user can edit.

How field skipping works
------------------------

[](#how-field-skipping-works)

Without overwrite:

- Fields **previously translated by the plugin** (tracked via a source-value hash) are re-translated only when the source changed since — note this replaces any manual edits made to the AI translation of that field. Draft-mode and direct-save translations are tracked separately, so content that only exists in a draft never makes the live element look translated.
- Fields **never translated by the plugin** are translated when the target is empty or still an untranslated copy of the source; a deviating target is assumed manually translated and skipped.

Known limitations
-----------------

[](#known-limitations)

- Supported top-level elements: entries, categories, global sets (Matrix nested entries are handled recursively).
- Global sets are always saved directly; Craft doesn't support drafts for globals.
- Table fields are not translated.
- DeepL ignores the glossary and tone-of-voice settings (no prompt support); HTML is handled via DeepL's native `tag_handling`.
- SEOmatic fields inside Matrix blocks are not translated.

Development
-----------

[](#development)

```
composer install
composer test
```

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance100

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

4

Last Release

0d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/bdd6d6951efb85c875a00f2ff0e04c4be6bfc2d5943d37cdafd510cd68d3878b?d=identicon)[recranet](/maintainers/recranet)

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/recranet-craft-ai-translator/health.svg)

```
[![Health](https://phpackages.com/badges/recranet-craft-ai-translator/health.svg)](https://phpackages.com/packages/recranet-craft-ai-translator)
```

###  Alternatives

[spicyweb/craft-neo

A Matrix-like field type with block hierarchy

393813.5k10](/packages/spicyweb-craft-neo)[verbb/formie

The most user-friendly forms plugin for Craft.

101393.6k74](/packages/verbb-formie)[solspace/craft-freeform

The most flexible and user-friendly form building plugin!

54681.3k22](/packages/solspace-craft-freeform)[verbb/vizy

A flexible visual editor field for Craft.

4250.4k](/packages/verbb-vizy)[verbb/hyper

A user-friendly links field for Craft.

24147.8k12](/packages/verbb-hyper)[verbb/events

A full-featured plugin for event management and ticketing.

2311.9k](/packages/verbb-events)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
