Nicht importierbare Übersetzungen (disallowed/malformed HTML) heilen

Created on 28 January 2024, 12 months ago

Übersetzungen werden skipped because of disallowed or malformed HTML, wenn sie unzulässige(oder kaputte) HTML-Tags enthalten. Wir können den langen Weg gehen und erstmal in den ganzen Projekten dafür sorgen, dass die Source-Strings bereinigt werden, oder zur Überbrückung erstmal den kürzeren Weg, wenigstens in den deutschen Übersetzungen das Markup zu berichtigen (also nicht unbesehen zu kopieren).

Hier finden wir die Liste der Tags, die von locale_string_is_safe durchgelassen werden: https://api.drupal.org/api/drupal/core%21modules%21locale%21locale.modul...

Strings, die obigen Fehler werfen, sind u. a.:

<br/>
<br />
<div>

(Gerne ergänzen)

Ich mache mal einen Aufschlag. Schreibt weitere Sammlungen in die Kommentare und lasst das Issue offen, das wird bestimmt ein Langläufer.

🐛 Bug report
Status

Active

Component

PO files

Created by

🇩🇪Germany hexabinaer Berlin, Germany

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

  • Issue created by @hexabinaer
  • 🇩🇪Germany hexabinaer Berlin, Germany
  • 🇩🇪Germany hexabinaer Berlin, Germany
  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺

    Hallo @hexabinaer,

    Der kurze Weg ist keine Option. Ich will dir auch verraten warum.

    Ich hab durchaus schon das ein oder andere Modul von falsch zusammengesetzten Zeichenfolgen befreit. Im Ergebnis passiert dann folgendes:

    1. Die Zeichenfolge ist nicht mehr als übersetzt markiert und kann auf dem Server neu übersetzt werden.
    2. Die Datei, die die entsprechende Übersetzung enthält und vom Server zum Download angeboten wird, wird nicht neu angelegt. Das bedeutet, dass beim Installieren des jeweils betroffenen Moduls trotz Entfernung der betroffenen Übersetzung der Fehler bezüglich der falschen Übersetzung immer noch ausgegeben wird.

    Die Datei wird nämlich erst dann neu erzeugt, wenn für den betreffenden String eine Alternative zugelassen wird. Das geht aber nur bedingt, weil das Original in einem solchen Fall meist so Falch abgefasst ist, dass man hier keinen Workarround basteln kann.

    Das bedeutet, dass wir

    1. Falsch abgefasste Zeichenfolgen zukünftig beim extrahieren der Strings, also über das POTX-Modul abfangen müssen.
    2. Entwicklern einen Standard an die Hand geben müssen, der beschreibt, wie Übersetzungen in den Quellcode einzufassen sind. Nämlich so, dass sie keine Zusatzattribute oder Platzhalter enthalten die von https://api.drupal.org/api/drupal/core%21modules%21locale%21locale.modul... nicht akzeptiert werden.

    Abschließend brauchen wir dann auch noch eine Funktion im Übersetzungsserver, die alle Dateien. die solche Zeichenfolgen enthalten Erkennen und die jeweiligen Projekte informieren kann, dass der Code entsprechend des Standards, der übrigens immer noch nicht verabschiedet wurde anzupassen sind, um die gefundenen Fehler zukünftig zu vermeiden.

    Das ist nichts, was man hier im der Issue Queue lösen kann. Das Problem gehört auf wesentlich höherer Ebene gelöst.

    Selbst wenn wir eine Liste der betroffenen PO Dateien und Strings anlegen. Können die nur von Drum oder Gabor manuell gelöscht und dann neu erstellt werden.

    Der Benefit wäre lediglich, dass Drupal beim Import der Module keine Fehlermeldungen bezüglich flach formatierter Übersetzungen ausgibt und daher rein kosmetischer Natur. Am eigentlichen Problem. ändert das leider rein gar nichts.

    Wäre da anders, hätte ich schon längst eine solche Liste angelegt. Aber ich scheue den Arbeitsaufwand. weil mir das Ergebnis nicht wertvoll genug erscheint, im Verhältnis dazu , dass wir für jede fehlerhaft ausgegeben Zeichenfolge die Datei notieren müssen, die sie enthält und diese Liste, wenn sie jemals fertig wird in die USA weitergeben müssen. Dazu müssten Wir die Distributionen von Varbase, open Social und Thunder sowie einige vereinzelte anderen Module vermutlich jeweils gegen Drupal 9 und Drupal 10 testen, um die betroffenen Dateien zu ermitteln. Mir persönlich ist das zu aufwändig für ein rien kosmetische Maßnahme.

    Die Originalzeichenfolgen der Übersetzung enthalten Fehler. Das darf man auch gern genau so lang sehen, bis wir als Community eine ganzheitliche Lösung dafür finden.

  • 🇩🇪Germany jurgenhaas Gottmadingen

    Ich bin mir nicht sicher, ob der kurze Weg wirklich keine Option ist. Wenn wir in Übersetzungen irgendetwas reinschreiben, das mit dem Ursprung gar nichts zu tun hat, interessiert das die Logik des Localisation-Server überhaupt nicht. Es wird ja keine logische Prüfung gemacht, ob der übersetzte String wirklich die Übersetzung des Ursprungs-Strings ist.

    Deshalb denke ich schon, dass die HTML-Tags problemlos korrigiert werden können, ohne dass dies den zukünftigen Prozess irgendwie beeinträchtigen würde. Und ich fände es auch sehr hilfreich, wenn diese Korrekturen gemacht werden würden, denn die Fehlermeldungen sind für uns mehr als nur kosmetischer Natur. Wir behandeln bei uns Fehler als zwingende Handlungsaufforderung, sprich bei jedem Fehler wird ein Issue eröffnet, welches bearbeitet werden muss. Ignorieren ist keine Option.

  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺

    In dem Fall werde ich Anfangen müssen zu sammeln. Nur das wir nicht irgendwas in die Strings schreiben können, weil das so in die Ui übernommen würde. Letzten Endes müssen die Fehler aber dennoch aus dem Sourcecode.
    Das der Server das aktuell nichts prüft ist mir bewusst. Wir benötigen aber eine Möglichkeit, Projektbetreuer auf fehlerhafte Quellzeichenfolgen hinzuweisen, wenn das in Zukunft gelöst werden soll. Ein Mechanismus diese bereits beim vor Release einer neuen Modulversion zu erkennen fehlt. Genau wie eine Routine, die vorhandene Pot/PO Dateien auf eben solche Fehler überprüfen kann und eine entsprechende Liste generiert.

    Das gehört entweder ins Potx Modul oder in die Version 3.x des Servers. Sonst sind solche Vereinigungsaktionen auch in Zukunft noch regelmäßig notwendig.

    Ich werde mich die Tage mal an eine Liste setzen. Sollte euch in der täglichen Arbeit was auffallen, postet bitte in diesem Sammelthread.

    Vielen Dank

  • 🇩🇪Germany jurgenhaas Gottmadingen

    Super @Joachim Namyslo und herzlichen Dank, dass Du das Thema angehst.

    Nur mal ein Beispiel: in commerce ist folgender Übersetzungsstring drin:

    Für diese Bestellung sind keine <a href=":url"">Zahlungsgateways</a> verfügbar.
    

    Der ist falsch wegen des doppelten Anführungszeichens und wird deshalb mit der Meldung `... was skipped because of disallowed or malformed HTML.` ignoriert.

    Ein anderes Beispiel in Webform ist Folgendes, wobei ich das keinen Fehler finde und da gibt es auch gar nichts zu übersetzen:

    <div class="webform-custom-options-buttons">
    {% for value, text in options %}
      <div class="webform-custom-options-button" data-option-value="{{ value }}" style="text-align:center">
      {{ text }}
      {% if descriptions[value] %}<div class="description">{{ descriptions[value] }}</div>{% endif %}
      </div>
    {% endfor %}
    </div>
    

    In Webform gibt es auch den String <front> als Übersetzung, was ebenfalls falsches HTML ist und eigentlich gar nicht übersetzt werden sollte.

    Wenn ich noch weitere Beispiele finde, dann melde ich mich wieder.

  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺

    Für diese Bestellung sind keine Zahlungsgateways verfügbar.

    https://localize.drupal.org/translate/languages/de/translate?sid=2661980
    Fixed. - Muss noch gemeldet werden

  • 🇩🇪Germany rkoller Nürnberg, Germany

    in Bezug auf #7

    Wir benötigen aber eine Möglichkeit, Projektbetreuer auf fehlerhafte Quellzeichenfolgen hinzuweisen, wenn das in Zukunft gelöst werden soll. Ein Mechanismus diese bereits beim vor Release einer neuen Modulversion zu erkennen fehlt. Genau wie eine Routine, die vorhandene Pot/PO Dateien auf eben solche Fehler überprüfen kann und eine entsprechende Liste generiert.

    Wäre es evtl. nicht die elegantere Variante Übersetzer*innen schon beim Abspeichern des Übersetzungsvorschlags auf unerlaubte Zeichenfolgen hinzuweisen, so daß solche problematischen Zeichenfolgen erst gar nicht erst in der Datenbank abgelegt werden? Das würde auch Maintainer*innen extra Aufwand bzgl etwaigen Korrekturen im Nachgang ersparen.

  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺

    Ich weiss nicht. Ich persönlich fände es wesentlich eleganter, wenn übersetzer zukünftig gar nicht mehr mit Fehlerhaften Strings arbeiten müssten oder besser dagegen. Fehlerhafte Strings entstehen dort, wo Module geschrieben werden. Wenn wir die Entwickler soweit kriegen keine Fehler mehr zu machen und bereits vorhandenen Fehler auszumerzen, dann läuft alles rund.So einen Fehler gibt es ja nicht nur in der Übersetzung für Deutsch, sondern immer in den Source-Strings. Dies bedeutet, der wirkt sich auf alle Sprachen aus. Wenn die UI 115 Sprachen unterstützt macht 1 falsch abgefasst er Originalstring potentiell 115 Fehlermeldungen. Ein ganzheitliche und gut durchdachte Lösung eliminiert an dieser Stelle die Möglichkeit, dass Übersetzer falsch abgefasst Zeichenfolgen überhaupt zu Gesicht bekommen. Aber dazu muss man die bereits vorhandenen fehlerhaften erst Mal finden und eliminieren.

  • 🇩🇪Germany jurgenhaas Gottmadingen

    Fehler komplett zu vermeiden bleibt wohl ein frommer Wunsch. Aber Fehler früh zu erkennen und zu melden, ist realistisch.

    Ich denke, wir sollten die Validierung in die gitlab CI Templates mit aufnehmen, damit alle Module bei jeder Änderung immer automatisch geprüft werden und die Entwickler eine Fehlermeldung erhalten, wenn ein string falsch ist.

  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺

    Das ist ein guter Ansatz. Ich habe die Zeichenfolge

    {% for value, text in options %}
    {{ text }}
    {% if descriptions[value] %}
    {{ descriptions[value] }}

    {% endif %}

    {% endfor %}

    aus Webform entfernt und zumindest ich hab keinen Fehler mehr, wenn ich das Modul installiere. Kann das bitte jemand verifizierren. Dann können wir auf die art und weise weitermachen.

  • Status changed to Needs review 10 months ago
  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺
  • Status changed to RTBC 10 months ago
  • 🇩🇪Germany jurgenhaas Gottmadingen

    Perfekt, webform importiert ohne Fehlermeldung! :-)

  • Status changed to Active 10 months ago
  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺

    Alles klar, dann machen wir an der Stelle genauso weiter.

  • 🇩🇪Germany hexabinaer Berlin, Germany

    Beim Lesen der Kommentare bekam ich kurz Puls, weil das ja keine Frage von Entweder-Oder ist :-D Aber darauf lief es ja gar nicht hinaus.

    Ich denke, wir sollten die Validierung in die gitlab CI Templates mit aufnehmen, damit alle Module bei jeder Änderung immer automatisch geprüft werden und die Entwickler eine Fehlermeldung erhalten, wenn ein string falsch ist.

    Jawoll, das brauchen wir auf jeden Fall. Unterstützung bei der Fehlervermeidung wo immer es geht. Deshalb bin ich ja auch für das Rausschreiben von fehlerhaftem HTML beim Übersetzen. Nicht als einzige Maßnahme, aber eine, die die Nerven derjenigen schont, die Übersetzungen importieren.

    Bei unseren eigenen Patzern sind wir dazu übergegangen, als erstes die Übersetzungen zu fixen, einfach weil's schnell geht. Wir notieren die Übersetzung zusammen mit den Source-Korrekturen, so dass wir sie schnell zur Hand haben, wenn das nächste Release rauskommt.

  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺

    #19

    Ich bin da absolut bei dir. Es ist aber tatsächlich so, dass wir mit der Korrektur falscher Zeichenfolge verhindern, dass das Thema an der richtigen Stelle ankommt. Korrigieren, bzw rauslöschen, war bis jetzt immer der Way to go. Das führte aber nur in den seltensten Fällen zur Besserung der Originale. Ich denke wir behindern uns mit dieser Methode selbst. Der Endanwender hat jetzt kein Thema mehr. Aber der Übersetzer, der seine Tätigkeit unentgeltlich ausführt durchaus. Wem sollen wir dass denn Bitteschön darlegen, damit im Endergebnis bereits vorhandene falsch abgefasste Zeichenfolgen nicht nur mittels Patch neu abgefasst, sondern nachhaltig entfernt werden? Ich finde das braucht Aufmerksamkeit. So laut und so lang bis es so weh tut, bis wir eine gute Lösung für die Zukunft haben. Wo soll es denn weh tun, wenn nicht beim Import? Geht ja nur da.

    Die Lösung mit der Pipeline ist gut, aber leider nur die halbe Miete.

  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺

    Leute ich bin so froh, dass dieses Thema dank Drupal CMS endlich mal in der Core Issue Queue gelandet ist und wir jetzt auch das Problem angehen können, dass wir bereits zugelassene Zeichenfolgen, die Platzhalter enthalten aktuell nicht über die UI löschen können. Ich hoffe wir werden erhört und es hagelt Patches, bevor der neue Übersetzungsserver ausgerollt wird. Ein bisschen Kontext findet ihr im Issue zu Leaflet 🐛 Leaflet Active

  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺
  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺
  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺
  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺
  • 🇩🇪Germany lmoeni

    Ich bekomme bei einer Installation durch das Modul Image Widget Crop auch die Fehlermeldung:

     [error]  Import of string "Dieses Feld ist so konfiguriert, dass je nach Haltepunkt des <b>Bartik</b>-Themas in der Standardanzeige unterschiedliche Bilder (mit unterschiedlichen Zuschneidezonen/Seitenverhältnissen) angezeigt werden.<br/>
    <b>Haltepunkte für Bildstile:</b>
    <ul>
    <li>Breit (min. Breite: 851 px) => Klein (320 x 180) mit Zuschneiden 16:9</li>
    <li>Schmal (min-width: 851px bis max-width: 850px) => Mittel mit einfachem Zuschnitt</li>
    <li>Mobil => Mittel - (300 x 330) mit Zuschnitt 4:3</li>
    <li>Fallback => Klein - (320 x 180) mit Zuschnitt 16:9</li>
    </ul><br/>
    
    Um mit verschiedenen Reaktionen zu experimentieren, ändern Sie den <a href=„/admin/config/media/responsive-image-style/crop_example_responsive“ target=„_blank“>Crop Example Responsive Image Style</a><br/>" was skipped because of disallowed or malformed HTML. 

    Dies ist die betroffene Übersetzung: https://localize.drupal.org/translate/languages/de/translate?sid=2916938
    Der Fehler wird wahrscheinlich durch die
    verursacht. Ich hatte das bei der Übersetzung korrigiert, mir war erst danach aufgefallen, dass es in dem zu übersetzenden String vom Modul selbst schon falsch drin ist.
    Mir war auch noch aufgefallen, dass sich in der Übersetzung die falschen Anführungszeichen eingeschlichen haben.

    Die Übersetzung wird nur von einem Untermodul verwendet in einer Beispiel Konfiguration. Vielleicht könnten wir die Übersetzung vorerst entfernen?
    Ich hab ein Issue in dem Modul direkt aufgemacht.

  • 🇩🇪Germany joachim namyslo Kulmbach 🇩🇪 🇪🇺

    Richtig irgendwann letztes Jahr hat deepL beschlossen, dass es sinnvoll wäre Orthographische Anführungszeichen zu verwenden. Das ist es, das machen wir hier auch seit Jahren, aber natürlich ist das untenstehende Anführungszeichen nach dem Href= in der Zeichenfolge völliger Quatsch. So gut die Ki von DeepL mittlerweile darin ist Rechtschibfehlerfreie brauchbare Vorschläge für Übersetzungen zu produzieren , so sehr erfordert es immer noch eine Human Review wegen genau solcher Kleinigkeiten, die auch mir leider noch viel zu oft durchrutschen. Danke für die Korrektur. Ich lass den String zu.

  • 🇩🇪Germany lmoeni

    Super, dankeschön! Ich hoffe das die Änderung auch im Modul übernommen wird.
    Das mit dem Haltepunkt hatte ich auch übersehen, da macht Breakpoint wirklich mehr Sinn.

Production build 0.71.5 2024