LL::translate()
\nn\t3::LL()->translate($srcText = '', $targetLanguageKey = 'EN', $sourceLanguageKey = 'DE', $apiKey = NULL);
Translates a text via DeepL. An API key must be entered in the Extension Manager. DeepL allows the translation of up to 500,000 characters / month free of charge.
\nn\t3::LL()->translate( 'The horse does not eat cucumber salad' );
\nn\t3::LL()->translate( 'The horse does not eat cucumber salad', 'EN' );
\nn\t3::LL()->translate( 'The horse does not eat cucumber salad', 1 );
\nn\t3::LL()->translate( 'The horse does not eat cucumber salad', 'EN', 'DE' );
\nn\t3::LL()->translate( 'The horse does not eat cucumber salad', 1, 0 );
\nn\t3::LL()->translate( 'The horse does not eat cucumber salad', 'EN', 'DE', $apiKey );
Copied!
@param string $srcText Text to be translated
@param string|int $targetLanguageKey Target language (e.g. 'EN' or '1')
@param string|int $sourceLanguageKey Source language (e.g. 'DE' or '0')
@param string $apiKey DeepL Api key (if not defined in the ExtensionManager)
@return string
Source Code
public function translate( $srcText = '', $targetLanguageKey = 'EN', $sourceLanguageKey = 'DE', $apiKey = null )
{
$deeplConfig = \nn\t3::Environment()->getExtConf('nnhelpers');
if (!$apiKey) {
$apiKey = $deeplConfig['deeplApiKey'] ?? false;
}
if (!$this->sysLanguages) {
$this->sysLanguages = \nn\t3::Environment()->getLanguages('languageId', 'iso-639-1');
}
// convert numeric language_uid to language string
if (is_numeric($targetLanguageKey)) {
$targetLanguageKey = $this->sysLanguages[$targetLanguageKey];
}
if (is_numeric($sourceLanguageKey)) {
$sourceLanguageKey = $this->sysLanguages[$sourceLanguageKey];
}
if (!$apiKey || !$deeplConfig['deeplApiUrl']) {
return 'Bitte API Key und URL für DeepL im Extension-Manager angeben';
}
$srcText = \nn\t3::Convert($srcText)->toUTF8();
$params = [
'text' => '<LL>' . $srcText . '</LL>',
'source_lang' => strtoupper($sourceLanguageKey),
'target_lang' => strtoupper($targetLanguageKey),
'tag_handling' => 'xml',
];
$headers = [
'Authorization' => 'DeepL-Auth-Key ' . $apiKey,
];
$result = \nn\t3::Request()->POST( $deeplConfig['deeplApiUrl'], $params, $headers );
if ($result['status'] != 200) {
die('[ERROR] Fehler bei POST-Query an ' . $deeplConfig['deeplApiUrl'] . ' [' . $result['status'] . '] ' . $result['content']);
return "[ERROR] Fehler bei POST-Query an {$deeplConfig['deeplApiUrl']} [{$result['status']}, {$result['error']}]";
}
$json = json_decode( $result['content'], true ) ?: ['error' => 'JSON leer'];
if (!$json || !isset($json['translations'][0]['text'])) {
return "[ERROR] Fehler bei Übersetzung. Kein Text von DeepL zurückgegeben oder JSON konnte nicht geparsed werden.";
}
$text = $json['translations'][0]['text'] ?? '';
$text = trim(str_replace(['<LL>', '</LL>'], '', $text));
$text = str_replace( ">.\n", ">\n", $text);
return $text;
}
Copied!