Zum Inhalt springen
  • Dunkel
  • Hell
  • System

!translate

Zwei Optionen:

  • LibreTranslate: Free, self-host’bar, auto-detect Source-Language. Rate-Limit: 60 req/min auf libretranslate.com.
  • DeepL API: Paid, besser. 500k Zeichen free im Free-Tier. Brauchst API-Key in Header.

Anleitung unten ist LibreTranslate (POST-Request). Für DeepL siehe Erweiterungs-Ideen.

If/Else: Kein Text

Core Logic If/Else
Input %rawInput%
Operation Is Null or Empty
Then

Send Message to Channel

Twitch Chat Send Message to Channel
Message @%user% nutze !translate <text>
Then

Break

Core Logic Break

Stoppt die laufende Action. Alle folgenden Sub-Actions in derselben Action werden übersprungen.

Fetch URL: LibreTranslate POST

Core Network Fetch URL

POST mit JSON-Body. Target-Lang fest auf DE: anpassen je nach Stream-Sprache.

URL https://libretranslate.com/translate
Method POST
Body Type JSON
Body {"q":"%rawInput%","source":"auto","target":"de","format":"text"}
Variable Name tr
Parse result as JSON aktiv

If/Else: Rate-Limit

Core Logic If/Else
Input %trans.0.0.0%
Operation Equals
Value 429
Then

Send Message to Channel

Twitch Chat Send Message to Channel
Message @%user% Translate-Limit erreicht. In 1 Min wieder.
Then

Break

Core Logic Break

Stoppt die laufende Action. Alle folgenden Sub-Actions in derselben Action werden übersprungen.

If/Else: Anderer Error

Core Logic If/Else
Input %trans.0.0.0%
Operation Is Null or Empty
Then

Send Message to Channel

Twitch Chat Send Message to Channel
Message @%user% Translate-API down.
Then

Break

Core Logic Break

Stoppt die laufende Action. Alle folgenden Sub-Actions in derselben Action werden übersprungen.

Send Message to Channel

Twitch Chat Send Message to Channel
Message 🌐 %tr.translatedText%
AzaBot: 🌐 Hallo, wie geht's dir heute?
So sieht's im Chat aus
  1. 1 If/Else: %rawInput% Is Null or Empty
    1. Then 1a Send Message: Hilfe
    2. Then 1b Break
  2. 2 Fetch URL (POST JSON): LibreTranslate
  3. 3 If/Else: %trans.0.0.0% Equals 429
    1. Then 3a Send Message: Rate-Limit
    2. Then 3b Break
  4. 4 If/Else: %trans.0.0.0% Is Null or Empty
    1. Then 4a Send Message: API-Down
    2. Then 4b Break
  5. 5 Send Message: 🌐 Übersetzung
FeldWert
Commands!translate
!tr
!trans
User Cooldown20
Global Cooldown5
  • Special-Chars in JSON-Body: Anführungszeichen in %rawInput% brechen das JSON. Sub-Action davor: Set Argument: cleanInput = $replace(%rawInput%, ", )$ (Quotes raus) oder C#-Escape.
  • Auto-Detect Limits: LibreTranslate auto-detect funktioniert für Top-15 Sprachen: exotische Sprachen müssen source explizit.
  • Translate own Output: !tr auf bereits-deutschen Text: Translation ist identisch, kein Schaden, aber unnötig.
  • DeepL statt LibreTranslate:
    • URL: https://api-free.deepl.com/v2/translate
    • Headers: Authorization: DeepL-Auth-Key <KEY>
    • Body: text=%rawInput%&target_lang=DE&source_lang=auto
    • Body Type: application/x-www-form-urlencoded
    • Output: %result.translations[0].text%
  • Target-Sprache als Argument: !tr en hallo → übersetzt nach EN. Set Argument auf %input0%, Body anpassen.
  • Hallo → Self-Host: Eigener LibreTranslate auf Docker (libretranslate/libretranslate), URL ändern, unbegrenztes Rate-Limit.