Problem/Motivation
Currently the following code in DeepLTranslator.php has the following logic:
try {
$translator = new Translator($this->config['api_key'], $options);
$translated = $translator->translateText($text, NULL, $targetLang, $options);
}
catch (\Exception $e) {
return $text;
}
This can cause confusion when the actual API key is not working because the exception returns the original text instead of the translation and gives the following message to the end user:
The text and its translation are the same so maybe there was an error trying to translate it. Was the text already written on the current language?
The actual exception includes a lot more information. The exception message in our case was:
"Authorization failure, check authentication key, ". The reason for the exception is not obvious in the UI.
Steps to reproduce
1. Configure the module with an API key that does not work.
2. Try to translate the text.
Proposed resolution
We should log the exception in dblog and perhaps also add an additional error message for the end user when authentication fails.
This could for example happen when an existing API Key is deactivated from DeepL.
Remaining tasks
Add error handling in the case that there is an exception from DeepL.
User interface changes
Show a better error message for the end user when the API key is not working. Currently the message is a bit confusing when the page language is different than the original text.
API changes
None.
Data model changes
None.