Zum Inhalt
Lassen Sie uns über Ihr Projekt sprechen
tW Translate Plus

tW Translate Plus

CHF 199

Leichte mehrsprachige Übersetzungen mit frei wählbarem Motor pro Seite (gpt-oss-20b, OpenAI oder Google Cloud Translation v3, jede Seite mit eigenem Schlüssel): ein einziges WordPress-Objekt, URL mit Sprachpräfix, Glossar pro Seite und manuelle Overrides.

Artikelnummer: tw-translate-plus Kategorie:

Beschreibung

tW Translate Plus macht eine WordPress-Website mehrsprachig, ohne etwas zu duplizieren: eine einzige Seite, ein einziges Produkt, ein einziger Auftrag. Das Plugin bewahrt für jeden Text das Original, die automatische Übersetzung und eventuelle manuelle Korrekturen und liefert jede Sprache unter ihrer Adresse (/en/, /de/…), von Google indexierbar.

Was übersetzt

  • Inhalte: Titel, Texte, Auszüge, Menüs, Kategorien, SEO‑Beschreibungen, WooCommerce‑Produkte.
  • Alles, was das Theme ausgibt: Template‑Beschriftungen, Abschnitte der Page‑Builder, Plugin‑Texte, Attribute alt, title, Platzhalter der Felder.
  • Texte, die an JavaScript übergeben werden (Neuheit 1.20): Konfiguratoren, Formulare und Komponenten, die ihre Texte über wp_localize_script erhalten, werden übersetzt, ohne IDs, Adressen und technische Daten zu verändern.

Echte Abdeckung, nicht nur ein Prozentsatz

Die Sprachleiste zählt die Texte, die das Plugin kennt. Die Kontrolle Echte Seitenabdeckung (Registerkarte Status) öffnet jede Seite in der Hauptsprache und in jeder aktivierten Sprache, lässt die Skripte laufen und vergleicht, was der Besucher tatsächlich liest. Die in der Originalsprache verbliebenen Texte werden Seite für Seite aufgelistet; Marken und Eigennamen werden mit einem Klick als «in allen Sprachen gleich» markiert.

Wahl des Motors, Kosten unter Kontrolle

  • Google Cloud Translation v3 oder OpenAI, mit dem Seitenschlüssel: jeder Kunde zahlt nur für seine eigenen Übersetzungen.
  • Tägliches Zeichenlimit, Hintergrundwarteschlange, keine Aufrufe an den Motor während der Besuche.
  • Übersetzungsspeicher: ein identischer Text, der einmal übersetzt wurde, wird nicht erneut berechnet.
  • Glossar pro Seite: Marken, die nicht übersetzt werden, und stets konsistente Terminologie.

Gedacht für die, die die Website verwalten

  • Manuelle Korrekturen im Tab Übersetzungen: bleiben erhalten, auch wenn der Motor neu übersetzt.
  • Sprachen können im Vorschaumodus aktiviert werden, bevor sie im Selektor, im hreflang und in der Sitemap veröffentlicht werden.
  • Vollständige mehrsprachige SEO: gegenseitige hreflang, x-default, og:locale, Sitemap pro Sprache, übersetzte URLs.
  • Kompatibel mit LiteSpeed Cache, WooCommerce, Elementor, Multisite; Migration unterstützt von WPML.

Versionen

Änderungsprotokoll

