diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2014-06-06 12:42:23 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2014-06-13 09:10:04 +0200 |
commit | cb0a47a48d5dc0ce4f5e8cfa68a39cd4cbfde11c (patch) | |
tree | 0691a90251d50b0973a9bccdaa9f59c887315f94 /src/qml/jsapi/qjsengine.cpp | |
parent | 4d68155848723a863e59d2ce99142b56c75ab3c6 (diff) |
Add support for translations in pure QJSEngine based environments
Re-add the QScriptEngine::addTranslatorFunctions API that brings back
qsTr() and friends to pure QJSEngine based environments.
The auto-test were also ported where applicable.
Change-Id: Ib03e3495ef09eeea9e4c8341061499768caed307
Sanity-Review: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/jsapi/qjsengine.cpp')
-rw-r--r-- | src/qml/jsapi/qjsengine.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/qml/jsapi/qjsengine.cpp b/src/qml/jsapi/qjsengine.cpp index 9cb727dd63..3c3a32370c 100644 --- a/src/qml/jsapi/qjsengine.cpp +++ b/src/qml/jsapi/qjsengine.cpp @@ -50,6 +50,7 @@ #include "private/qv4globalobject_p.h" #include "private/qv4script_p.h" #include "private/qv4runtime_p.h" +#include <private/qqmlbuiltinfunctions_p.h> #include <QtCore/qdatetime.h> #include <QtCore/qmetaobject.h> @@ -232,6 +233,45 @@ void QJSEngine::collectGarbage() } /*! + \since 5.4 + + Installs translator functions on the given \a object, or on the Global + Object if no object is specified. + + The relation between script translator functions and C++ translator + functions is described in the following table: + + \table + \header \li Script Function \li Corresponding C++ Function + \row \li qsTr() \li QObject::tr() + \row \li QT_TR_NOOP() \li QT_TR_NOOP() + \row \li qsTranslate() \li QCoreApplication::translate() + \row \li QT_TRANSLATE_NOOP() \li QT_TRANSLATE_NOOP() + \row \li qsTrId() \li qtTrId() + \row \li QT_TRID_NOOP() \li QT_TRID_NOOP() + \endtable + + \sa {Internationalization with Qt} +*/ +void QJSEngine::installTranslatorFunctions(const QJSValue &object) +{ + QV4::ExecutionEngine *v4 = d->m_v4Engine; + QV4::Scope scope(v4); + QJSValuePrivate *vp = QJSValuePrivate::get(object); + QV4::ScopedObject obj(scope, vp->getValue(v4)); + if (!obj) + obj = v4->globalObject; +#ifndef QT_NO_TRANSLATION + obj->defineDefaultProperty(QStringLiteral("qsTranslate"), QV4::GlobalExtensions::method_qsTranslate); + obj->defineDefaultProperty(QStringLiteral("QT_TRANSLATE_NOOP"), QV4::GlobalExtensions::method_qsTranslateNoOp); + obj->defineDefaultProperty(QStringLiteral("qsTr"), QV4::GlobalExtensions::method_qsTr); + obj->defineDefaultProperty(QStringLiteral("QT_TR_NOOP"), QV4::GlobalExtensions::method_qsTrNoOp); + obj->defineDefaultProperty(QStringLiteral("qsTrId"), QV4::GlobalExtensions::method_qsTrId); + obj->defineDefaultProperty(QStringLiteral("QT_TRID_NOOP"), QV4::GlobalExtensions::method_qsTrIdNoOp); +#endif +} + +/*! Evaluates \a program, using \a lineNumber as the base line number, and returns the result of the evaluation. |