diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2019-09-03 13:05:51 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2019-09-10 13:20:07 +0200 |
commit | 89292e1bb7367e19afe9c37537b1881b63a27e7f (patch) | |
tree | 8b2d54e1ba1ca2e8e2da9dec7f2d055eeb6255c8 /tests/auto/qml/qqmltranslation | |
parent | 8cfd5fde29e5a6469d164bcc29eb3d0a0aa191cf (diff) |
Prefer JS stack frames over QML contexts when resolving translations
Fixes: QTBUG-77751
Change-Id: Ic5e07dc4e251c5fbf149b0a4f015bac5187dd6a1
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'tests/auto/qml/qqmltranslation')
4 files changed, 39 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmltranslation/data/mylibrary.js b/tests/auto/qml/qqmltranslation/data/mylibrary.js new file mode 100644 index 0000000000..5903db3b4b --- /dev/null +++ b/tests/auto/qml/qqmltranslation/data/mylibrary.js @@ -0,0 +1,5 @@ +Qt.include("nested_js_translation.js") + +function translation_success() { + return qsTr("English in mylibrary"); +} diff --git a/tests/auto/qml/qqmltranslation/data/nested_js_translation.js b/tests/auto/qml/qqmltranslation/data/nested_js_translation.js new file mode 100644 index 0000000000..336cdedfea --- /dev/null +++ b/tests/auto/qml/qqmltranslation/data/nested_js_translation.js @@ -0,0 +1,3 @@ +function translation_fail() { + return qsTr("English in translation") +} diff --git a/tests/auto/qml/qqmltranslation/data/preferjs.qml b/tests/auto/qml/qqmltranslation/data/preferjs.qml new file mode 100644 index 0000000000..040fa12e4e --- /dev/null +++ b/tests/auto/qml/qqmltranslation/data/preferjs.qml @@ -0,0 +1,8 @@ +import QtQml 2.12 + +import "mylibrary.js" as Lib + +QtObject { + property string german1: Lib.translation_fail() + property string german2: Lib.translation_success() +} diff --git a/tests/auto/qml/qqmltranslation/tst_qqmltranslation.cpp b/tests/auto/qml/qqmltranslation/tst_qqmltranslation.cpp index dcfe914af6..a75a00bd01 100644 --- a/tests/auto/qml/qqmltranslation/tst_qqmltranslation.cpp +++ b/tests/auto/qml/qqmltranslation/tst_qqmltranslation.cpp @@ -46,6 +46,7 @@ private slots: void translation(); void idTranslation(); void translationChange(); + void preferJSContext(); }; void tst_qqmltranslation::translation_data() @@ -175,6 +176,10 @@ class DummyTranslator : public QTranslator Q_UNUSED(n); if (!qstrcmp(sourceText, "translate me")) return QString::fromUtf8("xxx"); + if (!qstrcmp(sourceText, "English in mylibrary") && !qstrcmp(context, "mylibrary")) + return QString::fromUtf8("Deutsch in mylibrary"); + if (!qstrcmp(sourceText, "English in translation") && !qstrcmp(context, "nested_js_translation")) + return QString::fromUtf8("Deutsch in Setzung"); return QString(); } @@ -213,6 +218,24 @@ void tst_qqmltranslation::translationChange() QCoreApplication::removeTranslator(&translator); } +void tst_qqmltranslation::preferJSContext() +{ + DummyTranslator translator; + QCoreApplication::installTranslator(&translator); + + QQmlEngine engine; + QQmlComponent component(&engine, testFileUrl("preferjs.qml")); + QScopedPointer<QObject> object(component.create()); + QVERIFY(!object.isNull()); + + QCOMPARE(object->property("german1").toString(), + QStringLiteral("Deutsch in Setzung")); + QCOMPARE(object->property("german2").toString(), + QStringLiteral("Deutsch in mylibrary")); + + QCoreApplication::removeTranslator(&translator); +} + QTEST_MAIN(tst_qqmltranslation) #include "tst_qqmltranslation.moc" |