diff --git a/src/assistant/qlitehtml b/src/assistant/qlitehtml
index 4f737256c..f05f78ef3 160000
--- a/src/assistant/qlitehtml
+++ b/src/assistant/qlitehtml
@@ -1 +1 @@
-Subproject commit 4f737256c0a698ff3ba380cbaef1ba80a16fc3a8
+Subproject commit f05f78ef33225823d348ee18f2fa464e95024dd2
diff --git a/src/linguist/lupdate/python.cpp b/src/linguist/lupdate/python.cpp
index 0bc3bf5e8..350f16d1e 100644
--- a/src/linguist/lupdate/python.cpp
+++ b/src/linguist/lupdate/python.cpp
@@ -209,6 +209,7 @@ static Token parseString(StringType stringType = StringType::NoString)
     bool in = false;
 
     yyCh = getChar();
+    qDebug() << __FUNCTION__ << "stringType=" << (int)stringType;
 
     while (yyCh != EOF) {
         if (singleQuote && (yyCh == '\n' || (in && yyCh == quoteChar)))
@@ -267,6 +268,8 @@ static Token parseString(StringType stringType = StringType::NoString)
     if (yyCh == EOF)
         return Tok_Eof;
     yyCh = getChar();
+    qDebug().noquote().nospace() << __FUNCTION__ << " \"" << yyString
+                                 << "\" ends " << char(yyCh);
     return Tok_String;
 }
 
@@ -282,12 +285,14 @@ static QByteArray readLine()
     return result;
 }
 
