enhancement
major
minor
major
minor
major
#30012
Translator: erkannte Ausgangssprache bei automatischer Spracherkennung zurückgeben
Problem
Translator.translate(text, null, targetLanguage) übersetzt mit automatischer Spracherkennung, gibt aber nur den übersetzten Text zurück. Welche Sprache erkannt wurde, erfährt der Aufrufer nicht.
DeepL liefert die erkannte Sprache in der Antwort als detected_source_language. Das Protokoll-Objekt deepl.protocol.Translation liest den Wert auch ein (getDetectedSourceLanguage()). DeepLTranslator.getTranslationFromJSONString setzt aber nur die Texte zusammen und verwirft die erkannte Sprache.
Anwendungsfall
Die Release-Notes-Anwendung übersetzt Trac-Tickets bei der Synchronisation fest von Deutsch nach Englisch. Manche Tickets sind auf Englisch geschrieben und müssten von Englisch nach Deutsch übersetzt werden. Dazu muss die Anwendung die Sprache des Originaltexts kennen.
Vorschlag
- Neuer Werttyp, z.B. Translation, mit dem übersetzten Text und der erkannten Ausgangssprache (normalisiert wie in getSupportedLanguages(), also z.B. de, en).
- Neue Methode in Translator, z.B. Translation translateDetecting(String text, String targetLanguage). Die Default-Implementierung ruft translate(text, null, targetLanguage) auf und gibt als erkannte Sprache null (unbekannt) zurück.
- DeepLTranslator überschreibt die Methode und übernimmt detected_source_language aus der ersten Translation der Antwort.
- TranslationService reicht die Methode an den konfigurierten Translator durch, einschließlich der Größenbegrenzung (handleTranslationSize) und der Fehlerbehandlung wie in translate.
Akzeptanzkriterien
- Ein englischer Text mit Zielsprache en liefert die erkannte Sprache en.
- Ein deutscher Text mit Zielsprache en liefert den übersetzten Text und die erkannte Sprache de.
- Bestehende Aufrufe von translate(...) verhalten sich unverändert.