message: Only use X-Source-Language if valid
  Don't override language detection with X-Source-Language if its value
  is not a valid language code. In particular, Qt tools may set it to "C"
  to indicate ASCII English (?).
diff: @@ -960,20 +960,28 @@ class LoadParser : public CatalogParser
  bool FileIsValid;
  Language GetMsgidLanguage()
  + {
  + auto lang = GetSpecifiedMsgidLanguage();
  + if (lang.IsValid())
  + return lang;
  +
  + auto utf8 = m_allMsgidText.utf8_str();
  + return Language::TryDetectFromText(utf8.data(), utf8.length(), Language::English());
  + }
  +
  + protected:
  + Language GetSpecifiedMsgidLanguage()
  {
  auto x_srclang = m_catalog.m_header.GetHeader("X-Source-Language");
  if (!x_srclang.empty())
  {
  - return Language::TryParse(str::to_utf8(x_srclang));
  - }
  - else
  - {
  - auto utf8 = m_allMsgidText.utf8_str();
  - return Language::TryDetectFromText(utf8.data(), utf8.length(), Language::English());
  + auto parsed = Language::TryParse(str::to_utf8(x_srclang));
  + if (parsed.IsValid())
  + return parsed;
  }
  + return Language();
  }
  - protected:
  Catalog& m_catalog;
  virtual bool OnEntry(const wxString& msgid,
  @@ -1032,7 +1040,7 @@ bool LoadParser::OnEntry(const wxString& msgid,
  // gettext header:
  m_catalog.m_header.FromString(mtranslations[0]);
  m_catalog.m_header.Comment = comment;
  - m_collectMsgidText = m_catalog.m_header.GetHeader("X-Source-Language").empty();
  + m_collectMsgidText = !GetSpecifiedMsgidLanguage().IsValid();
  m_seenHeaderAlready = true;
  }
  // else: ignore duplicate header in malformed files
  