Unbefristete Lizenz: einmalige Zahlung, keine Jahresgebühr.

  • WordPress 6.2 oder neuer
  • PHP 7.4 oder neuer
  1. 1.20.3Letzte Version
    • Neuheiten · Slowakisch, korrekter WPML-Import für Begriffe, nicht-lateinische Slugs und Weiterleitungen, v1.20.3
    • Korrektur · WPML-Import von Zeichenketten schlug wegen undefiniertem $copies fehl, v1.20.2
    • Korrektur · Abdeckungsprüfungs‑Button; detaillierte Update‑Informationen v1.20.1
    • Neuheiten · Skriptdaten übersetzen und reale Seitenabdeckung prüfen v1.20.0
    • Korrektur · gerenderte Übersetzungen nicht erneut einreihen; WPML‑Tab nach Migration ausblenden v1.19.5
    • Korrektur · Leerzeichen in Kurzbeschreibung, WPML‑Variationsbeschreibungen v1.19.4
    • Korrektur · LiteSpeed ESI-Unteranfragen niemals umleiten v1.19.3
    • Neuheiten · WPML‑Import sichtbarer benutzerdefinierter Feldwerte v1.19.2
    • Korrektur · Erkennung von JetEngine‑Lazy‑Listing‑Anfragen v1.19.1
    • Neuheiten · HTML‑Fragmente in Front‑End‑AJAX‑Antworten übersetzen (JetEngine, Woo) v1.19.0
    • Korrektur · Original‑Slug für gelöschte WPML‑Kopien v1.18.3
    • Korrektur · Such‑/Feed‑/404‑Seitentexte niemals einreihen v1.18.2
    • Korrektur · Entitätsunabhängige Seitentext‑Suche v1.18.1
    • Neuheiten · WooCommerce‑Gebührenbezeichnungen übersetzen; texturierte Seitentexte im WPML‑Import; --include-trashed v1.18.0
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
  2. 1.20.2
    • Korrektur · WPML-Import von Zeichenketten schlug wegen undefiniertem $copies fehl, v1.20.2
    • Korrektur · Abdeckungsprüfungs‑Button; detaillierte Update‑Informationen v1.20.1
    • Neuheiten · Skriptdaten übersetzen und reale Seitenabdeckung prüfen v1.20.0
    • Korrektur · gerenderte Übersetzungen nicht erneut einreihen; WPML‑Tab nach Migration ausblenden v1.19.5
    • Korrektur · Leerzeichen in Kurzbeschreibung, WPML‑Variationsbeschreibungen v1.19.4
    • Korrektur · LiteSpeed ESI-Unteranfragen niemals umleiten v1.19.3
    • Neuheiten · WPML‑Import sichtbarer benutzerdefinierter Feldwerte v1.19.2
    • Korrektur · Erkennung von JetEngine‑Lazy‑Listing‑Anfragen v1.19.1
    • Neuheiten · HTML‑Fragmente in Front‑End‑AJAX‑Antworten übersetzen (JetEngine, Woo) v1.19.0
    • Korrektur · Original‑Slug für gelöschte WPML‑Kopien v1.18.3
    • Korrektur · Such‑/Feed‑/404‑Seitentexte niemals einreihen v1.18.2
    • Korrektur · Entitätsunabhängige Seitentext‑Suche v1.18.1
    • Neuheiten · WooCommerce‑Gebührenbezeichnungen übersetzen; texturierte Seitentexte im WPML‑Import; --include-trashed v1.18.0
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
  3. 1.20.1
    • Korrektur · Abdeckungsprüfungs‑Button; detaillierte Update‑Informationen v1.20.1
    • Neuheiten · Skriptdaten übersetzen und reale Seitenabdeckung prüfen v1.20.0
    • Korrektur · gerenderte Übersetzungen nicht erneut einreihen; WPML‑Tab nach Migration ausblenden v1.19.5
    • Korrektur · Leerzeichen in Kurzbeschreibung, WPML‑Variationsbeschreibungen v1.19.4
    • Korrektur · LiteSpeed ESI-Unteranfragen niemals umleiten v1.19.3
    • Neuheiten · WPML‑Import sichtbarer benutzerdefinierter Feldwerte v1.19.2
    • Korrektur · Erkennung von JetEngine‑Lazy‑Listing‑Anfragen v1.19.1
    • Neuheiten · HTML‑Fragmente in Front‑End‑AJAX‑Antworten übersetzen (JetEngine, Woo) v1.19.0
    • Korrektur · Original‑Slug für gelöschte WPML‑Kopien v1.18.3
    • Korrektur · Such‑/Feed‑/404‑Seitentexte niemals einreihen v1.18.2
    • Korrektur · Entitätsunabhängige Seitentext‑Suche v1.18.1
    • Neuheiten · WooCommerce‑Gebührenbezeichnungen übersetzen; texturierte Seitentexte im WPML‑Import; --include-trashed v1.18.0
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
  4. 1.20.0
    • Neuheiten · Skriptdaten übersetzen und reale Seitenabdeckung prüfen v1.20.0
    • Korrektur · gerenderte Übersetzungen nicht erneut einreihen; WPML‑Tab nach Migration ausblenden v1.19.5
    • Korrektur · Leerzeichen in Kurzbeschreibung, WPML‑Variationsbeschreibungen v1.19.4
    • Korrektur · LiteSpeed ESI-Unteranfragen niemals umleiten v1.19.3
    • Neuheiten · WPML‑Import sichtbarer benutzerdefinierter Feldwerte v1.19.2
    • Korrektur · Erkennung von JetEngine‑Lazy‑Listing‑Anfragen v1.19.1
    • Neuheiten · HTML‑Fragmente in Front‑End‑AJAX‑Antworten übersetzen (JetEngine, Woo) v1.19.0
    • Korrektur · Original‑Slug für gelöschte WPML‑Kopien v1.18.3
    • Korrektur · Such‑/Feed‑/404‑Seitentexte niemals einreihen v1.18.2
    • Korrektur · Entitätsunabhängige Seitentext‑Suche v1.18.1
    • Neuheiten · WooCommerce‑Gebührenbezeichnungen übersetzen; texturierte Seitentexte im WPML‑Import; --include-trashed v1.18.0
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
    • Neuheiten · WPML‑Importer, übersetzte URLs + 301, Elementor‑Links, AJAX‑Sprache v1.17.0
  5. 1.19.5
    • Korrektur · gerenderte Übersetzungen nicht erneut einreihen; WPML‑Tab nach Migration ausblenden v1.19.5
    • Korrektur · Leerzeichen in Kurzbeschreibung, WPML‑Variationsbeschreibungen v1.19.4
    • Korrektur · LiteSpeed ESI-Unteranfragen niemals umleiten v1.19.3
    • Neuheiten · WPML‑Import sichtbarer benutzerdefinierter Feldwerte v1.19.2
    • Korrektur · Erkennung von JetEngine‑Lazy‑Listing‑Anfragen v1.19.1
    • Neuheiten · HTML‑Fragmente in Front‑End‑AJAX‑Antworten übersetzen (JetEngine, Woo) v1.19.0
    • Korrektur · Original‑Slug für gelöschte WPML‑Kopien v1.18.3
    • Korrektur · Such‑/Feed‑/404‑Seitentexte niemals einreihen v1.18.2
    • Korrektur · Entitätsunabhängige Seitentext‑Suche v1.18.1
    • Neuheiten · WooCommerce‑Gebührenbezeichnungen übersetzen; texturierte Seitentexte im WPML‑Import; --include-trashed v1.18.0
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
    • Neuheiten · WPML‑Importer, übersetzte URLs + 301, Elementor‑Links, AJAX‑Sprache v1.17.0
    • Korrektur · Admin‑Hinweis, wenn keine Sprache veröffentlicht ist, kein Seiten‑Cache, solange Übersetzungen ausstehen v1.16.3
  6. 1.19.3
    • Korrektur · LiteSpeed ESI-Unteranfragen niemals umleiten v1.19.3
    • Neuheiten · WPML‑Import sichtbarer benutzerdefinierter Feldwerte v1.19.2
    • Korrektur · Erkennung von JetEngine‑Lazy‑Listing‑Anfragen v1.19.1
    • Neuheiten · HTML‑Fragmente in Front‑End‑AJAX‑Antworten übersetzen (JetEngine, Woo) v1.19.0
    • Korrektur · Original‑Slug für gelöschte WPML‑Kopien v1.18.3
    • Korrektur · Such‑/Feed‑/404‑Seitentexte niemals einreihen v1.18.2
    • Korrektur · Entitätsunabhängige Seitentext‑Suche v1.18.1
    • Neuheiten · WooCommerce‑Gebührenbezeichnungen übersetzen; texturierte Seitentexte im WPML‑Import; --include-trashed v1.18.0
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
    • Neuheiten · WPML‑Importer, übersetzte URLs + 301, Elementor‑Links, AJAX‑Sprache v1.17.0
    • Korrektur · Admin‑Hinweis, wenn keine Sprache veröffentlicht ist, kein Seiten‑Cache, solange Übersetzungen ausstehen v1.16.3
    • Korrektur · Produkttitel übersetzen, Site‑Name schützen, normalisierte Echo‑Reparatur, Worker‑Lebensfähigkeit v1.16.2
    • Korrektur · Worker‑Neustart bei veralteten Hinweisen, bestätigte unveränderte Texte akzeptieren, Sitzungs‑Seitenabruf, abgerundete Schalter‑Stile v1.16.1
  7. 1.19.2
    • Neuheiten · WPML‑Import sichtbarer benutzerdefinierter Feldwerte v1.19.2
    • Korrektur · Erkennung von JetEngine‑Lazy‑Listing‑Anfragen v1.19.1
    • Neuheiten · HTML‑Fragmente in Front‑End‑AJAX‑Antworten übersetzen (JetEngine, Woo) v1.19.0
    • Korrektur · Original‑Slug für gelöschte WPML‑Kopien v1.18.3
    • Korrektur · Such‑/Feed‑/404‑Seitentexte niemals einreihen v1.18.2
    • Korrektur · Entitätsunabhängige Seitentext‑Suche v1.18.1
    • Neuheiten · WooCommerce‑Gebührenbezeichnungen übersetzen; texturierte Seitentexte im WPML‑Import; --include-trashed v1.18.0
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
    • Neuheiten · WPML‑Importer, übersetzte URLs + 301, Elementor‑Links, AJAX‑Sprache v1.17.0
    • Korrektur · Admin‑Hinweis, wenn keine Sprache veröffentlicht ist, kein Seiten‑Cache, solange Übersetzungen ausstehen v1.16.3
    • Korrektur · Produkttitel übersetzen, Site‑Name schützen, normalisierte Echo‑Reparatur, Worker‑Lebensfähigkeit v1.16.2
    • Korrektur · Worker‑Neustart bei veralteten Hinweisen, bestätigte unveränderte Texte akzeptieren, Sitzungs‑Seitenabruf, abgerundete Schalter‑Stile v1.16.1
    • Neuheiten · HTML‑Übersetzung auf Seitenebene von allem Sichtbaren, Varianten‑Schalter‑Vorschau v1.16.0
  8. 1.19.1
    • Korrektur · Erkennung von JetEngine‑Lazy‑Listing‑Anfragen v1.19.1
    • Neuheiten · HTML‑Fragmente in Front‑End‑AJAX‑Antworten übersetzen (JetEngine, Woo) v1.19.0
    • Korrektur · Original‑Slug für gelöschte WPML‑Kopien v1.18.3
    • Korrektur · Such‑/Feed‑/404‑Seitentexte niemals einreihen v1.18.2
    • Korrektur · Entitätsunabhängige Seitentext‑Suche v1.18.1
    • Neuheiten · WooCommerce‑Gebührenbezeichnungen übersetzen; texturierte Seitentexte im WPML‑Import; --include-trashed v1.18.0
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
    • Neuheiten · WPML‑Importer, übersetzte URLs + 301, Elementor‑Links, AJAX‑Sprache v1.17.0
    • Korrektur · Admin‑Hinweis, wenn keine Sprache veröffentlicht ist, kein Seiten‑Cache, solange Übersetzungen ausstehen v1.16.3
    • Korrektur · Produkttitel übersetzen, Site‑Name schützen, normalisierte Echo‑Reparatur, Worker‑Lebensfähigkeit v1.16.2
    • Korrektur · Worker‑Neustart bei veralteten Hinweisen, bestätigte unveränderte Texte akzeptieren, Sitzungs‑Seitenabruf, abgerundete Schalter‑Stile v1.16.1
    • Neuheiten · HTML‑Übersetzung auf Seitenebene von allem Sichtbaren, Varianten‑Schalter‑Vorschau v1.16.0
    • Neuheiten · [tw_language_switcher] Shortcode mit gebündelten SVG‑Flaggen v1.15.0
  9. 1.19.0
    • Neuheiten · HTML‑Fragmente in Front‑End‑AJAX‑Antworten übersetzen (JetEngine, Woo) v1.19.0
    • Korrektur · Original‑Slug für gelöschte WPML‑Kopien v1.18.3
    • Korrektur · Such‑/Feed‑/404‑Seitentexte niemals einreihen v1.18.2
    • Korrektur · Entitätsunabhängige Seitentext‑Suche v1.18.1
    • Neuheiten · WooCommerce‑Gebührenbezeichnungen übersetzen; texturierte Seitentexte im WPML‑Import; --include-trashed v1.18.0
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
    • Neuheiten · WPML‑Importer, übersetzte URLs + 301, Elementor‑Links, AJAX‑Sprache v1.17.0
    • Korrektur · Admin‑Hinweis, wenn keine Sprache veröffentlicht ist, kein Seiten‑Cache, solange Übersetzungen ausstehen v1.16.3
    • Korrektur · Produkttitel übersetzen, Site‑Name schützen, normalisierte Echo‑Reparatur, Worker‑Lebensfähigkeit v1.16.2
    • Korrektur · Worker‑Neustart bei veralteten Hinweisen, bestätigte unveränderte Texte akzeptieren, Sitzungs‑Seitenabruf, abgerundete Schalter‑Stile v1.16.1
    • Neuheiten · HTML‑Übersetzung auf Seitenebene von allem Sichtbaren, Varianten‑Schalter‑Vorschau v1.16.0
    • Neuheiten · [tw_language_switcher] Shortcode mit gebündelten SVG‑Flaggen v1.15.0
    • Korrektur · Echo‑Übersetzungen ablehnen, gpt-oss-120b, Sicherheits‑/SEO‑/Performance‑Review‑Fixes v1.14.0
  10. 1.18.3
    • Korrektur · Original‑Slug für gelöschte WPML‑Kopien v1.18.3
    • Korrektur · Such‑/Feed‑/404‑Seitentexte niemals einreihen v1.18.2
    • Korrektur · Entitätsunabhängige Seitentext‑Suche v1.18.1
    • Neuheiten · WooCommerce‑Gebührenbezeichnungen übersetzen; texturierte Seitentexte im WPML‑Import; --include-trashed v1.18.0
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
    • Neuheiten · WPML‑Importer, übersetzte URLs + 301, Elementor‑Links, AJAX‑Sprache v1.17.0
    • Korrektur · Admin‑Hinweis, wenn keine Sprache veröffentlicht ist, kein Seiten‑Cache, solange Übersetzungen ausstehen v1.16.3
    • Korrektur · Produkttitel übersetzen, Site‑Name schützen, normalisierte Echo‑Reparatur, Worker‑Lebensfähigkeit v1.16.2
    • Korrektur · Worker‑Neustart bei veralteten Hinweisen, bestätigte unveränderte Texte akzeptieren, Sitzungs‑Seitenabruf, abgerundete Schalter‑Stile v1.16.1
    • Neuheiten · HTML‑Übersetzung auf Seitenebene von allem Sichtbaren, Varianten‑Schalter‑Vorschau v1.16.0
    • Neuheiten · [tw_language_switcher] Shortcode mit gebündelten SVG‑Flaggen v1.15.0
    • Korrektur · Echo‑Übersetzungen ablehnen, gpt-oss-120b, Sicherheits‑/SEO‑/Performance‑Review‑Fixes v1.14.0
    • Leistung · Parallele Engine‑Anfragen, schnellster OpenRouter‑Provider v1.13.0
  11. 1.18.2
    • Korrektur · Such‑/Feed‑/404‑Seitentexte niemals einreihen v1.18.2
    • Korrektur · Entitätsunabhängige Seitentext‑Suche v1.18.1
    • Neuheiten · WooCommerce‑Gebührenbezeichnungen übersetzen; texturierte Seitentexte im WPML‑Import; --include-trashed v1.18.0
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
    • Neuheiten · WPML‑Importer, übersetzte URLs + 301, Elementor‑Links, AJAX‑Sprache v1.17.0
    • Korrektur · Admin‑Hinweis, wenn keine Sprache veröffentlicht ist, kein Seiten‑Cache, solange Übersetzungen ausstehen v1.16.3
    • Korrektur · Produkttitel übersetzen, Site‑Name schützen, normalisierte Echo‑Reparatur, Worker‑Lebensfähigkeit v1.16.2
    • Korrektur · Worker‑Neustart bei veralteten Hinweisen, bestätigte unveränderte Texte akzeptieren, Sitzungs‑Seitenabruf, abgerundete Schalter‑Stile v1.16.1
    • Neuheiten · HTML‑Übersetzung auf Seitenebene von allem Sichtbaren, Varianten‑Schalter‑Vorschau v1.16.0
    • Neuheiten · [tw_language_switcher] Shortcode mit gebündelten SVG‑Flaggen v1.15.0
    • Korrektur · Echo‑Übersetzungen ablehnen, gpt-oss-120b, Sicherheits‑/SEO‑/Performance‑Review‑Fixes v1.14.0
    • Leistung · Parallele Engine‑Anfragen, schnellster OpenRouter‑Provider v1.13.0
    • Korrektur · Browser‑Autofill überschreibt API‑Schlüssel nicht mehr v1.12.2
  12. 1.18.1
    • Korrektur · Entitätsunabhängige Seitentext‑Suche v1.18.1
    • Neuheiten · WooCommerce‑Gebührenbezeichnungen übersetzen; texturierte Seitentexte im WPML‑Import; --include-trashed v1.18.0
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
    • Neuheiten · WPML‑Importer, übersetzte URLs + 301, Elementor‑Links, AJAX‑Sprache v1.17.0
    • Korrektur · Admin‑Hinweis, wenn keine Sprache veröffentlicht ist, kein Seiten‑Cache, solange Übersetzungen ausstehen v1.16.3
    • Korrektur · Produkttitel übersetzen, Site‑Name schützen, normalisierte Echo‑Reparatur, Worker‑Lebensfähigkeit v1.16.2
    • Korrektur · Worker‑Neustart bei veralteten Hinweisen, bestätigte unveränderte Texte akzeptieren, Sitzungs‑Seitenabruf, abgerundete Schalter‑Stile v1.16.1
    • Neuheiten · HTML‑Übersetzung auf Seitenebene von allem Sichtbaren, Varianten‑Schalter‑Vorschau v1.16.0
    • Neuheiten · [tw_language_switcher] Shortcode mit gebündelten SVG‑Flaggen v1.15.0
    • Korrektur · Echo‑Übersetzungen ablehnen, gpt-oss-120b, Sicherheits‑/SEO‑/Performance‑Review‑Fixes v1.14.0
    • Leistung · Parallele Engine‑Anfragen, schnellster OpenRouter‑Provider v1.13.0
    • Korrektur · Browser‑Autofill überschreibt API‑Schlüssel nicht mehr v1.12.2
    • Korrektur · Fortschrittsbalken zeigt nur den Anteil übersetzter Texte v1.12.1
  13. 1.18.0
    • Neuheiten · WooCommerce‑Gebührenbezeichnungen übersetzen; texturierte Seitentexte im WPML‑Import; --include-trashed v1.18.0
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
    • Neuheiten · WPML‑Importer, übersetzte URLs + 301, Elementor‑Links, AJAX‑Sprache v1.17.0
    • Korrektur · Admin‑Hinweis, wenn keine Sprache veröffentlicht ist, kein Seiten‑Cache, solange Übersetzungen ausstehen v1.16.3
    • Korrektur · Produkttitel übersetzen, Site‑Name schützen, normalisierte Echo‑Reparatur, Worker‑Lebensfähigkeit v1.16.2
    • Korrektur · Worker‑Neustart bei veralteten Hinweisen, bestätigte unveränderte Texte akzeptieren, Sitzungs‑Seitenabruf, abgerundete Schalter‑Stile v1.16.1
    • Neuheiten · HTML‑Übersetzung auf Seitenebene von allem Sichtbaren, Varianten‑Schalter‑Vorschau v1.16.0
    • Neuheiten · [tw_language_switcher] Shortcode mit gebündelten SVG‑Flaggen v1.15.0
    • Korrektur · Echo‑Übersetzungen ablehnen, gpt-oss-120b, Sicherheits‑/SEO‑/Performance‑Review‑Fixes v1.14.0
    • Leistung · Parallele Engine‑Anfragen, schnellster OpenRouter‑Provider v1.13.0
    • Korrektur · Browser‑Autofill überschreibt API‑Schlüssel nicht mehr v1.12.2
    • Korrektur · Fortschrittsbalken zeigt nur den Anteil übersetzter Texte v1.12.1
    • Neuheiten · Übersetzungsbox im Editor + Jetzt übersetzen, harte Laufzeit‑Frist v1.12.0
  14. 1.17.3
    • Neuheiten · Attribut für Schalter‑Beschriftungen v1.17.3
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
    • Neuheiten · WPML‑Importer, übersetzte URLs + 301, Elementor‑Links, AJAX‑Sprache v1.17.0
    • Korrektur · Admin‑Hinweis, wenn keine Sprache veröffentlicht ist, kein Seiten‑Cache, solange Übersetzungen ausstehen v1.16.3
    • Korrektur · Produkttitel übersetzen, Site‑Name schützen, normalisierte Echo‑Reparatur, Worker‑Lebensfähigkeit v1.16.2
    • Korrektur · Worker‑Neustart bei veralteten Hinweisen, bestätigte unveränderte Texte akzeptieren, Sitzungs‑Seitenabruf, abgerundete Schalter‑Stile v1.16.1
    • Neuheiten · HTML‑Übersetzung auf Seitenebene von allem Sichtbaren, Varianten‑Schalter‑Vorschau v1.16.0
    • Neuheiten · [tw_language_switcher] Shortcode mit gebündelten SVG‑Flaggen v1.15.0
    • Korrektur · Echo‑Übersetzungen ablehnen, gpt-oss-120b, Sicherheits‑/SEO‑/Performance‑Review‑Fixes v1.14.0
    • Leistung · Parallele Engine‑Anfragen, schnellster OpenRouter‑Provider v1.13.0
    • Korrektur · Browser‑Autofill überschreibt API‑Schlüssel nicht mehr v1.12.2
    • Korrektur · Fortschrittsbalken zeigt nur den Anteil übersetzter Texte v1.12.1
    • Neuheiten · Übersetzungsbox im Editor + Jetzt übersetzen, harte Laufzeit‑Frist v1.12.0
    • Neuheiten · Übersetzungsspeicher, selbstheilende Fehler, einfachere API‑Seite v1.11.0
  15. 1.17.2
    • Korrektur · Texturierte Suche auch für single_post_title v1.17.2
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
    • Neuheiten · WPML‑Importer, übersetzte URLs + 301, Elementor‑Links, AJAX‑Sprache v1.17.0
    • Korrektur · Admin‑Hinweis, wenn keine Sprache veröffentlicht ist, kein Seiten‑Cache, solange Übersetzungen ausstehen v1.16.3
    • Korrektur · Produkttitel übersetzen, Site‑Name schützen, normalisierte Echo‑Reparatur, Worker‑Lebensfähigkeit v1.16.2
    • Korrektur · Worker‑Neustart bei veralteten Hinweisen, bestätigte unveränderte Texte akzeptieren, Sitzungs‑Seitenabruf, abgerundete Schalter‑Stile v1.16.1
    • Neuheiten · HTML‑Übersetzung auf Seitenebene von allem Sichtbaren, Varianten‑Schalter‑Vorschau v1.16.0
    • Neuheiten · [tw_language_switcher] Shortcode mit gebündelten SVG‑Flaggen v1.15.0
    • Korrektur · Echo‑Übersetzungen ablehnen, gpt-oss-120b, Sicherheits‑/SEO‑/Performance‑Review‑Fixes v1.14.0
    • Leistung · Parallele Engine‑Anfragen, schnellster OpenRouter‑Provider v1.13.0
    • Korrektur · Browser‑Autofill überschreibt API‑Schlüssel nicht mehr v1.12.2
    • Korrektur · Fortschrittsbalken zeigt nur den Anteil übersetzter Texte v1.12.1
    • Neuheiten · Übersetzungsbox im Editor + Jetzt übersetzen, harte Laufzeit‑Frist v1.12.0
    • Neuheiten · Übersetzungsspeicher, selbstheilende Fehler, einfachere API‑Seite v1.11.0
    • Neuheiten · Selbstgesteuerter Hintergrund‑Worker, gpt-oss-20b Standard‑Engine v1.10.0
  16. 1.17.1
    • Korrektur · WPML‑Import verwendet ganze Texte, texturierte Titel, saubere Warteschlange; Namensschalter + Reihenfolge v1.17.1
    • Neuheiten · WPML‑Importer, übersetzte URLs + 301, Elementor‑Links, AJAX‑Sprache v1.17.0
    • Korrektur · Admin‑Hinweis, wenn keine Sprache veröffentlicht ist, kein Seiten‑Cache, solange Übersetzungen ausstehen v1.16.3
    • Korrektur · Produkttitel übersetzen, Site‑Name schützen, normalisierte Echo‑Reparatur, Worker‑Lebensfähigkeit v1.16.2
    • Korrektur · Worker‑Neustart bei veralteten Hinweisen, bestätigte unveränderte Texte akzeptieren, Sitzungs‑Seitenabruf, abgerundete Schalter‑Stile v1.16.1
    • Neuheiten · HTML‑Übersetzung auf Seitenebene von allem Sichtbaren, Varianten‑Schalter‑Vorschau v1.16.0
    • Neuheiten · [tw_language_switcher] Shortcode mit gebündelten SVG‑Flaggen v1.15.0
    • Korrektur · Echo‑Übersetzungen ablehnen, gpt-oss-120b, Sicherheits‑/SEO‑/Performance‑Review‑Fixes v1.14.0
    • Leistung · Parallele Engine‑Anfragen, schnellster OpenRouter‑Provider v1.13.0
    • Korrektur · Browser‑Autofill überschreibt API‑Schlüssel nicht mehr v1.12.2
    • Korrektur · Fortschrittsbalken zeigt nur den Anteil übersetzter Texte v1.12.1
    • Neuheiten · Übersetzungsbox im Editor + Jetzt übersetzen, harte Laufzeit‑Frist v1.12.0
    • Neuheiten · Übersetzungsspeicher, selbstheilende Fehler, einfachere API‑Seite v1.11.0
    • Neuheiten · Selbstgesteuerter Hintergrund‑Worker, gpt-oss-20b Standard‑Engine v1.10.0
    • Neuheiten · Automatisches Indexieren, 45 s Warteschlangenläufe, OpenAI‑kompatible Engine v1.9.1
  17. 1.17.0
    • feat(migrazione): Import von WPML (Register «Migrazione WPML» und wp twtr wpml-import: Inhalte, Produkte und Varianten, Elementor‑Vorlagen, Menüpunkte, Kategorien und Attribute, Medien, Zeichenketten; keine vom Motor neu übersetzten (",", gesperrt). Bericht mit zu prüfenden Hinweisen, wiederholbarer und abbrechbarer Import.origin=wpmlfeat(url)
    • : übersetzte Adressen pro Sprache (",", Segment‑Karte: Seiten auch verschachtelt, Produkte, Produktbasis, Kategorien) ohne Rewrite‑Regel; 301 vom Original‑Slug zum übersetzten; 301‑Weiterleitung für alte Adressen ohne Seite (nur bei 404).feat(elementor)Twtr_Slugs
    • : Interne Seitenlinks (Elementor, Editor) verweisen auf die aktuelle Sprache (Sprachauswahl ausgenommen); der Rohinhalt von mit Elementor erstellten Seiten wird nicht mehr in die Warteschlange gestellt (wird von der Seitenschicht übersetzt: keine unnötigen Kosten).
    • feat(ajax): AJAX‑Anfragen (Formulare, Warenkorb, Plugin‑Antworten) von einer übersetzten Seite verwenden die Sprache dieser Seite (Referer derselben Domain).
    • feat(wpml): Solange WPML aktiv ist, bleibt tW Translate im öffentlichen Frontend im Wartezustand (Hinweis im Admin‑Bereich mit Link zur Migration).
  18. 1.16.3
    • ux(selettore): Bei weniger als zwei veröffentlichten Sprachen zeigt der Shortcode den Administratoren einen Hinweis („keine Sprache veröffentlicht: in tW Translate → Sprachen aktivieren“), anstatt ohne Erklärung zu verschwinden; Besucher sehen weiterhin nichts.
    • perf(pagina): Eine übersetzte Seite mit gerade entdeckten Texten (noch in Übersetzung) wird nicht im LiteSpeed‑Cache gespeichert, sodass nachfolgende Besucher die frisch übersetzten Texte erhalten statt der teilweise italienischen Version bis zum nächsten Cache‑Leeren.
  19. 1.16.2
    • fix(qualità): Die Produktnamen blieben auf Italienisch: Die Anweisungen für das Modell sagten, Produktnamen nicht zu übersetzen, und gpt‑oss ließ „Caviale di lenticchie all'aglio nero bio 90g“ unverändert. Jetzt verlangen die Anweisungen, Titel und Namen aus gewöhnlichen Wörtern zu übersetzen (Marken bleiben erhalten), erinnern daran, dass jeder Text den Besuchern der jeweiligen Sprachversion gezeigt wird, und schützen den Namen der Website (get_bloginfo('name')), die sonst zu „Oase der Gewürze“ geworden wäre. Überprüft auf oasidellespezie.ch mit gpt‑oss‑120b: Titel, „Collezione Oasi“, „Vedi tutta la selezione“, „Disponibile in laboratorio“, „Imposta quantità e aggiungi al carrello“ ins Deutsche und Französische übersetzt; „Choco Duo“, „Box "Black Diamond" | Oasi delle Spezie“ und die Adresse unverändert.
    • fix(qualità): Beim Update (DB‑Version 5) werden auch die noch auf Italienisch verbliebenen Übersetzungen, die sich vom Original nur durch Entität oder Typografie unterscheiden (all’aglio / all’aglio), die vorherige Prüfung nicht erkannt hat, wieder in die Warteschlange gestellt; derselbe normalisierte Vergleich im Text‑Check bleibt unverändert.
    • fix(worker): Nach dem Ende eines Zyklus war der Worker 3 Minuten lang „aktiv“, sodass gerade entdeckte Texte (z. B. die 410 Theme‑Texte, die beim Öffnen einer Seite gefunden wurden) warten mussten. Jetzt gibt es einen eindeutigen Zyklus‑Indikator: Der neue Job startet sofort.
  20. 1.16.1
    • fix(coda): Nach dem Update blieb der Worker mit wartenden Texten stehen: Die von der Migration wieder in die Warteschlange geschobenen Zeilen informierten ihn nicht und er vertraute auf einen Zähler von Null. Jetzt prüft er bei einem Null‑Zähler wirklich die Warteschlange (eine indizierte Abfrage, höchstens einmal pro Minute) und startet eigenständig neu.
    • fix(qualità): Namen, Adressen und Marken, die zu Recht gleich bleiben („Choco Duo“, „Alla Monda 12, 6515 Gudo“) wurden fälschlicherweise als Fehler „zurückgegeben ohne Übersetzung“ markiert. Jetzt wird ein unveränderter Text in einer Gruppe erneut einzeln (parallel, falls es mehrere gibt) angefordert: wenn das Modell ihn unverändert bestätigt, wird er akzeptiert. Beim Update kommen Fehler dieser Art wieder in die Warteschlange.
    • fix(editor): „Jetzt übersetzen“ öffnet die übersetzten Seiten mit der Benutzersitzung, sodass es auch im Shop‑Modus „bald verfügbar“ oder im Wartungsmodus funktioniert, wo ein anonymer Besucher nur die Wartungsseite sieht.
    • perf(pagina): Die Übersetzung der fertigen Seite wird bei Seiten über 4 MB oder bei einem PHP‑Prozess nahe dem Speicherlimit übersprungen (die Seite wird unverändert ausgegeben statt eines kritischen Fehlers).
    • ux(selettore): Vorschau des Shortcodes korrekt (der Stil wurde im Admin nicht geladen) und neuer Stil: Flaggen mit abgerundeten Ecken und leichtem Schatten, aktuelle Sprache mit Ring, Pill‑Abkürzungen, Dropdown‑Tab‑Menü; erbt Farben und Schrift des Themes.
  21. 1.16.0
    • feat(pagina): Übersetzung der fertigen Seite, wie ein Browser‑Übersetzer (class-twtr-html.php) . In zusätzlichen Sprachen wird das erzeugte HTML komplett gelesen und jeder sichtbare Text übersetzt, zusammen mit <title>, Meta‑Description/Open‑Graph, alt, title, placeholder, aria-label und Button‑Texten: auch solche, die das Theme oder der Page‑Builder selbst ausgibt und die kein WordPress‑Filter sieht (abschnittsweise erzeugter Inhalt, Labels in Templates, Elementor‑Widgets, Markup anderer Plugins). Auf oasidellespezie.ch waren noch italienisch „Caratteristiche & Proprietà“, „Note del Maestro Speziere“ und die Werte der Produktkarten. Neue Texte werden pro Sprache einmalig angehängt (Kontext html, gemeinsam für alle Seiten: ein wiederholtes Label bei 900 Produkten ist nur eine Zeile) und bereits vorhandene Übersetzungen in jedem Kontext wiederverwendet. Ausgeschlossen sind Skripte, Styles, Code, pre, textarea, svg, die Admin‑Leiste, class="notranslate", translate="no", Texte ohne Buchstaben, URLs und E‑Mails sowie bereits von Filtern erzeugte Übersetzungen. Eine einzige indizierte Abfrage pro generierter Seite; LiteSpeed cached das Ergebnis. Deaktivierbar über den Filter twtr_translate_html.
    • feat(editor): „Jetzt übersetzen“ öffnet einmalig die übersetzten Inhaltsseiten (umgeht den Cache) und übersetzt sofort auch die Theme‑Texte dieser Seite, und das Feld „Übersetzungen“ zählt sie.
    • ux(lingue): Vorschau jeder Variante des Shortcodes neben dem zu kopierenden Code.
  22. 1.15.0
    • feat(selettore): Shortcode [tw_language_switcher] zum Einsetzen der Flaggen in jedes Theme oder Page‑Builder (Elementor: Widget „Shortcode“, auch im Header von Elementor Pro; Gutenberg: Block „Shortcode“), und PHP‑Funktion twtr_language_switcher(). Varianten: style="flags" (Standard), flags-names, names, codes, dropdown (Dropdown‑Menü ohne JavaScript); current="hide"; size="24"; flags="en:us" zum Wechseln der Flagge einer Sprache; class="...". Jeder Link führt zur gleichen Seite in der anderen Sprache, mit hreflang, lang e aria-current. Zeigt nur veröffentlichte Sprachen an und nichts, wenn nur eine vorhanden ist.
    • feat(bandiere): 24 SVG‑Flaggen im Plugin enthalten (assets/flags/, auch USA und Schweiz), angezeigt als Bilder: identisch auf jedem System (die Flaggen‑Emoji unter Windows existieren nicht und werden zu «DE», «FR») und ohne Konflikte mit dem CSS des Themes. Filter twtr_flag_code um eine Flagge auf der gesamten Website zu ändern.
    • feat(admin): im Tab Sprachen das Feld «Flaggen auf der Seite» mit Vorschau, den fertigen Shortcodes und dem Button «Kopieren», sowie den Entwickleroptionen.
  23. 1.14.0
    • fix(qualità): zurückgegebene Texte nicht übersetzt. gpt-oss-20b gab manchmal den italienischen Satz unverändert zurück, der dann als «übersetzt» gespeichert wurde (auf oasidellespezie.ch ~7 % der gpt-oss‑Texte: Titel und Produktkarte auf Italienisch unter /de/). Jetzt wird jeder identische Satz mit mehr als 4 Wörtern erneut einzeln abgefragt und, falls er gleich bleibt, als Fehler gezählt (automatisch erneut versucht), nie als Übersetzung; der Speicher kopiert diese Fälle nicht mehr; beim Update (DB‑Version 4) kommen die bereits betroffenen Zeilen aller Websites wieder in die Warteschlange.
    • feat(motore): Standardmodell gpt-oss-120b (gemessen: korrekte Übersetzung in ~1 s, im Gegensatz zu Fehlern wie «aglio nero» → «noci nere» bei 20b; ~4× die Kosten, immer Bruchteile eines Cents pro Produkt). Die Websites, die noch das alte Standardmodell verwenden, wechseln automatisch zu 120b; ein manuell ausgewähltes Modell wird nicht berührt.
    • fix(worker): die Hintergrundkette stoppte nach jedem Zyklus: das Loopback mit einem Timeout von 10 ms (wie spawn_cron) startete oft nicht einmal über HTTPS. Jetzt 1 s, mit der Seite bereits vom Besucher getrennt. Höchstens 3 Netzseiten übersetzen gleichzeitig (twtr_worker_max_sites) , um den Besuchern keine PHP‑Prozesse zu entziehen.
    • security: die Motoreinstellungen (Schlüssel, Service‑Adresse, Modell, Limits) können nur Administratoren der Seite ändern; Redakteure und Shop‑Manager sehen die Seite im Nur‑Lese‑Modus. Früher konnte ein Redakteur die Adresse auf einen eigenen Server zeigen und den Schlüssel sowie alle Texte erhalten. Beim Wechsel des Services wird der gespeicherte Schlüssel gelöscht. Die Ausgabe der Motoren wird vor dem Speichern gefiltert (wp_kses mit nur den Tags des Originaltexts: nichts <script>/onerror eingespritzt). Keine Redirects bei Anfragen an die Motoren (SSRF), token_uri Google wird nur akzeptiert, wenn es das Google‑Google ist, Signaturfenster des Arbeitnehmers 120 s, Sprachpakete werden nur von berechtigten Installierern heruntergeladen, die Capability wird nicht mehr bei jeder Anfrage neu zugewiesen (ein Administrator kann sie entfernen).
    • fix(seo): Links mailto:, tel:, #ancora und zugehörige werden nicht mehr in defekte URLs in übersetzten Seiten umgewandelt; URLs anderer Netzseiten erhalten nicht mehr das Sprachpräfix; hreflang mit reinen Sprachcodes (de, fr, it, Filter twtr_hreflang_code) statt de-DE; wenn eine Übersetzung fertig ist, werden aus dem Cache alle Sprachen der Seite geleert, sodass auch die anderen Sprachen das hreflang aktualisieren.
    • perf: das vollständige Leeren des LiteSpeed‑Caches für Theme‑Texte erfolgt höchstens alle 10 Minuten (zuvor bei jedem Zyklus, also jede Minute, auch für Italienisch); Queue‑Schreibvorgänge in einer einzigen Transaktion pro Block und Kontext‑basiertes Leeren statt zeilenweise; Speicher mit nur einem Duplikat pro Text; Index claim; Seiteneinstellungen werden pro Seite auch innerhalb switch_to_blog().
  24. 1.13.0
    • perf(coda): parallel abgefragt. Mit den Sprachmodellen sendet die Queue bis zu 6 Blöcke gleichzeitig (Twtr_Openai::translate_many(), curl multi via WpOrgRequests, Filter twtr_concurrency) und holt 150 Texte pro Durchlauf; Blöcke, die parallel wegen eines Hindernisses (nicht synchronisierte Antwort, Netzwerk, 400, 429, 5xx) fehlschlagen, werden automatisch einzeln wieder aufgenommen, falscher Schlüssel/Guthaben/Modell wird nicht wiederholt. Getestet mit einem Dummy‑Server: Reihenfolge der Texte immer korrekt, kein Text bleibt blockiert.
    • perf(gpt-oss): bei OpenRouter fragen die Anfragen den schnellsten Anbieter (provider.sort = throughput, Filter twtr_openrouter_provider): gemessen auf oasidellespezie.ch, 4 000 Zeichen in 2,2 s konstant (Groq) statt 3–12 s je nach gefundenem Anbieter. Zusammen mit Parallelität wird eine Seite wie oasidellespezie.ch in Minuten statt Tagen übersetzt; «Jetzt übersetzen» übersetzt alle Sprachen eines Produkts in einem Durchgang hin‑und‑zurück.
    • fix(scoperta): ein bereits übersetzter Text, der vom Theme an anderer Stelle wiederverwendet wird (z. B. die aus der übersetzten Zusammenfassung erstellte SEO‑Beschreibung) wird nicht mehr wie ein ursprünglicher italienischer Text angehängt.
    • docs: für einen eigenen Server (Ollama, vLLM) WordPress erlaubt nur die Ports 80, 443 und 8080 (Filter http_allowed_safe_ports e http_request_host_is_external per altre).
  25. 1.12.2
    • fix(api): Beim Speichern der Seite «API traduzione» konnte der Browser das Feld Schlüssel (leer) mit einem gespeicherten Passwort ausfüllen, das anstelle des Schlüssels gespeichert wurde: Auf oasidellespezie.ch wurde der OpenRouter‑Schlüssel durch ein 10‑zeichen­langes Passwort ersetzt („Missing Authentication header“). Jetzt weisen die Schlüssel‑Felder Passwort‑Managern an, sie nicht auszufüllen (autocomplete="new-password", Attribute für LastPass, 1Password, Bitwarden) und das Plugin akzeptiert nur Werte im Format eines echten Schlüssels (OpenRouter sk-or-…, OpenAI sk-…, andere Dienste mindestens 20 Zeichen ohne Leerzeichen): sonst bleibt der gespeicherte Schlüssel der vorherige und eine Warnung erklärt warum.
  26. 1.12.1
    • ux(lingue): Die Fortschrittsleiste zeigt nur den Prozentsatz der übersetzten Texte an (z. B. 1.343 von 11.761 → 11 %), nicht mehr das Minimum zwischen Texten und vollständigen Seiten, das bei'1–2% blieb, bis fast jede Seite fertig war. 100% nur, wenn nichts wartet oder einen Fehler hat. Auch zwei schwere Abfragen pro Sprache aus dem Tab Lingue entfernt.
  27. 1.12.0
    • feat(editor): riquadro «Traduzioni» nell'editor di prodotti, pagine, articoli e di ogni tipo di contenuto pubblico: stato per lingua (pallino verde «Tradotto», giallo «In traduzione: X di Y testi pronti», rosso con il numero di errori, grigio «Non ancora in coda»), link «Vedi» alla pagina tradotta, link per correggere a mano e pulsante «Traduci adesso», die den gespeicherten Inhalt erneut liest, ihre Fehler wieder in die Warteschlange stellt und sofort ihre Texte übersetzt (Speicher, dann Engine) vor allem anderen, innerhalb von 40 Sekunden; der Rest wird im Hintergrund fertiggestellt. In den Listen eine Spalte «Traduzioni» mit einem Punkt pro Sprache, mit einer einzigen Abfrage pro Seite gelesen.
    • fix(worker): Die Hintergrundzyklen wurden von LiteSpeed nach ca. 120 s geschlossen („request already in process for 121 seconds, fail with 503“): Das 45‑Sekunden‑Budget wurde nur zwischen den einzelnen Blöcken geprüft, und eine Anfrage an gpt‑oss mit der voreingestellten Logik überschritt 110 s. Jetzt hat jeder Zyklus eine feste Frist: Keine Anfrage startet mit weniger als 12 s, das Timeout jedes Aufrufs wird auf die verbleibende Zeit reduziert, nicht bearbeitete Texte kommen sofort zurück in die Warteschlange (nicht erst nach 10 Minuten) und werden nicht als Fehler gezählt.
    • perf(gpt-oss): niedriges Denken für gpt-oss auf OpenRouter (reasoning.effort) und Groq (reasoning_effort): gemessen auf oasidellespezie.ch, 40 Texte in 8,5 s für ~0,00008 $ statt über 110 s; Blöcke von 3000 Zeichen für die offenen Modelle.
  28. 1.11.0
    • feat(memoria): memoria di traduzione. Bevor der Motor aufgerufen wird, füllt die Warteschlange die Texte in der Warteschlange (oder mit Fehler), die bereits ein identisches Duplikat auf derselben Website und in derselben Sprache übersetzt haben (Twtr_Storage::fill_from_memory(), indice memory_lookup, DB version 3): kostenlos, ohne Engine und ohne das tägliche Limit zu verbrauchen. Kopiere nur fertige automatische Übersetzungen, niemals manuelle Overrides oder Texte anderer Seiten; Texte, die durch einen Glossarwechsel wieder in die Warteschlange kommen, sind nicht „fertig“, daher respektiert eine Kopie stets das aktuelle Glossar. In jedem Block werden identische Texte nur einmal gesendet. Der Tab Status zeigt wiederverwendete Texte und eingesparte Zeichen. Auf oasidellespezie.ch waren etwa 19.900 Texte in der Warteschlange, davon nur ~5.300 unterschiedliche Texte.
    • feat(errori): Die Fehler bleiben nicht mehr stehen: Wenn du die Engine-Konfiguration erfolgreich speicherst oder testest, werden sie sofort wieder in die Warteschlange gestellt und der Worker versucht sie einmal täglich von selbst erneut (aufgeladenes Guthaben, Service wieder online). Kein Knopf zum Drücken nötig.
    • ux(API traduzione): Vereinfachte Seite: oben ein grünes/rotes Feld „Funktioniert / Funktioniert nicht“ mit einer einfachen Erklärung; für gpt-oss nur der OpenRouter‑Schlüssel mit den 3 Schritten zur Beschaffung; Adresse und Modell in den „Erweiterten Einstellungen“, ebenso das Ausgabenlimit; der Button „Speichern und testen“ speichert und übersetzt sofort ein Testwort. Der Status aktualisiert sich ebenfalls automatisch bei jedem Durchlauf der Warteschlange.
    • fix(gpt-oss): Fehlermeldungen des kompatiblen Motors, die den genutzten Service anstelle von „OpenAI“ nennen; erkannte OpenRouter‑Verwaltungsschlüssel (können nicht übersetzen: „User not found“) mit dem Hinweis, einen normalen API‑Schlüssel zu erstellen; Guthaben erschöpft (402), Modell nicht existent und Limits erklärt.
  29. 1.10.0
    • feat(worker): Übersetzung im Hintergrund, autark, ohne Serverkonfiguration. Nuovo class-twtr-worker.php: Das Plugin startet eigenständig seinen Worker mit einer nicht blockierenden Loopback‑Anfrage an das eigene admin-ajax.php (wie spawn_cron() des Core), signiert mit HMAC und einem site‑spezifischen Geheimnis; jeder Zyklus arbeitet bis zu 45 s (Indexierung, dann Warteschlange) und, falls Arbeit bleibt, startet er den nächsten Zyklus selbst, sodass keine Besuche nötig sind. Eine Kontrolle am Ende der Anfrage (maximal einmal pro Minute, keine zusätzlichen Abfragen: Status in einer autoload‑Option) startet eine unterbrochene Kette neu. Wenn der Server das Loopback blockiert, schreitet die Warteschlange vor, nachdem die Seite bereits an den Besucher gesendet wurde (",") und der Tab Status meldet es. Automatische Pause bis Mitternacht UTC beim Tageslimit und 10 Minuten bei Motorfehlern; neue Texte in der Warteschlange heben sie auf. Ein Worker pro Seite (Lock). WP‑Cron bleibt registriert und nutzt denselben Lock: wo es funktioniert, hilft es. Zuvor, in einem Multisite‑Setup mitfastcgi_finish_request / litespeed_finish_requestund System‑Cron nur auf der Hauptseite (wie auf ticinoweb01), übersetzten die Unterseiten nur zufällig. DISABLE_WP_CRON gpt-oss-20b ist die Standard‑Engine
    • feat(motore): für nicht konfigurierte Seiten: Engine „gpt-oss-20b und andere offene Modelle“, vorkonfiguriert mit OpenRouter (", "); einfach den OpenRouter‑Schlüssel einfügen. Bereits konfigurierte Seiten behalten ihre eigene Engine. Für öffentliche Dienste (OpenRouter, Groq, Together…) ist der Schlüssel Pflicht, sodass eine Seite ohne Schlüssel keine fehlgeschlagenen Anfragen sendet. feat(indicizzazione)https://openrouter.ai/api/v1, openai/gpt-oss-20bautomatisch.
  30. 1.9.1
    • Die gesamte Seite wird im Hintergrund neu eingelesen (Cron): twtr_index_site, 30 s pro Durchlauf, setzt dort fort, wo es aufgehört hat) wenn nie indexiert wurde, wenn eine neue Sprache aktiviert wird und dann alle 7 Tage (tägliche Kontrolle twtr_daily_maintenance,) so werden auch Inhalte, die vor der Aktivierung veröffentlicht, importiert oder geändert wurden, ohne darüber zu gehen, in die Warteschlange eingereiht save_post. Während dieser Durchläufe wird der LiteSpeed‑Cache nur für Inhalte geleert, die tatsächlich neue Texte haben. Der Button «Alle Seiten indexieren» bleibt für diejenigen, die alles sofort neu lesen wollen; der Tab Status zeigt Fortschritt und Datum des letzten vollständigen Durchlaufs.
    • perf(coda): jede Cron‑Ausführung arbeitet bis zu 45 Sekunden (Twtr_Queue::process_for()) statt eines einzigen Blocks von 25 Texten, und stoppt früher, wenn ein Block nicht vorankommt (tägliches Limit, Motorfehler, leere Warteschlange). Auf oasidellespezie.ch übersetzte die Warteschlange 25–100 Texte pro Stunde.
    • feat(motore): neue Engine Kompatibel mit OpenAI für offene Modelle wie gpt-oss oder andere, über jeden Dienst mit derselben API (OpenRouter, Groq, Together, Ollama, vLLM): API‑Adresse, Schlüssel (optional) und Modellname pro Seite. Derselbe Client, Glossar im Prompt und reduzierte Blöcke von OpenAI; unterstützt der Server das JSON‑Format nicht, wird die Anfrage ohne wiederholt, und das JSON wird extrahiert, selbst wenn das Modell es in Text einbettet. Die Anfragen nutzen wp_safe_remote_request (keine internen Adressen, außer Filter http_request_host_is_external).
    • feat(update): Plugin‑Icon (assets/icon.svg + PNG 128/256, Farben ticinoWEB) angezeigt im Dashboard → Updates anstelle des grauen Steckers. Der Loader tw-release-updater.php wechselt zu 1.1.0 und liest die Icons aus dem Ordner assets/ von jedem verwalteten Plugin; das mu-plugin aktualisiert sich selbst. Das Icon erscheint ab den Updates nach dieser Version, weil der bereits installierte Code es WordPress mitteilt.
  31. 1.9.0
    • fix(glossario): Das Glossar ist pro Seite. Früher waren die Begriffe für das gesamte Netzwerk gemeinsam: «Casa dei Ponti», hinzugefügt auf casadeiponti.ch, erschien (und wurde angewendet) auch im Glossar von oasidellespezie.ch. Jetzt hat die Tabelle die Spalte blog_id (DB-Version 2, eindeutiger Schlüssel blog_id + termine) und jede Seite sieht, speichert, löscht und wendet nur ihre eigenen Begriffe an; die Änderung eines Begriffs stellt nur die Übersetzungen dieser Seite wieder in die Warteschlange. Glossar-Version, zu synchronisierende Paare, CSV-Datei und Google-Ressourcen gehören ebenfalls zur Seite.
    • feat(migrazione): Bei jedem Update wird jeder vorhandene Begriff zu den Seiten geschickt, deren Inhalt ihn wirklich enthält, also den einzigen Seiten, wo er Wirkung hatte; ein Begriff, der in keiner Seite vorkommt, geht an alle übersetzenden Seiten, sodass kein Begriff verloren geht. Die Google-Seiten bauen ihre Ressourcen im nächsten Zyklus wieder auf.
    • feat(permessi): Glossar und Übersetzungs-API sind nicht mehr nur für Super‑Admins reserviert: Sie sehen sie Administratoren, Shop‑Manager und Redakteure der Seite, wie der Rest des Menüs tW Translate (Capability twtr_manage_translations, auch den bereits installierten Seiten und der später von WooCommerce erstellten Rolle Shop‑Manager zugewiesen). Die Netzwerk‑Option «Dati alla disinstallazione» bleibt den Super‑Admins erhalten. Die Glossar‑Seite im Netzwerk‑Admin wurde entfernt, da sie jetzt keinen Sinn mehr macht.
    • fix(openai): «Risposta OpenAI non allineata» lässt nicht mehr die gesamte Gruppe von 25 Texten fehlschlagen: Wenn das Modell Segmente verliert oder zusammenführt, teilt die Warteschlange die Gruppe in der Mitte und versucht es erneut, bis der problematische Text isoliert ist. Auf oasidellespezie.ch hatte dieser Fehler 64 Texte blockiert.
  32. 1.8.0
    • feat(update): Updates über den nativen Header Update URI und der generische Loader includes/tw-release-updater.php (TW_Release_Updater), gemeinsam nutzbar von allen ticinoWEB‑Plugins ohne jemals geändert zu werden; automatische Updates aktiviert (deaktivierbar mit TW_RELEASE_AUTO_UPDATE). Das Plugin installiert und aktualisiert den Loader selbst als mu‑Plugin wp-content/mu-plugins/tw-release-updater.php, sodass die Updates auch im Netzwerk‑Admin und im Cron der Hauptseite eines Multisite funktionieren und auf jedem Server, auf dem das Plugin aktiviert wird. Entfernt includes/class-twtr-updater.php (1.7.0), ersetzt durch dieses.
  33. 1.7.0
    • feat(multisite): Jede Seite übersetzt nur mit ihrem eigenen Schlüssel. Engine, OpenAI‑Schlüssel / Google‑Anmeldedaten, Modell, Bucket, tägliches Limit und Zeichenzähler werden von den Netzwerkeinstellungen zu den Seiteneinstellungen übertragen (twtr_engine, twtr_usage, nicht autoload). Eine Seite ohne eigenen Schlüssel übersetzt nicht: kein Fallback auf Netzwerkschlüssel, Konstanten TWTR_OPENAI_API_KEY / TWTR_GOOGLE_* / TWTR_PROVIDER oder Umgebungsvariablen, die jede Seite auf Kosten eines einzigen Kunden übersetzen würden. Früher reichte ein einziger Engine und ein einziger Schlüssel für alle Seiten: Am 23.09.2026 hat Synergy (Google) mit dem OpenAI‑Schlüssel von Casa Dei Ponti übersetzt, und das einmalige Limit von 500 000 Zeichen, das von einer Seite aufgebraucht wurde, stoppte auch die anderen.
    • feat(queue): Ohne Anmeldedaten startet die Warteschlange nicht (kein Cron) und wp twtr queue / «Processa ora» erklärt den Grund; das Speichern der Anmeldedaten startet die Warteschlange neu. Limit und Zähler entsprechen denen der Seite.
    • feat(glossario): Begriffe noch netzwerkweit gemeinsam, aber Google‑Synchronisationsstatus pro Seite (jede Seite hat Ressourcen im eigenen Google‑Projekt); ein Begriffwechsel lässt jede Google‑Seite im nächsten Zyklus neu synchronisieren. Google‑OAuth‑Token und Service‑Account‑Schlüssel pro Seite gespeichert (auch innerhalb eines switch_to_blog()).
    • feat(admin): Die Seite «API traduzione» konfiguriert die aktuelle Seite und warnt, wenn der Schlüssel fehlt; Network Admin zeigt nur das Glossar. Der Tab Warteschlange und wp twtr status zeigen Engine, letzte Ziffern des Schlüssels, genutzte Zeichen und das Limit der Seite.
    • feat(cli): wp twtr legacy-keys [--assign=openai|google] [--purge] um der richtigen Seite die Netzwerkanmeldedaten früherer Versionen zuzuweisen und sie aus dem Netzwerk zu entfernen.
    • feat(update): Updates aus dem Release‑Repo gfrino/ticinoweb-wp-themes-and-plugin-releases (§13), mit Unterstützung für den Schalter automatischer Updates.
Assistent ticinoWEB Online