diff options
4 files changed, 25 insertions, 3 deletions
diff --git a/src/linguist/lupdate/qdeclarative.cpp b/src/linguist/lupdate/qdeclarative.cpp index 11d37259d..40af15566 100644 --- a/src/linguist/lupdate/qdeclarative.cpp +++ b/src/linguist/lupdate/qdeclarative.cpp @@ -90,10 +90,20 @@ protected: void endVisit(AST::CallExpression *node) { - if (AST::IdentifierExpression *idExpr = AST::cast<AST::IdentifierExpression *>(node->base)) { + QString name; + AST::ExpressionNode *base = node->base; + + while (base && base->kind == AST::Node::Kind_FieldMemberExpression) { + auto memberExpr = static_cast<AST::FieldMemberExpression *>(base); + name.prepend(memberExpr->name); + name.prepend(QLatin1Char('.')); + base = memberExpr->base; + } + + if (AST::IdentifierExpression *idExpr = AST::cast<AST::IdentifierExpression *>(base)) { processComments(idExpr->identifierToken.begin()); - const QString name = idExpr->name.toString(); + name = idExpr->name.toString() + name; const int identLineNo = idExpr->identifierToken.startLine; switch (trFunctionAliasManager.trFunctionByName(name)) { case TrFunctionAliasManager::Function_qsTr: diff --git a/tests/auto/linguist/lupdate/testdata/good/tr_function_alias/lupdatecmd b/tests/auto/linguist/lupdate/testdata/good/tr_function_alias/lupdatecmd index 7996a444a..e2f91b5f1 100644 --- a/tests/auto/linguist/lupdate/testdata/good/tr_function_alias/lupdatecmd +++ b/tests/auto/linguist/lupdate/testdata/good/tr_function_alias/lupdatecmd @@ -1 +1 @@ -lupdate main.cpp -tr-function-alias QT_TRANSLATE_NOOP+=QT_TRANSLATE_NOOP_ALIAS,QT_TRANSLATE_NOOP_UTF8+=QT_TRANSLATE_NOOP_UTF8_ALIAS,QT_TRANSLATE_NOOP3+=QT_TRANSLATE_NOOP3_ALIAS,QT_TRANSLATE_NOOP3_UTF8+=QT_TRANSLATE_NOOP3_UTF8_ALIAS,QT_TRID_NOOP+=QT_TRID_NOOP_ALIAS,Q_DECLARE_TR_FUNCTIONS+=Q_DECLARE_TR_FUNCTIONS_ALIAS,qtTrId+=qtTrId_alias,QT_TR_NOOP+=QT_TR_NOOP_ALIAS,QT_TR_NOOP_UTF8+=QT_TR_NOOP_UTF8_ALIAS,tr+=tr_alias,trUtf8+=trUtf8_alias,translate+=translate_alias -ts project.ts +lupdate main.cpp main.qml -tr-function-alias QT_TRANSLATE_NOOP+=QT_TRANSLATE_NOOP_ALIAS,QT_TRANSLATE_NOOP_UTF8+=QT_TRANSLATE_NOOP_UTF8_ALIAS,QT_TRANSLATE_NOOP3+=QT_TRANSLATE_NOOP3_ALIAS,QT_TRANSLATE_NOOP3_UTF8+=QT_TRANSLATE_NOOP3_UTF8_ALIAS,QT_TRID_NOOP+=QT_TRID_NOOP_ALIAS,Q_DECLARE_TR_FUNCTIONS+=Q_DECLARE_TR_FUNCTIONS_ALIAS,qtTrId+=qtTrId_alias,QT_TR_NOOP+=QT_TR_NOOP_ALIAS,QT_TR_NOOP_UTF8+=QT_TR_NOOP_UTF8_ALIAS,tr+=tr_alias,trUtf8+=trUtf8_alias,translate+=translate_alias,qsTr=MySingletonCustomTranslator.subObject.tr -ts project.ts diff --git a/tests/auto/linguist/lupdate/testdata/good/tr_function_alias/main.qml b/tests/auto/linguist/lupdate/testdata/good/tr_function_alias/main.qml new file mode 100644 index 000000000..3fd65ce9f --- /dev/null +++ b/tests/auto/linguist/lupdate/testdata/good/tr_function_alias/main.qml @@ -0,0 +1,4 @@ +import MyModuleWithSingleton 1.0 +Text { + text: MySingletonCustomTranslator.subObject.tr("xxx") +} diff --git a/tests/auto/linguist/lupdate/testdata/good/tr_function_alias/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/tr_function_alias/project.ts.result index 93e5b9781..974c4523b 100644 --- a/tests/auto/linguist/lupdate/testdata/good/tr_function_alias/project.ts.result +++ b/tests/auto/linguist/lupdate/testdata/good/tr_function_alias/project.ts.result @@ -130,6 +130,14 @@ </message> </context> <context> + <name>main</name> + <message> + <location filename="main.qml" line="3"/> + <source>xxx</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>scope</name> <message> <location filename="main.cpp" line="34"/> |