DeepL Write 

Extension key

deepl_write

Package name

web-vision/deepl-write

Version

2.0

Language

en

Copyright

2024

Author

web-vision GmbH

Rendered

Mon, 06 Jul 2026 15:56:40 +0000

License

This document is published under the Open Publication License.


This extension integrates the DeepL Write / Rephrase API into the TYPO3 backend to improve texts, adjust their tone and writing style or translate them into simple language, both while editing RTE fields and while localizing records.


Introduction 

Introduction to the extension, general information.

Administration 

Install or upgrade deepl_write, learn how to configure the extension.

Reference 

In-depth reference about certain aspects of this extension:

  • Extension configuration

Known Issues 

Known issues and information about them.

Developer 

Extend the extension, for example by adding readability calculators for additional languages.

Changelog 

Learn about what have changed and what actions are required to process.

What does it do? 

This extension provides the ability to use DeepL Write for RTE fields to make translations and switching between different formalities of languages.

Install via web-vision/deepl-write or EXT:deepl_write.

Contribution 

Contributions are essential to the success of open source projects, but they are by no means limited to contributing code. Much more can be done, for example by improving the documentation.

Contribution workflow 

  1. Please always create an issue on Github before starting a change. This is very helpful to understand what kind of problem the pull request solves, and whether your change will be accepted.
  2. Bug fixes: Please describe the nature of the bug you wish to report and provide how to reproduce the problem. We will only accept bug fixes if we can can reproduce the problem.
  3. Features: Not every feature is relevant to the majority of users. In addition: We do not want to complicate the usability of this extension for a marginal feature. It helps to have a discussion about a new feature before opening a pull request.
  4. Please always create a pull request based on the updated release branch. This ensures that the necessary quality checks and tests are performed as a quality can be performed.

Sponsors 

No sponsoring for DeepL Write integration yet. Contact us if you have a feature idea and are eager to sponsor the feature development.

Installation 

The extension has to be installed like any other TYPO3 CMS extension. You can download the extension using one of the following methods:

only the extension itself
composer require -W \
   'web-vision/deepl-write':'~2.0.0@dev'
Copied!
requiring depending TYPO3 extensions along the way
composer require -W \
    'web-vision/deeplcom-deepl-php':'~1.18.0@dev' \
    'web-vision/deepl-base':'~2.0.0@dev' \
    'web-vision/deepl-write':'~2.0.0@dev'
Copied!
  1. Switch to the module System > Extensions.
  2. Switch to Get Extensions
  3. Search for the extension key deepl_write
  4. Import the extension from the repository.
  1. Get current version from TER by downloading the zip version. Alternatively, get the zip from the Github Releases page.
  2. Switch to the module System > Extensions.
  3. Enable upload Upload Extension
  4. Select or drag extension ZIP archive and upload the file

The extension then needs to be configured in order to use the DeepL Write features.

Compatibility 

DeepL Write supports:

DeepL Write version TYPO3 Version PHP version Supported Composer TER
2.x 14.3.x 8.2, 8.3, 8.4, 8.5 yes web-vision/deepl-write deepl_write
2.x 13.4.x 8.2, 8.3, 8.4, 8.5 yes web-vision/deepl-write deepl_write
1.x 13.4.x 8.2, 8.3, 8.4, 8.5 yes web-vision/deepl-write deepl_write
1.x 12.4.x 8.1, 8.2, 8.3, 8.4 yes web-vision/deepl-write deepl_write

Configuration 

Set up DeepL API (PRO) key 

Go to the extension configuration in Admin Tools > Settings > Extension Configuration.

Open the settings for deepl_write and add your API key.

Set up translation language 

  1. Go to Site Management > Sites and edit your site configuration
  2. Switch to tab Languages and open your target
  3. Go to DeepL Settings and set up your DeepL Write language

Upgrade 1.x to 2.x 

The 2.x version drops support for TYPO3 v12 and adds support for TYPO3 v14, see Breaking: Removed TYPO3 v12 support and Feature: Added TYPO3 v14 support.

Apart from the changed supported TYPO3 versions the functionality stayed the same and no greater actions are needed.

composer-mode 

composer require -W \
   "web-vision/deepl-write":"2.0.*@dev"
Copied!

