DeepL & AI Translations
for Kirby CMS

One click translates entire pages, including nested blocks. Select target languages in the Panel or automate via CLI.
Overview demonstration of translating content with DeepL in Kirby Panel and CLI: paused

One-Click Translation
in Kirby Panel

Demonstration of using view buttons for one-click translation in Kirby Panel: paused

The Translation Cherry
on Your Content Cake

All Fields
Supports blocks, layout, list, object, structure, tags, text, textarea, and writer fields. Nested structures are recursively translated.
Blueprint-Aware
Reads each blueprint to find translatable fields. `translate: false` is respected at any nesting depth.
AI-Powered Translation
Use OpenAI, Anthropic, Google, or Mistral via Kirby Copilot for context-aware AI translations.

Automate with the
PHP API

Integrate translations into CLI commands, hooks, or custom workflows. Full programmatic control over copying and translating content.
  • CLI Commands
    Create Kirby CLI commands to batch translate pages
  • Full Control
    Copy, translate, and sync content programmatically
use JohannSchopplich\ContentTranslator\Translation\Strategies\CopilotAIStrategy;
use Kirby\CLI\CLI;

return [
    'description' => 'Translate all blog posts to German via AI',
    'command' => static function (CLI $cli): void {
        $kirby = $cli->kirby();
        $source = $kirby->defaultLanguage()->code();
        $strategy = new CopilotAIStrategy();

        foreach (page('blog')->children() as $post) {
            $translator = $post->translator();
            $translator->copyContent('de', $source);
            $translator->translateContent('de', 'de', $source, $strategy);
            $translator->translateTitle('de', 'de', $source);
            $cli->out('✓ ' . $post->title());
        }

        $cli->success('All posts translated!');
    }
];

Still scrolling?

Test the plugin locally and see how it can improve your workflow. Pay only when you are ready to go live.