summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config.profiles/symbian/qt.conf8
-rw-r--r--qmake/generators/symbian/symbiancommon.cpp63
2 files changed, 32 insertions, 39 deletions
diff --git a/config.profiles/symbian/qt.conf b/config.profiles/symbian/qt.conf
index 29dfa88..072fd7b 100644
--- a/config.profiles/symbian/qt.conf
+++ b/config.profiles/symbian/qt.conf
@@ -1,6 +1,6 @@
[Paths]
-Data = $(EPOCROOT)epoc32/tools/qt
-Headers = $(EPOCROOT)epoc32/include/mw
-Binaries = $(EPOCROOT)epoc32/tools
-Prefix = $(EPOCROOT)sf/mw/qt
+Data = $${EPOCROOT}epoc32/tools/qt
+Headers = $${EPOCROOT}epoc32/include/mw
+Binaries = $${EPOCROOT}epoc32/tools
+Prefix = $${EPOCROOT}sf/mw/qt
diff --git a/qmake/generators/symbian/symbiancommon.cpp b/qmake/generators/symbian/symbiancommon.cpp
index c9ffa11..2c4373a 100644
--- a/qmake/generators/symbian/symbiancommon.cpp
+++ b/qmake/generators/symbian/symbiancommon.cpp
@@ -953,12 +953,15 @@ bool SymbianCommonGenerator::parseTsContent(const QString &tsFilename, SymbianLo
static QString messageElement = QLatin1String("message");
static QString sourceElement = QLatin1String("source");
static QString translationElement = QLatin1String("translation");
- static QString shortCaptionId = QLatin1String("Application short caption");
- static QString longCaptionId = QLatin1String("Application long caption");
- static QString pkgDisplayNameId = QLatin1String("Package name");
- static QString installerPkgDisplayNameId = QLatin1String("Smart installer package name");
- static QString languageAttribute = QLatin1String("language");
- static QChar underscoreChar = QLatin1Char('_');
+ static QString idAttribute = QLatin1String("id");
+ static QString shortCaptionId = QLatin1String("qtn_short_caption_");
+ static QString longCaptionId = QLatin1String("qtn_long_caption_");
+ static QString pkgDisplayNameId = QLatin1String("qtn_package_name_");
+ static QString installerPkgDisplayNameId = QLatin1String("qtn_smart_installer_package_name_");
+ static QString shortCaptionSource = QLatin1String("Application short caption");
+ static QString longCaptionSource = QLatin1String("Application long caption");
+ static QString pkgDisplayNameSource = QLatin1String("Package name");
+ static QString installerPkgDisplayNameSource = QLatin1String("Smart installer package name");
enum CurrentContext {
ContextUnknown,
@@ -991,6 +994,7 @@ bool SymbianCommonGenerator::parseTsContent(const QString &tsFilename, SymbianLo
if (xml.name() == messageElement) {
QString source;
QString translation;
+ QString id = xml.attributes().value(idAttribute).toString();
while (xml.readNextStartElement()) {
if (xml.name() == sourceElement) {
source = xml.readElementText();
@@ -1005,35 +1009,24 @@ bool SymbianCommonGenerator::parseTsContent(const QString &tsFilename, SymbianLo
xml.skipCurrentElement();
}
}
-
- if (source == shortCaptionId) {
- if (loc->shortCaption.isEmpty()) {
- loc->shortCaption = translation;
- } else {
- fprintf(stderr, "Warning: Duplicate application short caption defined in (%s).\n",
- qPrintable(tsFilename));
- }
- } else if (source == longCaptionId) {
- if (loc->longCaption.isEmpty()) {
- loc->longCaption = translation;
- } else {
- fprintf(stderr, "Warning: Duplicate application long caption defined in (%s).\n",
- qPrintable(tsFilename));
- }
- } else if (source == pkgDisplayNameId) {
- if (loc->pkgDisplayName.isEmpty()) {
- loc->pkgDisplayName = translation;
- } else {
- fprintf(stderr, "Warning: Duplicate package display name defined in (%s).\n",
- qPrintable(tsFilename));
- }
- } else if (source == installerPkgDisplayNameId) {
- if (loc->installerPkgDisplayName.isEmpty()) {
- loc->installerPkgDisplayName = translation;
- } else {
- fprintf(stderr, "Warning: Duplicate smart installer package display name defined in (%s).\n",
- qPrintable(tsFilename));
- }
+ // Interesting translations can be identified either by id attribute
+ // of the message or by the source text.
+ // Allow translations with correct id to override translations
+ // detected by source text, as the source text can accidentally
+ // be the same in another string if there are non-interesting
+ // translations added to same context.
+ if (id.startsWith(shortCaptionId)
+ || (loc->shortCaption.isEmpty() && source == shortCaptionSource)) {
+ loc->shortCaption = translation;
+ } else if (id.startsWith(longCaptionId)
+ || (loc->longCaption.isEmpty() && source == longCaptionSource)) {
+ loc->longCaption = translation;
+ } else if (id.startsWith(pkgDisplayNameId)
+ || (loc->pkgDisplayName.isEmpty() && source == pkgDisplayNameSource)) {
+ loc->pkgDisplayName = translation;
+ } else if (id.startsWith(installerPkgDisplayNameId)
+ || (loc->installerPkgDisplayName.isEmpty() && source == installerPkgDisplayNameSource)) {
+ loc->installerPkgDisplayName = translation;
}
} else {
xml.skipCurrentElement();