classic-mode 

  1. Get it from the Extension Manager: Switch to the module System > Extensions. Switch to Get Extensions and search for the extension key deepl_write and import the extension from the repository.
  2. Get it from typo3.org: You can always get current version from TER by downloading the zip version. Upload the file afterwards in the Extension Manager.
  3. Get it from GitHub release: TER upload archives are added to the corresponding GitHub release page, in case you need to download or update the extension and GITHUB_RELEASES is down or not reachable.

Extension Configuration 

Some general settings must be configured in the Extension Configuration.

  1. Go to Admin Tools > Settings > Extension Configuration
  2. Choose deepl_write

DeepL API Key 

apiKey

apiKey
type

string

Add your DeepL API (PRO) Key here.

Known Issues 

None so far. If you find an issue, feel free to contribute.

Developer 

Information for developers who want to extend deepl_write.

Readability calculators 

Learn how the readability score is calculated and how to add custom readability calculators for additional languages.

Readability Calculators 

The DeepL Write overlay shows a Flesch reading-ease score for the edited text (see the feature description). The score is computed by small, language specific readability calculators that can be extended by third-party extensions.

How it works 

Each calculator implements WebVision\DeeplWrite\Readability\ReadabilityCalculatorInterface – usually by extending WebVision\DeeplWrite\Readability\Calculator\AbstractReadabilityCalculator – and is registered through the deepl.readability service tag. At runtime ReadabilityCalculatorRegistry selects the calculator whose language matches the primary subtag of the editor content language, so en-US and en-GB both resolve to the English calculator. If no calculator matches, or the text contains no countable words, no score is reported and the overlay keeps working.

The base class provides the shared text metrics – counting sentences, words (unicode aware) and syllables (via org_heigl/hyphenator) – guards against empty input and caps the score at the maximum of 100. A concrete calculator therefore only has to provide the language specific formula.

Supported languages 

The following languages ship with a documented Flesch reading-ease adaptation, where ASL is the average sentence length (words / sentences) and ASW the average number of syllables per word (syllables / words):

Language Formula Adaptation
English (en) 206.835 - 1.015 * ASL - 84.6 * ASW Flesch
German (de) 180 - ASL - 58.5 * ASW Amstad
French (fr) 207 - 1.015 * ASL - 73.6 * ASW Kandel & Moles
Italian (it) 206 - ASL - 65 * ASW Franchina & Vacca
Portuguese (pt) 248.835 - 1.015 * ASL - 84.6 * ASW Martins et al.

Adding a language 

To support an additional language, add a class that extends AbstractReadabilityCalculator, declare the language it serves (LANGUAGE) and the hyphenation locale used for syllable counting (HYPHENATION_LOCALE, matching a dictionary shipped by org_heigl/hyphenator such as de, en, es, fr, it or pt), and implement the language specific formula in calculateScore(). Tag it with #[AutoconfigureTag('deepl.readability')] so it is picked up automatically:

<?php

declare(strict_types=1);

namespace Vendor\MyExtension\Readability\Calculator;

use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag;
use WebVision\DeeplWrite\Readability\Calculator\AbstractReadabilityCalculator;

#[AutoconfigureTag('deepl.readability')]
final class FleschReadingEaseSpanish extends AbstractReadabilityCalculator
{
    // Primary language subtag matched against the editor content language.
    protected const LANGUAGE = 'es';

    // Locale of the org_heigl/hyphenator dictionary used for syllables.
    protected const HYPHENATION_LOCALE = 'es';

    protected function calculateScore(
        float $averageSentenceLength,
        float $averageSyllablesPerWord,
    ): float {
        // Return the language specific Flesch reading-ease score; the base
        // class guards empty input and caps the result at the maximum of 100.
        return 206.84 - 1.02 * $averageSentenceLength - 60.0 * $averageSyllablesPerWord;
    }
}
Copied!

ChangeLog 

Every change to the web-vision/deepl-write extension is documented here.

Breaking: Removed TYPO3 v12 support 

Description 

Support for TYPO3 v12 has been removed for 2.x based on our dual TYPO3 core version support per major version as casual support matrix.

This includes removing code paths and configurations only required for TYPO3 v12.

Impact 

TYPO3 v12 or older instances cannot update to the 2.x version and are required to upgrade TYPO3 to be able to install the next version of the EXT:deepl_write together with EXT:deepl-base (2.x) and related packages when released in a compatible version.

Extension cannot be installed in that version but does not break otherwise.

