summaryrefslogtreecommitdiffstats
path: root/qmake/generators/symbian/symbiancommon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qmake/generators/symbian/symbiancommon.cpp')
-rw-r--r--qmake/generators/symbian/symbiancommon.cpp63
1 files changed, 28 insertions, 35 deletions
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();