Skip to main content
Version: 2.0.0

i18n

i18n translates Craft entries from one site to another automatically. Instead of an editor manually retyping every field into every language, i18n queues translation jobs that copy content from a source entry to its counterpart in a target site, running the text through a translation provider (Google, DeepL, ChatGPT, Gemini, LibreTranslate, MyMemory, Apertium, Argos Translate or Lingva) on the way.

It is aimed at multi-site Craft installs where the store or content site exists in more than one language and new content is added continuously (new entries, new products, ongoing marketing pages), so a purely manual translation workflow does not scale.

What it actually does

  • Section-to-section translation jobs. A job maps a source section/site pair to a target section/site pair, lists which fields to translate (or explicit field-to-field mappings when source and target field handles differ), and runs on a schedule or on demand.
  • Provider fallback chain. Each job (or the plugin defaults) can define an ordered sequence of providers. If the first provider fails or is unavailable, i18n automatically retries with the next one in the sequence.
  • Entry conditions. A job can be restricted to entries matching a Craft entry condition (the same condition builder used elsewhere in the CP), so only a subset of entries in a section gets auto-translated.
  • Safe re-runs. By default i18n only translates entries it has not translated yet (translateUntranslatedOnly) and skips a target entry whose content has already diverged from a straight translation (skipMismatchedTargets), so it does not silently overwrite a manual editorial change. Both behaviors can be turned off per job when a full re-translation is actually wanted.
  • Digest emails. A scheduled or on-demand email summarizes translation job statistics (queued/completed/remaining/errors) to a configurable recipient list, hourly, every two hours, or daily.
  • Dashboard, statistics, status and logs. The CP section (see Usage) has a dashboard, a per-job statistics view, a per-entry status table (translated / blocked / errored), and a log viewer for troubleshooting failed translations.
  • MCP integration. When the craft-mcp plugin is installed, i18n exposes its jobs, statistics and status as MCP tools so an AI agent (Craft CP copilot, or an external MCP client) can list jobs, trigger a run, and read back statistics/status without opening the CP. See Developer / MCP & console.

Admin use cases

  • Launch a secondary-language storefront without a translation team. Configure a job from the primary site's Products section to the new language site's Products section, pick a provider, and let i18n keep new and updated products translated automatically.
  • Keep marketing/content sections in sync across sites. Point a job at a content/pages section so new campaign pages appear (auto-translated) in every site shortly after they are published on the source site.
  • Protect manual edits from being overwritten. Leave skipMismatchedTargets enabled so once a translator or editor hand-edits a target entry, i18n stops touching it (unless "always translate fields" is explicitly enabled for that job).
  • Get a daily summary instead of babysitting the queue. Configure digest recipients and frequency once; the digest email reports how many entries are queued, translated, and blocked/errored so an admin knows when a provider is failing without checking the CP every day.
  • Run translations from cron/CI instead of the CP. Use the php craft i18n/translate/* console commands to queue and run jobs from a scheduled task, without a browser session (see Developer / MCP & console).

What it does not do

  • It does not translate live, per-request storefront content (it is not a runtime |translate filter) — it writes translated values into the target entry's fields via the Craft queue, asynchronously.
  • It is not a translation memory / CAT tool; it does not offer in-CP side-by-side manual translation editing. Its job is to keep entries in sync automatically, and to fall back to another provider when one fails.
  • It does not manage the sites/locales themselves — Craft's own multi-site configuration (Settings → Sites) is a prerequisite.

See also