-static Token getToken(StringType stringType = StringType::NoString)
+static Token getTokenI(StringType stringType = StringType::NoString)
 {
     yyIdent.clear();
     yyCommentLen = 0;
     yyStringLen = 0;
     while (yyCh != EOF) {
+        qDebug().noquote().nospace() << __FUNCTION__ <<
+        " loop yyCh=" << yyCh << " '" << char(yyCh) << "' line=" << yyCurLineNo;
         yyLineNo = yyCurLineNo;
 
         if (std::isalpha(yyCh) || yyCh == '_') {
@@ -303,6 +308,9 @@ static Token getToken(StringType stringType = StringType::NoString)
             switch (getChar()) {
             case ':':
                 extraComment = readLine().trimmed();
+                qDebug() << __FUNCTION__ << "extraComment=" << extraComment << yyCurLineNo;
+//                if (extraComment == "This is a comment for the second text")
+//                    qFatal("XX");
                 break;
             case '=':
                 id = readLine().trimmed();
@@ -320,6 +328,7 @@ static Token getToken(StringType stringType = StringType::NoString)
             break;
         case '"':
         case '\'':
+            qDebug() << __FUNCTION__ << "calling parseString()";
             return parseString(stringType);
         case '(':
             yyParenDepth++;
@@ -371,6 +380,15 @@ static Token getToken(StringType stringType = StringType::NoString)
     return Tok_Eof;
 }
 
+static Token getToken(StringType stringType = StringType::NoString)
+{
+    qDebug() << __FUNCTION__ << "stringType=" << (int)stringType;
+    auto r = getTokenI(stringType);
+    qDebug().noquote().nospace() << __FUNCTION__ << " rets " << r
+       << " yyCh=" << yyCh << " '" << char(yyCh) << "' line=" << yyCurLineNo;
+    return r;
+}
+
 /*
   The second part of this source file is the parser. It accomplishes
   a very easy task: It finds all strings inside a tr() or translate()
@@ -389,6 +407,8 @@ static bool match(Token t)
     const bool matches = (yyTok == t);
     if (matches)
         yyTok = getToken();
+    qDebug() << __FUNCTION__ << t << "rets" << matches << "yyTok=" << yyTok
+             << '\'' << char(yyCh) << '\'';
     return matches;
 }
 
@@ -419,11 +439,13 @@ static bool matchString(QByteArray *s)
         yyTok = getToken();
         ok = true;
     }
+    qDebug() << __FUNCTION__ << ok << "yyTok="<< yyTok;
     return ok;
 }
 
 static bool matchEncoding(bool *utf8)
 {
+    qDebug() << __FUNCTION__;
     // Remove any leading module paths.
     if (yyTok == Tok_Ident && std::strcmp(yyIdent, "PySide6") == 0) {
         yyTok = getToken();
@@ -467,6 +489,7 @@ static bool matchStringOrNone(QByteArray *s)
 
     if (!matches)
         matches = match(Tok_None);
+    qDebug() << __FUNCTION__ << matches;
 
     return matches;
 }
@@ -522,13 +545,19 @@ static bool parseTranslate(QByteArray *text, QByteArray *context, QByteArray *co
     *plural = false;
 
     yyTok = getToken();
+    qDebug() << __FUNCTION__ << "parseTranslate" << "yyTok=" << yyTok << yyCurLineNo ;
+
     if (!match(Tok_LeftParen) || !matchString(context) || !match(Tok_Comma)
         || !matchString(text)) {
         return false;
     }
 
-    if (match(Tok_RightParen))
+    if (match(Tok_RightParen)) {
+        qDebug() << __FUNCTION__ << "bailout )";
         return true;
+    }
+
+    qDebug() << __FUNCTION__ << "r2";
 
     // not a comma or a right paren, illegal syntax
     if (!match(Tok_Comma))
@@ -585,6 +614,8 @@ static bool parseTranslate(QByteArray *text, QByteArray *context, QByteArray *co
 
 static inline void setMessageParameters(TranslatorMessage *message)
 {
+    qDebug() << __FUNCTION__ << message->sourceText()
+             << "extraComment=" <<extraComment << yyCurLineNo;
     if (!extraComment.isEmpty()) {
         message->setExtraComment(QString::fromUtf8(extraComment));
         extraComment.clear();
@@ -636,10 +667,12 @@ static void parse(Translator &tor, ConversionData &cd,
                 break;
             case Tok_tr:
             case Tok_trUtf8:
+                qDebug() << __FUNCTION__ << "Tok_trUtf8" << yyCurLineNo;
                 utf8 = true;
                 yyTok = getToken();
                 if (match(Tok_LeftParen) && matchString(&text)) {
                     comment.clear();
+                    qDebug() << __FUNCTION__ << "clear comment" << yyCurLineNo;
                     bool plural = false;
 
                     if (match(Tok_RightParen)) {
@@ -661,10 +694,12 @@ static void parse(Translator &tor, ConversionData &cd,
                                   ? initialContext : yyContextStack.top().first;
                     else
                         context = prefix;
-
+                    qDebug() << __FUNCTION__ << "context=" << context << yyCurLineNo;
                     prefix.clear();
 
                     if (!text.isEmpty()) {
+                        qDebug() << __FUNCTION__ << "1/Tok_trUtf8: message" << text
+                                 << "comment=" << comment  << yyCurLineNo;
                         TranslatorMessage message(QString::fromUtf8(context),
                                                   QString::fromUtf8(text),
                                                   QString::fromUtf8(comment),
@@ -676,9 +711,13 @@ static void parse(Translator &tor, ConversionData &cd,
                 }
                 break;
             case Tok_translate: {
+                qDebug() << __FUNCTION__ << "Tok_translate" << yyCurLineNo;
                 bool plural{};
-                if (parseTranslate(&text, &context, &comment, &utf8, &plural)
+                if (parseTranslate(&text, &context, &comment, &utf8, &plural)                    
                     && !text.isEmpty()) {
+                        qDebug() << __FUNCTION__ << "2/tok_translate: message" << text
+                             << "context=" << context
+                             << "comment=" << comment << yyCurLineNo;
                         TranslatorMessage message(QString::fromUtf8(context),
                                                   QString::fromUtf8(text),
                                                   QString::fromUtf8(comment),
@@ -698,6 +737,7 @@ static void parse(Translator &tor, ConversionData &cd,
                     prefix.clear();
                 break;
             case Tok_Comment:
+                qDebug() << __FUNCTION__ << "Tok_Comment" << yyCurLineNo << yyComment;
                 comment = yyComment;
                 comment = comment.simplified();
                 if (comment.left(sizeof(PythonMagicComment) - 1) == PythonMagicComment) {
@@ -708,6 +748,8 @@ static void parse(Translator &tor, ConversionData &cd,
                     } else {
                         context = comment.left(k);
                         comment.remove( 0, k + 1);
+                        qDebug() << __FUNCTION__ << "context=" << yyCurLineNo << context
+                                 << "comment=" << comment;
                         TranslatorMessage message(QString::fromUtf8(context),
                                                   {}, QString::fromUtf8(comment), {},
                                                   yyFileName, yyLineNo, {});
