1. Startseite
  2. Nachrichten
  3. Herunterladen
    1. Thunderbird Release-Version
    2. Thunderbird 128 ESR
    3. Thunderbird 115 ESR
    4. Thunderbird Beta-Version
    5. Sprachpaket (Benutzeroberfläche)
    6. Wörterbücher (Rechtschreibprüfung)
  4. Hilfe & Lexikon
    1. Anleitungen zu Thunderbird
    2. Fragen & Antworten (FAQ) zu Thunderbird
    3. Hilfe zu dieser Webseite
  5. Forum
    1. Unerledigte Themen
    2. Letzte Beiträge
    3. Themen der letzten 24 Stunden
  • Deutsch
  • Anmelden
  • Registrieren
  • 
  • Suche
Dieses Thema
  1. Thunderbird Mail DE
  2. Forum
  3. Hilfe und Fehlermeldungen zu "Thunders" Add-ons
  4. Allow HTML Temp

Allow HTML Temp - Version 8.0 für Thunderbird 102

    • 102.*
    • Alle Betriebssysteme
  • Thunder
  • 25. März 2022 um 10:07
  • Geschlossen
  • Unerledigt
  • 1
  • 2
  • 3
  • 4
  • Thunder
    Administrator
    Reaktionen
    775
    Artikel
    274
    Beiträge
    7.272
    Einträge
    169
    Mitglied seit
    8. Jul. 2003
    Hilfreiche Antworten
    58
    • 25. März 2022 um 10:07
    • #1

    Zu Eurer Information:

    Ich arbeite derzeit an einer neuen Version des Add-ons, die soweit möglich zu einer MailExtension mit Experiment-APIs umgeschrieben ist. Dabei mache ich derzeit gute Fortschritte, werde aber vermutlich im Verlauf Hilfe von jobisoft benötigen.

    Gruß
    Thunder ( Mein persönlicher Wunschzettel )

    Keine Hilfe per Konversation! - Danke für Euer Engagement und Eure Geduld!

  • Thunder
    Administrator
    Reaktionen
    775
    Artikel
    274
    Beiträge
    7.272
    Einträge
    169
    Mitglied seit
    8. Jul. 2003
    Hilfreiche Antworten
    58
    • 25. März 2022 um 10:28
    • #2

    jobisoft

    Ich bin vermutlich über einen Bug gestolpert, der Auswirkungen auf browser.messageDisplay.onMessageDisplayed.addListener(async (tab, message) => { hat. Das event wird nicht für Mails in separaten Windows gefeuert, wenn sich eine Message Property (Junkstatus) ändert. Ursache ist wohl, dass die Message dabei im separaten Fenster gar nicht neu geladen bzw. angezeigt wird. Um dies zu reproduzieren:

    Öffne eine HTML-Mail im Original-HTML-Modus im 3-pane-Window (den Preview). Öffne die identische Mail zusätzlich in einem separaten Window, sodass Du beides sehen kannst. Markiere nun die Mail im separaten Window als Junk.

    Im 3-Pane-Window wird die Mail neu geladen und der Junk-Button (Main Toolbar und Message Header Toolbar) ändert korrekt seine Anzeige. Im separaten Window wird zwar die gelbe Leiste oben in der Mail eingeblendet, aber die Mail bleibt im originalen HTML angezeigt (wird also nicht neu geladen) und der Junk-Button bleibt unverändert "Junk". Mein Add-on wird dann folglich auch nicht (über die Änderung für das separate Window) informiert, was ich aber benötige.

    Das event onMessageDisplayed.addListener(async (tab, message) gibt immer nur die tab.id des 3-pane-Window zurück - auch, wenn ich den Junk-Button im separaten Window benutzt habe, welches eine ganz andere tab.id hat. Das ist irgenwie auch logisch, da die Mail ja scheinbar nur im 3-pane neu geladen wird, aber nicht im separaten Window.

    Gruß
    Thunder ( Mein persönlicher Wunschzettel )

    Keine Hilfe per Konversation! - Danke für Euer Engagement und Eure Geduld!

  • jobisoft
    Senior-Mitglied
    Reaktionen
    226
    Beiträge
    888
    Mitglied seit
    18. Aug. 2016
    Hilfreiche Antworten
    9
    • 25. März 2022 um 10:58
    • #3

    Kannst du ein Bug auf bugzilla aufmachen mit deiner Anleitung und deinem Rproduzer-Add-on? Bugs kosten nix und wenn es keiner war, mach wir ihn wieder zu :-) Aber ich muss die Sachen zentral bündeln, sonst verliere ich den Überblick.

    Log in to Bugzilla

    John Bieling / Matrix: TbSync / GitHub: jobisoft
    Thunderbird Add-on Support Engineer / Add-on Coordinator (MZLA)

    https://developer.thunderbird.net/add-ons/community

  • Thunder
    Administrator
    Reaktionen
    775
    Artikel
    274
    Beiträge
    7.272
    Einträge
    169
    Mitglied seit
    8. Jul. 2003
    Hilfreiche Antworten
    58
    • 31. März 2022 um 18:35
    • #4

    Bug ist erstellt: https://bugzilla.mozilla.org/show_bug.cgi?id=1762427

    Reproducer Add-on werde ich die Tage noch zur Verfügung stellen.

    Gruß
    Thunder ( Mein persönlicher Wunschzettel )

    Keine Hilfe per Konversation! - Danke für Euer Engagement und Eure Geduld!

  • Thunder
    Administrator
    Reaktionen
    775
    Artikel
    274
    Beiträge
    7.272
    Einträge
    169
    Mitglied seit
    8. Jul. 2003
    Hilfreiche Antworten
    58
    • 31. März 2022 um 18:47
    • #5

    Ein paar Fragen:

    1. Wie erreiche ich, dass der Code in background.js nach dem Aufruf meiner API erst ausgeführt wird, wenn ich von meiner API ein true oder false zurück bekommen habe? Ich habe es beispielsweise mit let hasHtmlMimePart = await browser.AllowHtmlTempApi.... probiert und dann anschließend eine if-Abfrage gemacht. Aber der Code anschließend wird immer schon zu früh ausgeführt.
    2. Wie bekomme ich überhaupt aus (m)einer Experiment API ein simples boolean true/false zurück gemeldet an meinen Code im Bereich der background.js?
    JavaScript: Ausschnitt aus background.js
      await browser.AllowHtmlTempApi.checkMailForHtmlpart(message.id, options.debug);
    
      if(options.debug)
        console.debug("AHT: enableUiElements");
      browser.messageDisplayAction.enable(tab.id);
      browser.browserAction.enable(tab.id);
    JSON: schema.json
    [
      {
        "namespace": "AllowHtmlTempApi",
        "functions": [
          {
            "name": "checkMailForHtmlpart",
            "type": "function",
            "description": "Checks selected message for a HTML MIME part.",
            "async": true,
            "parameters": [
              {
                "name": "messageId",
                "type": "integer",
                "description": "MailExtension message.id"
              },
              {
                "name": "optionsDebug",
                "type": "boolean",
                "description": "MailExtension options.debug"
              }
            ]
          }
        ]
      }
    ]
    Alles anzeigen
    JavaScript: implementation.js
    var { Services } = ChromeUtils.import(
      "resource://gre/modules/Services.jsm"
    );
    
    var { MsgHdrToMimeMessage } = ChromeUtils.import(
      "resource:///modules/gloda/MimeMessage.jsm"
    );
    
    var AllowHtmlTempApi = class extends ExtensionCommon.ExtensionAPI {
      getAPI(context) {
        return {
          AllowHtmlTempApi: {
            async checkMailForHtmlpart(messageId, optionsDebug) {
    
              if(optionsDebug)
                console.debug("AHT: run checkMailForHtmlpart ----------------");
              let ahtMsgHdr = context.extension.messageManager.get(messageId);
              // let ahtMsgHdr = gFolderDisplay.selectedMessage;
    
              // First check MsgHdr without decrypting to prevent an additional passphrase dialog in case of PGP/MIME
              MsgHdrToMimeMessage(ahtMsgHdr, null, function(aMsgHdr, aMimeMsg) {
                // multipart/encrypted enables the button for encrypted PGP/MIME messages
                // in this case we don't check for HTML, because the check seems not to be possible for PGP/MIME
                if (aMimeMsg.prettyString().search("multipart/encrypted") != -1) {
                  if(optionsDebug)
                    console.debug("AHT: message is PGP/MIME multipart/encrypted");
                  return true;
    //            enableUiElements(tabId, optionsDebug);
                } else {
                  // search for 'Body: text/html' in MIME parts,
                  // it seems this is only working if messages are downloaded for offline reading?
                  MsgHdrToMimeMessage(ahtMsgHdr, null, function(aMsgHdr, aMimeMsg) {
                    if(optionsDebug){
                      console.debug("AHT: Check for html part ----------------");
                      console.debug("AHT: Body: text/html " + aMimeMsg.prettyString().search("Body: text/html"));
                      console.debug("AHT: text/html " + aMimeMsg.prettyString().search("text/html"));
                      console.debug("AHT: Body: plain/html " + aMimeMsg.prettyString().search("Body: plain/html"));
                      console.debug("AHT: plain/html " + aMimeMsg.prettyString().search("plain/html"));
                      console.debug("AHT: multipart/alternative " + aMimeMsg.prettyString().search("multipart/alternative"));
                      console.debug("AHT: multipart/signed " + aMimeMsg.prettyString().search("multipart/signed"));
                      console.debug("AHT: multipart/encrypted " + aMimeMsg.prettyString().search("multipart/encrypted"));
                    }
                    // 'Body: text/html' is found, enable ahtButtons
                    if (aMimeMsg.prettyString().search("Body: text/html") != -1) {
                      if(optionsDebug)
                        console.debug("AHT: message contains HTML body part");
                      return true;
    //                enableUiElements(tabId, optionsDebug);
                    }
                    // no 'Body: text/html', disable ahtButtons
                    else {
                      if(optionsDebug)
                        console.debug("AHT: no HTML body part");
                      return false;
    //                disableUiElements(tabId, optionsDebug);
                    }
                  }, true, {
                    examineEncryptedParts: true
                  }); // examineEncryptedParts=true is necessary for encrypted S/MIME messages
                }
              }, true, {
                examineEncryptedParts: false
              }); // examineEncryptedParts=false to prevent an additional passphrase dialog in case of PGP/MIME
            }
          }
        }
      }
    };
    Alles anzeigen

    Der Code in implementation.js funktioniert für sich gesehen korrekt. Und hatte mir im alten XUL-Addon dann sinngemäß den 3 auskommentierten Zeilen meine Buttons aktiviert bzw. deaktiviert. Hier im Code habe ich jetzt statt dessen return true bzw. return false eingesetzt, um dies letztlich an die background.js zurück zu bekommen.

    Gruß
    Thunder ( Mein persönlicher Wunschzettel )

    Keine Hilfe per Konversation! - Danke für Euer Engagement und Eure Geduld!

  • jobisoft
    Senior-Mitglied
    Reaktionen
    226
    Beiträge
    888
    Mitglied seit
    18. Aug. 2016
    Hilfreiche Antworten
    9
    • 31. März 2022 um 19:00
    • #6

    Kann ich dich dazu bewegen, diese Fragen (in Zukunft) im Matrix chat bzw. auf topic box zu stellen? Da alle die Antworten lesen können, ist da mein return of invest höher: https://developer.thunderbird.net/add-ons/community

    Die Antwort: Du musst aus dem MsgHdrToMimeMessage callback ein Promise machen. Die Funktion returned bei dir nach dem Aufruf von MsgHdrToMimeMessage, und hat keinen Zugriff mehr auf den Wert aus dem Callback, das ausgeführt wird, wenn MsgHdrToMimeMessage fertig ist.

    Siehe hier:
    https://searchfox.org/comm-central/s…ages.js#383-395

    John Bieling / Matrix: TbSync / GitHub: jobisoft
    Thunderbird Add-on Support Engineer / Add-on Coordinator (MZLA)

    https://developer.thunderbird.net/add-ons/community

    Einmal editiert, zuletzt von jobisoft (31. März 2022 um 20:33)

  • Thunder
    Administrator
    Reaktionen
    775
    Artikel
    274
    Beiträge
    7.272
    Einträge
    169
    Mitglied seit
    8. Jul. 2003
    Hilfreiche Antworten
    58
    • 31. März 2022 um 19:55
    • #7
    Zitat von jobisoft

    Da alle die Antworten lesen können, ist da mein return of invest höher

    Sobald ich mein Problem und den Transfer komplett verstanden und erfolgreich umgesetzt habe, werde ich es für alle auf Topicbox in einem neuen Thema beschreiben / erklären. Und in Zukunft bin ich natürlich bereit dazu. Es ist nur schon schwer genug in der Muttersprache sein technisches Problem zu erklären :/ .

    Gruß
    Thunder ( Mein persönlicher Wunschzettel )

    Keine Hilfe per Konversation! - Danke für Euer Engagement und Eure Geduld!

  • jobisoft
    Senior-Mitglied
    Reaktionen
    226
    Beiträge
    888
    Mitglied seit
    18. Aug. 2016
    Hilfreiche Antworten
    9
    • 31. März 2022 um 20:29
    • #8

    Ah, ok. Wenn die Sprache ein Grund dagegen ist, dann bleiben wir hier.

    Code
    var { Services } = ChromeUtils.import(
        "resource://gre/modules/Services.jsm"
    );
    
    var { MsgHdrToMimeMessage } = ChromeUtils.import(
        "resource:///modules/gloda/MimeMessage.jsm"
    );
    
    var AllowHtmlTempApi = class extends ExtensionCommon.ExtensionAPI {
        getAPI(context) {
            return {
                AllowHtmlTempApi: {
                    async checkMailForHtmlpart(messageId, optionsDebug) {
    
                        if (optionsDebug)
                            console.debug("AHT: run checkMailForHtmlpart ----------------");
                        let ahtMsgHdr = context.extension.messageManager.get(messageId);
                        // let ahtMsgHdr = gFolderDisplay.selectedMessage;
    
                        // First check MsgHdr without decrypting to prevent an additional passphrase dialog in case of PGP/MIME
                        let aMimeMsg = await new Promise(resolve => {
                            MsgHdrToMimeMessage(
                                ahtMsgHdr,
                                null,
                                (aMsgHdr, aMimeMsg) => resolve(aMimeMsg),
                                true,
                                {
                                    examineEncryptedParts: false
                                }
                            );
                        })
    
                        // multipart/encrypted enables the button for encrypted PGP/MIME messages
                        // in this case we don't check for HTML, because the check seems not to be possible for PGP/MIME
                        if (aMimeMsg.prettyString().search("multipart/encrypted") != -1) {
                            if (optionsDebug)
                                console.debug("AHT: message is PGP/MIME multipart/encrypted");
                            return true;
                            //            enableUiElements(tabId, optionsDebug);
                        } else {
                            // search for 'Body: text/html' in MIME parts,
                            // it seems this is only working if messages are downloaded for offline reading?
                            let aMimeMsg = await new Promise(resolve => {
                                MsgHdrToMimeMessage(
                                    ahtMsgHdr,
                                    null,
                                    (aMsgHdr, aMimeMsg) => resolve(aMimeMsg),
                                    true,
                                    {
                                        examineEncryptedParts: true
                                    }
                                );
                            })
    
                            if (optionsDebug) {
                                console.debug("AHT: Check for html part ----------------");
                                console.debug("AHT: Body: text/html " + aMimeMsg.prettyString().search("Body: text/html"));
                                console.debug("AHT: text/html " + aMimeMsg.prettyString().search("text/html"));
                                console.debug("AHT: Body: plain/html " + aMimeMsg.prettyString().search("Body: plain/html"));
                                console.debug("AHT: plain/html " + aMimeMsg.prettyString().search("plain/html"));
                                console.debug("AHT: multipart/alternative " + aMimeMsg.prettyString().search("multipart/alternative"));
                                console.debug("AHT: multipart/signed " + aMimeMsg.prettyString().search("multipart/signed"));
                                console.debug("AHT: multipart/encrypted " + aMimeMsg.prettyString().search("multipart/encrypted"));
                            }
                            // 'Body: text/html' is found, enable ahtButtons
                            if (aMimeMsg.prettyString().search("Body: text/html") != -1) {
                                if (optionsDebug)
                                    console.debug("AHT: message contains HTML body part");
                                return true;
                                //                enableUiElements(tabId, optionsDebug);
                            }
                            // no 'Body: text/html', disable ahtButtons
                            else {
                                if (optionsDebug)
                                    console.debug("AHT: no HTML body part");
                                return false;
                                //                disableUiElements(tabId, optionsDebug);
                            }
                        }
                    }
                }
            }
        }
    };
    Alles anzeigen

    John Bieling / Matrix: TbSync / GitHub: jobisoft
    Thunderbird Add-on Support Engineer / Add-on Coordinator (MZLA)

    https://developer.thunderbird.net/add-ons/community

  • jobisoft
    Senior-Mitglied
    Reaktionen
    226
    Beiträge
    888
    Mitglied seit
    18. Aug. 2016
    Hilfreiche Antworten
    9
    • 31. März 2022 um 20:35
    • #9

    Im obigen Beitrag habe ich die callbacks durch promisses ersetzt. Funktioniert das?

    John Bieling / Matrix: TbSync / GitHub: jobisoft
    Thunderbird Add-on Support Engineer / Add-on Coordinator (MZLA)

    https://developer.thunderbird.net/add-ons/community

  • Thunder
    Administrator
    Reaktionen
    775
    Artikel
    274
    Beiträge
    7.272
    Einträge
    169
    Mitglied seit
    8. Jul. 2003
    Hilfreiche Antworten
    58
    • 31. März 2022 um 20:50
    • #10

    Du bist mein Held ;-)

    Dein Code in meine implementation.js und folgendes in der background.js (bzw. in zusätzlicher JS-Datei), um meine API aufzurufen:

    Code
      let hasHtmlMimePart = await new Promise(resolve => {
        resolve ( browser.AllowHtmlTempApi.checkMailForHtmlpart(message.id, options.debug) )
      });
    
      if(options.debug)
        console.debug("AHT: checkMailForHtmlpart returns: " + hasHtmlMimePart);
    
      if(hasHtmlMimePart) {
        browser.messageDisplayAction.enable(tab.id);
        browser.browserAction.enable(tab.id);
      }
    Alles anzeigen

    Damit funktioniert es genau so wie es soll.

    Tausend Dank!

    Gruß
    Thunder ( Mein persönlicher Wunschzettel )

    Keine Hilfe per Konversation! - Danke für Euer Engagement und Eure Geduld!

  • jobisoft
    Senior-Mitglied
    Reaktionen
    226
    Beiträge
    888
    Mitglied seit
    18. Aug. 2016
    Hilfreiche Antworten
    9
    • 31. März 2022 um 21:17
    • #11

    Du kannst aus

    Code
    let hasHtmlMimePart = await new Promise(resolve => {
        resolve ( browser.AllowHtmlTempApi.checkMailForHtmlpart(message.id, options.debug) )
      });

    einfach

    Code
    let hasHtmlMimePart = await browser.AllowHtmlTempApi.checkMailForHtmlpart(message.id, options.debug);

    machen.

    John Bieling / Matrix: TbSync / GitHub: jobisoft
    Thunderbird Add-on Support Engineer / Add-on Coordinator (MZLA)

    https://developer.thunderbird.net/add-ons/community

  • Thunder
    Administrator
    Reaktionen
    775
    Artikel
    274
    Beiträge
    7.272
    Einträge
    169
    Mitglied seit
    8. Jul. 2003
    Hilfreiche Antworten
    58
    • 31. März 2022 um 21:26
    • #12

    Hmmm, ich hatte den Eindruck, dass er dann wieder in der background.js nicht wartet :/ ...

    ... aber Du hast natürlich Recht. Es funktioniert jetzt auch mit der einfachen Variante.

    Gruß
    Thunder ( Mein persönlicher Wunschzettel )

    Keine Hilfe per Konversation! - Danke für Euer Engagement und Eure Geduld!

  • Thunder
    Administrator
    Reaktionen
    775
    Artikel
    274
    Beiträge
    7.272
    Einträge
    169
    Mitglied seit
    8. Jul. 2003
    Hilfreiche Antworten
    58
    • 18. April 2022 um 13:32
    • #13

    Rückmeldung zu meiner Migration des Codes hin zu (soweit möglich) WebExtension-Code:

    Das Add-on benötigt (selbstverständlich) weiterhin Experiment-APIs und somit die "alberne" Berechtigung für den vollen Zugriff auf den PC. Dies ist notwendig für die Manipulation der Prefs bezüglich HTML- versus vereinfachter HTML- versus Reintext-Darstellung. Dazu wird die sogenannte LegacyPrefs-API verwendet. Allow HTML Temp nutzt außerdem eine eigene experimentelle API, in der die weiteren notwendigen Teile an Code drin sind, die sich bisher nicht per "reinem" WebExtension-Code umsetzen lassen.

    Einer der neuralgischen Punkte des Add-ons ist der "Listener", welcher darauf wartet, dass die Mail einmalig als HTML (oder was auch immer in den Optionen gewählt wurde) dargestellt wurde. Dieser Listener und das zugehörige "Event" stammen nun vollständig aus der Welt des WebExtension-Codes. Dies scheint problemlos zu funktionieren. Vergleichbares gilt auch für die korrekte Darstellung/Auswahl des Icons der Buttons, die ja von den Einstellungen abhängig sind.

    Massive Code-Änderungen gab es auch, um den Button aktiviert/deaktiviert zu schalten. Dazu sind gleich mehrere "Listener" aus der WebExtension-Welt notwendig. Wer sich bisher nicht darüber bewusst ist, sollte wissen, dass der Button in Newsgruppen-Accounts, in Junk-Ordnern und bei Mails, die als Junk markiert sind jeweils deaktiviert ist. Außerdem ist der Button deaktiviert, wenn die Mail keinen HTML-MIME-Part enthält. Im Gegenteil dazu ist der Button für Feed-Nachrichten immer aktiviert. All das erfordert, dass mehrere Dinge im Hintergrund ausgewertet werden müssen, wobei theoretisch Fehler im Code auftreten könnten.

    Zum Stand der Dinge:

    • Button (Haupt-Symbolleiste + Kopfzeilen-Bereich) + Command-Key (Strg+Alt+F5) funktionieren
    • Optionen-Dialog funktioniert

    Das funktioniert noch nicht:

    • Falls Remote-Content nicht gleich mit geladen wird, gibt es ja das kleine Menü in der sogenannten "Doorhanger-Leiste", in dem man den Remote-Content für die eine Mail nachladen lassen kann. Dieser eine Menü-Eintrag muss manipuliert werden, um beim Aufruf dann erneut einmalig entsprechend der Optionen des Add-ons den Inhalt der Mail zu laden bzw. anzuzeigen und dabei dann auch die externen Inhalte zu laden. Diese Manipulation bekomme ich noch nicht (bzw. nicht funktionierend) hin (jedenfalls nicht ohne den komplett alten Code).
    • Die Anzeige in der Statusleiste unten am Fenster ist per WebExtension nicht möglich. Dazu müsste ich auch komplett alten Code verwenden.

    Somit kommt nun eine Frage an die Nutzer des Add-ons:

    Was könnt Ihr Euch als Alternative zu der Anzeige in der Statusleiste vorstellen? Findet Ihr diese Anzeige überhaupt wichtig?

    Gruß
    Thunder ( Mein persönlicher Wunschzettel )

    Keine Hilfe per Konversation! - Danke für Euer Engagement und Eure Geduld!

  • Thunder
    Administrator
    Reaktionen
    775
    Artikel
    274
    Beiträge
    7.272
    Einträge
    169
    Mitglied seit
    8. Jul. 2003
    Hilfreiche Antworten
    58
    • 19. April 2022 um 19:35
    • #14

    Kurz nachdem ich gestern die 8.0a1 für Euch hochgeladen habe, bin ich fast am durchdrehen... Denn plötzlich machte das überarbeitete Add-on reproduzierbar "nur noch Durcheinander". Davor habe ich nun schon viele Tage problemlos bestimmt tausendfach damit probiert und Stück für Stück weiter auf neue Techniken umgesetzt. Und nun funktioniert plötzlich "nichts mehr". Dabei kann ich bisher keinen (neuen) Fehler im Code erkennen, der dies verursachen würde. Es scheint gerade so, als ob es sich um eine Art Cache-Problem handeln würde. In solch einer "Cache-Falle" hatte ich vor einem Jahr beim "alten Add-on" schon mal gesteckt. Es ist zum Verzweifeln :-(

    Gruß
    Thunder ( Mein persönlicher Wunschzettel )

    Keine Hilfe per Konversation! - Danke für Euer Engagement und Eure Geduld!

  • Thunder
    Administrator
    Reaktionen
    775
    Artikel
    274
    Beiträge
    7.272
    Einträge
    169
    Mitglied seit
    8. Jul. 2003
    Hilfreiche Antworten
    58
    • 21. April 2022 um 15:27
    • #15
    Zitat von Thunder

    Es ist zum Verzweifeln :(

    Ursache(n) gefunden, aber teilweise eigentlich nicht zu verstehen... Egal, um das Problem für die Zukunft zu vermeiden, habe ich etwas im Code umgebaut.

    Gruß
    Thunder ( Mein persönlicher Wunschzettel )

    Keine Hilfe per Konversation! - Danke für Euer Engagement und Eure Geduld!

  • Thunder
    Administrator
    Reaktionen
    775
    Artikel
    274
    Beiträge
    7.272
    Einträge
    169
    Mitglied seit
    8. Jul. 2003
    Hilfreiche Antworten
    58
    • 22. April 2022 um 19:38
    • #16

    Da ich für das überarbeitete Add-on einiges umbauen musste, werden fast alle Übersetzungen erstmal unbrauchbar. Es ist sehr mühevoll, wenn ich für alle möglichen Sprachen die (halbwegs) passenden Übersetzungen zusammensuchen muss - daher meine Bitte:

    Übersetzt doch bitte folgende Datei mit den notwendigen Sprach-Elementen in Sprachen, die Ihr (korrekt - ohne Google Translator) bieten könnt - Danke:

    JSON: messages.json
    {
      "extensionName": {
        "message": "Allow HTML Temp"
      },
      "extensionDescription": {
        "message": "Allow temporarily HTML in a selected message"
      },
    
      "button_label": {
        "message": "Show HTML"
      },
      "button_tooltip": {
        "message": "Temporarily display text or HTML for this message"
      },
      "button_label_html": {
        "message": "Show HTML"
      },
      "button_label_sanitized": {
        "message": "Show HTML"
      },
      "button_label_plaintext": {
        "message": "Plaintext"
      },
    
      "optionPageTitle_label": {
        "message": "Allow HTML Temp - Preferences"
      },
      "optionGeneralDescription_label": {
        "message": "To prevent malicious code execution (e.g. \"Locky\" and \"Tesla\"), HTML and JavaScript for email should be deactivated or restricted and email attachments should not be displayed as inline. JavaScript is always restricted by Thunderbird anyway."
      },
    
      "optionHTML_label": {
        "message": "HTML in email"
      },
      "optionHTMLDescription_label": {
        "message": "A restricted option should be choosen here for default."
      },
      "optionAppHTML_label": {
        "message": "Default setting:"
      },
      "optionButtonHTML_label": {
        "message": "Click on \"Show HTML\":"
      },
      "optionNotRecommended_label": {
        "message": "(not recommended)"
      },
      "optionOriginalHTML_label": {
        "message": "Original HTML"
      },
      "optionSanitizedHTML_label": {
        "message": "Sanitized HTML"
      },
      "optionPlaintext_label": {
        "message": "Plaintext"
      },
      "optionAllBodyParts_label": {
        "message": "All Body Parts"
      },
    
      "optionAdditionalOptions_label": {
        "message": "Advanced options"
      },
      "optionAllwaysVersusClickDescription_label": {
        "message": "Additional, optional content can be activated when displaying original HTML. You can activate these additional options in general for original HTML mode or only for the temporary \"Show HTML\" feature."
      },
      "optionRemoteContent_label": {
        "message": "Remote content (images, stylesheets ...)"
      },
      "optionAllwaysRemoteContent_label": {
        "message": "Allow remote content in general (not recommended)"
      },
      "optionTempRemoteContent_label": {
        "message": "Temporarily allow remote content for the selected message by click on \"Show HTML\""
      },
      "optionAttachments_label": {
        "message": "Attachments"
      },
      "optionAttachmentsAllwaysInline_label": {
          "message": "Always show attachments inline (not recommended)"
      },
      "optionAttachmentsTempInline_label": {
          "message": "Temporarily show attachments inline by click on \"Show HTML\""
      },
    
      "optionCommandKeyHeader_label": {
        "message": "Shortcut"
      },
      "optionCommandKeyDescription_label": {
        "message": "The buttons function specified here in the options can also be executed using a shortcut. You can customize the shortcut if needed. The resulting command key is then given as a string containing a set of 2 or 3 key values, separated by \"+\". For example, \"Ctrl+Alt+F5\" (3 key values - this is the default shortcut) or \"Ctrl+F5\" (2 key values)."
      },
      "optionCommandKeyRulesText_label": {
        "message": "The rules described on MDN have to be considered."
      },
      "optionCommandKey_label": {
        "message": "Shortcut for \"Show HTML\":"
      },
    
      "optionDebugHeader_label": {
        "message": "Debug mode"
      },
      "optionDebugDescription_label": {
        "message": "Debug information will be logged in the error console."
      },
      "optionDebug_label": {
        "message": "Activate debug mode"
      },
    
      "optionResetAllOptionsHeader_label": {
        "message": "Reset all options"
      },
      "optionResetAllOptionsDescription_label": {
        "message": "Click to reset all options to their default values."
      },
      "optionButtonReset_label": {
        "message": "Reset"
      }
    
    }
    Alles anzeigen

    Wichtig sind vor allem folgende Sprachen, da häufig genutzt: Japanisch, Französisch, Spanisch, Niederländisch, Schwedisch, Polnisch, Italienisch, Russisch - gerne auch weitere Sprachen

    Ihr könnt dazu gerne die momentane Entwicklerversion des Add-ons in Thunderbird Beta 101 oder auch in Daily verwenden, um die Textstellen dort (vor allem in den Optionen des Add-ons) zu sehen.

    EDIT:

    Ursprünglich gab es hier versehentlich ein deutsches Text-Element, welches nicht ins Englisch übersetzt war. Dies ist jetzt korrigiert.

    Gruß
    Thunder ( Mein persönlicher Wunschzettel )

    Keine Hilfe per Konversation! - Danke für Euer Engagement und Eure Geduld!

  • Thunder
    Administrator
    Reaktionen
    775
    Artikel
    274
    Beiträge
    7.272
    Einträge
    169
    Mitglied seit
    8. Jul. 2003
    Hilfreiche Antworten
    58
    • 23. April 2022 um 20:05
    • #17

    Danke an dieser Stelle schon mal für den Japanisch-Übersetzer, der (auf GitLab) sehr schnell reagiert hat.

    Gruß
    Thunder ( Mein persönlicher Wunschzettel )

    Keine Hilfe per Konversation! - Danke für Euer Engagement und Eure Geduld!

  • milupo
    Gast
    • 23. April 2022 um 20:42
    • #18

    Der Beschreibungstext für die Einstellung optionAllwaysVersusClickDescription_label in der englischen messages.json (siehe auch vorstehenden Beitrag) ist in Deutsch. Ist das OK so? Das würde m. E. bedeuten, dass der Text auch in anderen Sprachversionen in Deutsch bleiben soll.

  • Thunder
    Administrator
    Reaktionen
    775
    Artikel
    274
    Beiträge
    7.272
    Einträge
    169
    Mitglied seit
    8. Jul. 2003
    Hilfreiche Antworten
    58
    • 23. April 2022 um 20:56
    • #19
    Zitat von milupo

    Der Beschreibungstext für die Einstellung optionAllwaysVersusClickDescription_label in der englischen messages.json (siehe auch vorstehenden Beitrag) ist in Deutsch. Ist das OK so? Das würde m. E. bedeuten, dass der Text auch in anderen Sprachversionen in Deutsch bleiben soll.

    Da habe ich schlichtweg gepennt. Das muss im Englischen so lauten und letztlich in alle Sprachen übersetzt werden:

    Code
      "optionAllwaysVersusClickDescription_label": {
        "message": "Additional, optional content can be activated when displaying original HTML. You can activate these additional options in general for original HTML mode or only for the temporary \"Show HTML\" feature."
      },

    Danke für die Rückmeldung. Ich habe es in obigem Beitrag mit der kompletten messages.json auch korrigiert.

    Gruß
    Thunder ( Mein persönlicher Wunschzettel )

    Keine Hilfe per Konversation! - Danke für Euer Engagement und Eure Geduld!

  • milupo
    Gast
    • 24. April 2022 um 00:02
    • #20

    Danke, alles klar.

    • 1
    • 2
    • 3
    • 4

Aktuelle Programmversion

  • Thunderbird 138.0.1 veröffentlicht

    Thunder 13. Mai 2025 um 23:25

Aktuelle ESR-Version

  • Thunderbird 128.10.1 ESR veröffentlicht

    Thunder 14. Mai 2025 um 21:50

Keine Werbung

Hier wird auf Werbeanzeigen verzichtet. Vielleicht geben Sie dem Website-Betreiber (Alexander Ihrig - aka "Thunder") stattdessen etwas aus, um diese Seiten auf Dauer finanzieren zu können. Vielen Dank!

Vielen Dank für die Unterstützung!

Kaffee ausgeben für:

3,00 €
1
Per Paypal unterstützen*

*Weiterleitung zu PayPal.Me

Ähnliche Themen

  • Allow HTML Temp - Version 7.0 für Thunderbird 91

    • Thunder
    • 22. April 2021 um 11:41
    • Allow HTML Temp
  • Where to find the settings?

    • ogeert
    • 10. März 2021 um 11:33
    • Quote Colors & Collapse
  • QuoteColors Updates für 68 und 78

    • Thunder
    • 26. August 2020 um 22:36
    • Quote Colors & Collapse
  • Abrufen/Senden-Schaltfläche - Version 6.0 für Thunderbird 78

    • Thunder
    • 7. September 2020 um 01:13
    • Erweiterungen
  • Allow HTML Temp - Version 6.0 für Thunderbird 78

    • Thunder
    • 28. August 2020 um 19:44
    • Allow HTML Temp
Thunderbird Mail DE
  1. Impressum & Kontakt
  2. Datenschutzerklärung
    1. Einsatz von Cookies
  3. Nutzungsbedingungen
  4. Spendenaufruf für Thunderbird
Hilfe zu dieser Webseite
  • Übersicht der Hilfe zur Webseite
  • Die Suchfunktion benutzen
  • Foren-Benutzerkonto - Erstellen (Neu registrieren)
  • Foren-Thema erstellen und bearbeiten
  • Passwort vergessen - neues Passwort festlegen
Copyright © 2003-2025 Thunderbird Mail DE

Sie befinden sich NICHT auf einer offiziellen Seite der Mozilla Foundation. Mozilla®, mozilla.org®, Firefox®, Thunderbird™, Bugzilla™, Sunbird®, XUL™ und das Thunderbird-Logo sind (neben anderen) eingetragene Markenzeichen der Mozilla Foundation.

Community-Software: WoltLab Suite™
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Forum
  • Lexikon
  • Artikel
  • Seiten
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern