From 7cb969596220dea61cae448c6b528aebdae5f09a Mon Sep 17 00:00:00 2001 From: ispyisail Date: Sun, 26 Jul 2026 21:04:25 +1200 Subject: [PATCH] edz: make EdzArchive error strings translatable (+ DE/FR) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The six user-facing error strings in EdzArchive::extract() were hard-coded QStringLiteral, so they could not be translated (reported by plc-user in PR #513). Wrap them in tr() via Q_DECLARE_TR_FUNCTIONS — EdzArchive is not a QObject, so this gives it its own translation context without pulling in a moc dependency. The *.part.xml glob stays a QStringLiteral: it is a filename pattern, not user-facing text. Adds German and French translations for all six. German wording for "Cannot read %1" is plc-user's ("Kann %1 nicht lesen."). Note for review: the rest of QET uses French source strings translated to en/de in the .ts files, whereas these strings are English in the source (as merged in PR #513). This commit keeps them English rather than rewriting strings already reviewed; happy to flip them to French sources for consistency if preferred. Co-Authored-By: Claude Opus 5 --- lang/qet_de.ts | 33 +++++++++++++++++++++++++++++++ lang/qet_fr.ts | 33 +++++++++++++++++++++++++++++++ sources/import/edz/edzarchive.cpp | 12 +++++------ sources/import/edz/edzarchive.h | 3 +++ 4 files changed, 75 insertions(+), 6 deletions(-) diff --git a/lang/qet_de.ts b/lang/qet_de.ts index 8c8bdcecb..c438ed5e2 100644 --- a/lang/qet_de.ts +++ b/lang/qet_de.ts @@ -15343,4 +15343,37 @@ Maximale Länge: %2px Was: + + EdzArchive + + + File not found: %1 + Datei nicht gefunden: %1 + + + + Cannot read %1 + Kann %1 nicht lesen. + + + + This .edz is a zip-format package, which is not yet supported (only 7-Zip .edz files can be imported). + Diese .edz-Datei ist ein Paket im ZIP-Format, das noch nicht unterstützt wird (es können nur .edz-Dateien im 7-Zip-Format importiert werden). + + + + Not a valid .edz package (unrecognised archive format). + Kein gültiges .edz-Paket (unbekanntes Archivformat). + + + + Could not create a temporary directory: %1 + Temporäres Verzeichnis konnte nicht erstellt werden: %1 + + + + No *.part.xml found inside the .edz + Keine *.part.xml in der .edz-Datei gefunden + + diff --git a/lang/qet_fr.ts b/lang/qet_fr.ts index 698f50bee..16c2a0400 100644 --- a/lang/qet_fr.ts +++ b/lang/qet_fr.ts @@ -15181,4 +15181,37 @@ Longueur maximale : %2px + + EdzArchive + + + File not found: %1 + Fichier introuvable : %1 + + + + Cannot read %1 + Impossible de lire %1 + + + + This .edz is a zip-format package, which is not yet supported (only 7-Zip .edz files can be imported). + Ce fichier .edz est un paquet au format zip, qui n'est pas encore pris en charge (seuls les fichiers .edz au format 7-Zip peuvent être importés). + + + + Not a valid .edz package (unrecognised archive format). + Paquet .edz non valide (format d'archive non reconnu). + + + + Could not create a temporary directory: %1 + Impossible de créer un répertoire temporaire : %1 + + + + No *.part.xml found inside the .edz + Aucun fichier *.part.xml trouvé dans le .edz + + diff --git a/sources/import/edz/edzarchive.cpp b/sources/import/edz/edzarchive.cpp index 62207502b..b2dd13e68 100644 --- a/sources/import/edz/edzarchive.cpp +++ b/sources/import/edz/edzarchive.cpp @@ -38,7 +38,7 @@ bool EdzArchive::extract(const QString &edz_path) const QFileInfo fi(edz_path); if (!fi.exists() || !fi.isFile()) { - m_error = QStringLiteral("File not found: %1").arg(edz_path); + m_error = tr("File not found: %1").arg(edz_path); return false; } @@ -47,7 +47,7 @@ bool EdzArchive::extract(const QString &edz_path) // detect that up front and say so clearly rather than failing opaquely. QFile probe(fi.absoluteFilePath()); if (!probe.open(QIODevice::ReadOnly)) { - m_error = QStringLiteral("Cannot read %1").arg(edz_path); + m_error = tr("Cannot read %1").arg(edz_path); return false; } const QByteArray magic = probe.read(6); @@ -55,11 +55,11 @@ bool EdzArchive::extract(const QString &edz_path) static const QByteArray k7z("7z\xBC\xAF\x27\x1C", 6); if (!magic.startsWith(k7z)) { if (magic.startsWith(QByteArray("PK\x03\x04", 4))) { - m_error = QStringLiteral( + m_error = tr( "This .edz is a zip-format package, which is not yet " "supported (only 7-Zip .edz files can be imported)."); } else { - m_error = QStringLiteral( + m_error = tr( "Not a valid .edz package (unrecognised archive format)."); } return false; @@ -67,7 +67,7 @@ bool EdzArchive::extract(const QString &edz_path) m_dir.reset(new QTemporaryDir); if (!m_dir->isValid()) { - m_error = QStringLiteral("Could not create a temporary directory: %1") + m_error = tr("Could not create a temporary directory: %1") .arg(m_dir->errorString()); return false; } @@ -77,7 +77,7 @@ bool EdzArchive::extract(const QString &edz_path) } if (partXmlPath().isEmpty()) { - m_error = QStringLiteral("No *.part.xml found inside the .edz"); + m_error = tr("No *.part.xml found inside the .edz"); return false; } return true; diff --git a/sources/import/edz/edzarchive.h b/sources/import/edz/edzarchive.h index b526f16f3..8fa067d3b 100644 --- a/sources/import/edz/edzarchive.h +++ b/sources/import/edz/edzarchive.h @@ -18,6 +18,7 @@ #ifndef EDZARCHIVE_H #define EDZARCHIVE_H +#include #include #include @@ -38,6 +39,8 @@ class QTemporaryDir; */ class EdzArchive { + Q_DECLARE_TR_FUNCTIONS(EdzArchive) + public: EdzArchive(); ~EdzArchive();