DeepLStrategy
Translate via DeepL with automatic batching and retries – the default strategy when DeepL is configured.
Selected automatically when johannschopplich.content-translator.DeepL.apiKey is set and no other strategy is configured. Inject a custom DeepL client to override language mapping or stub it out in tests.
Behavior
Units are sent via DeepL::translateMany() (auto-chunked at 50 texts per request). Table cells fall back to single requests to preserve per-cell context. Failed batches keep the source text and trigger content-translator.translate:warning; TranslationException is thrown only when zero units survive.
Selected via
'strategy' => 'deepl'. Also the default fallback when no strategy is configured – DeepL is the always-on default. The AuthException for a missing DeepL.apiKey is raised lazily on the first execute() call.Construction
public function __construct(DeepL|null $deepL = null)
deepL
DeepL | null
Inject a custom
DeepL client – useful in tests or when you want non-singleton instances. Defaults to DeepL::instance().Usage
config.php
return [
'johannschopplich.content-translator' => [
'strategy' => 'deepl',
'DeepL' => [
'apiKey' => env('DEEPL_API_KEY'),
],
],
];
use JohannSchopplich\ContentTranslator\Translation\Strategies\DeepLStrategy;
use JohannSchopplich\ContentTranslator\Translator;
Translator::translateText('Hello', 'de', 'en', new DeepLStrategy());
use JohannSchopplich\ContentTranslator\DeepL;
use JohannSchopplich\ContentTranslator\Translation\Strategies\DeepLStrategy;
return [
'johannschopplich.content-translator' => [
'strategy' => new DeepLStrategy(new DeepL()),
],
];