Affected installations 

TYPO3 v12 or older instances with EXT:deepl_write version 1.x.

Migration 

Upgrade TYPO3 to supported version for 2.x beforehand or in the same step with upgrading/installing EXT:deepl_write.

Feature: Readability score in RTE overlay 

Description 

The DeepL Write RTE overlay now displays a Flesch reading-ease score for both the original and the optimized text, giving editors immediate feedback on how readable a text is before and after rephrasing.

The score is shown as a coloured marker bar above each text area and is updated for the optimized text once the rephrasing result is returned.

Readability is calculated per content language using a language specific Flesch reading-ease formula. German, English, French, Italian and Portuguese are supported out of the box, and regional variants such as en-US or pt-BR are matched by their primary language subtag. For unsupported languages or empty texts no score is reported and the overlay keeps working without interruption.

DeepL Write RTE overlay showing the readability score for the original and the optimized text

Impact 

Editors using the DeepL Write overlay in the rich text editor get an at-a-glance readability indication for the text they are working on, helping to judge whether a rephrasing actually improves readability.

Developer 

The readability score is computed by small, language specific calculators. Each calculator implements ReadabilityCalculatorInterface (usually by extending AbstractReadabilityCalculator) and is registered through the deepl.readability service tag. At runtime ReadabilityCalculatorRegistry selects the calculator whose language matches the primary subtag of the editor content language.

Out of the box the following languages are provided, each using a documented Flesch reading-ease adaptation, where ASL is the average sentence length (words / sentences) and ASW the average number of syllables per word (syllables / words):

  • English (en) — Flesch: 206.835 - 1.015 * ASL - 84.6 * ASW
  • German (de) — Amstad: 180 - ASL - 58.5 * ASW
  • French (fr) — Kandel & Moles: 207 - 1.015 * ASL - 73.6 * ASW
  • Italian (it) — Franchina & Vacca: 206 - ASL - 65 * ASW
  • Portuguese (pt) — Martins et al.: 248.835 - 1.015 * ASL - 84.6 * ASW

Adding a language 

To support an additional language, add a class that extends AbstractReadabilityCalculator, declare the language it serves and the hyphenation locale used for syllable counting, and implement the language specific formula. Tag it with #[AutoconfigureTag('deepl.readability')] so it is registered automatically:

<?php

declare(strict_types=1);

namespace Vendor\MyExtension\Readability\Calculator;

use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag;
use WebVision\DeeplWrite\Readability\Calculator\AbstractReadabilityCalculator;

#[AutoconfigureTag('deepl.readability')]
final class FleschReadingEaseSpanish extends AbstractReadabilityCalculator
{
    // Primary language subtag matched against the editor content language.
    protected const LANGUAGE = 'es';

    // Locale of the org_heigl/hyphenator dictionary used for syllables.
    protected const HYPHENATION_LOCALE = 'es';

    protected function calculateScore(
        float $averageSentenceLength,
        float $averageSyllablesPerWord,
    ): float {
        // Return the language specific Flesch reading-ease score; the base
        // class guards empty input and caps the result at the maximum of 100.
        return 206.84 - 1.02 * $averageSentenceLength - 60.0 * $averageSyllablesPerWord;
    }
}
Copied!

The base class handles word, sentence and syllable counting (the latter via org_heigl/hyphenator, which ships dictionaries for de, en, es, fr, it and pt), guards against empty input and caps the score at 100, so a calculator only has to provide the formula.

Feature: Added TYPO3 v14 Support 

Description 

TYPO3 v14.3.* has been added coming with following changes:

Handling and visual difference between TYPO3 v13 and v14 

For TYPO3 v14 the streamlined and revamped overall localization handling is adopted, implementing the LocalizationHandlerInterface and making use of the new Localization Handler feature. That means, that the look and feel is different based on the used TYPO3 version even with the same extension version. Some examples:

  • TYPO3 v14 localization handler selection:

    Select `DeepL Write` localization handler in TYPO3 v14
  • TYPO3 v13 localization mode selection in PageLayout module:

    Select `DeepL Write` localization mode in TYPO3 v13

Impact 

web-vision/deepl-write can now be installed and used in TYPO3 v14.3 instances.

Supported features are completely available for TYPO3 v13 and v14, except that generic TYPO3 handling is used provided by these versions.

Sitemap