diff options
-rw-r--r-- | src/corelib/kernel/qtranslator.cpp | 19 | ||||
-rw-r--r-- | src/corelib/kernel/qtranslator.h | 1 | ||||
-rw-r--r-- | tests/auto/corelib/kernel/qtranslator/hellotr_la.qm | bin | 230 -> 237 bytes | |||
-rw-r--r-- | tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp | 9 |
4 files changed, 25 insertions, 4 deletions
diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp index 822f96c499..2205366696 100644 --- a/src/corelib/kernel/qtranslator.cpp +++ b/src/corelib/kernel/qtranslator.cpp @@ -283,7 +283,7 @@ class QTranslatorPrivate : public QObjectPrivate { Q_DECLARE_PUBLIC(QTranslator) public: - enum { Contexts = 0x2f, Hashes = 0x42, Messages = 0x69, NumerusRules = 0x88, Dependencies = 0x96 }; + enum { Contexts = 0x2f, Hashes = 0x42, Messages = 0x69, NumerusRules = 0x88, Dependencies = 0x96, Language = 0xa7 }; QTranslatorPrivate() : #if defined(QT_USE_MMAP) @@ -316,6 +316,7 @@ public: uint contextLength; uint numerusRulesLength; + QString language; QString filePath; bool do_load(const QString &filename, const QString &directory); @@ -833,7 +834,9 @@ bool QTranslatorPrivate::do_load(const uchar *data, qsizetype len, const QString break; } - if (tag == QTranslatorPrivate::Contexts) { + if (tag == QTranslatorPrivate::Language) { + language = QString::fromUtf8((const char*)data, blockLen); + } else if (tag == QTranslatorPrivate::Contexts) { contextArray = data; contextLength = blockLen; } else if (tag == QTranslatorPrivate::Hashes) { @@ -1095,6 +1098,7 @@ void QTranslatorPrivate::clear() qDeleteAll(subTranslators); subTranslators.clear(); + language.clear(); filePath.clear(); if (QCoreApplicationPrivate::isTranslatorInstalled(q)) @@ -1141,6 +1145,17 @@ bool QTranslator::isEmpty() const /*! \since 5.15 + Returns the target language as stored in the translation file. + */ +QString QTranslator::language() const +{ + Q_D(const QTranslator); + return d->language; +} + +/*! + \since 5.15 + Returns the path of the loaded translation file. The file path is empty if no translation was loaded yet, diff --git a/src/corelib/kernel/qtranslator.h b/src/corelib/kernel/qtranslator.h index 0c6efbbc7f..61a39c4089 100644 --- a/src/corelib/kernel/qtranslator.h +++ b/src/corelib/kernel/qtranslator.h @@ -63,6 +63,7 @@ public: virtual bool isEmpty() const; + QString language() const; QString filePath() const; bool load(const QString & filename, diff --git a/tests/auto/corelib/kernel/qtranslator/hellotr_la.qm b/tests/auto/corelib/kernel/qtranslator/hellotr_la.qm Binary files differindex cc42afe05c..25c0aad583 100644 --- a/tests/auto/corelib/kernel/qtranslator/hellotr_la.qm +++ b/tests/auto/corelib/kernel/qtranslator/hellotr_la.qm diff --git a/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp index cc0f97139f..9fde7da816 100644 --- a/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp +++ b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp @@ -110,9 +110,10 @@ void tst_QTranslator::load_data() QTest::addColumn<QString>("filepath"); QTest::addColumn<bool>("isEmpty"); QTest::addColumn<QString>("translation"); + QTest::addColumn<QString>("language"); - QTest::newRow("hellotr_la") << "hellotr_la.qm" << false << "Hallo Welt!"; - QTest::newRow("hellotr_empty") << "hellotr_empty.qm" << true << ""; + QTest::newRow("hellotr_la") << "hellotr_la.qm" << false << "Hallo Welt!" << "de"; + QTest::newRow("hellotr_empty") << "hellotr_empty.qm" << true << "" << ""; } void tst_QTranslator::load() @@ -120,6 +121,7 @@ void tst_QTranslator::load() QFETCH(QString, filepath); QFETCH(bool, isEmpty); QFETCH(QString, translation); + QFETCH(QString, language); { QTranslator tor; @@ -127,6 +129,7 @@ void tst_QTranslator::load() QCOMPARE(tor.isEmpty(), isEmpty); QCOMPARE(tor.translate("QPushButton", "Hello world!"), translation); QCOMPARE(tor.filePath(), filepath); + QCOMPARE(tor.language(), language); } { @@ -138,6 +141,7 @@ void tst_QTranslator::load() QCOMPARE(tor.isEmpty(), isEmpty); QCOMPARE(tor.translate("QPushButton", "Hello world!"), translation); QCOMPARE(tor.filePath(), ""); + QCOMPARE(tor.language(), language); } { @@ -147,6 +151,7 @@ void tst_QTranslator::load() QCOMPARE(tor.isEmpty(), isEmpty); QCOMPARE(tor.translate("QPushButton", "Hello world!"), translation); QCOMPARE(tor.filePath(), path); + QCOMPARE(tor.language(), language); } } |