diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2011-09-05 11:30:52 (GMT) |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2011-09-06 07:01:02 (GMT) |
commit | e3a099032895e8722fd0c0250f35fd75972dd772 (patch) | |
tree | f1dab5f44fce45e9694af50fc93a70572e97e59c | |
parent | a314ecf9b8b4c9b63432df8caf797fa6b28a433d (diff) | |
download | Qt-e3a099032895e8722fd0c0250f35fd75972dd772.zip Qt-e3a099032895e8722fd0c0250f35fd75972dd772.tar.gz Qt-e3a099032895e8722fd0c0250f35fd75972dd772.tar.bz2 |
Symbian: Detect app caption and pkg name translations by id attribute.
To better support various localization tools, added an alternate way
to detect application caption and package name translations in .ts
files. Now in addition to specific source text the id attribute of
the message element can be used to identify interesting translations.
The ids qmake is looking for are:
qtn_short_caption_<appname>
qtn_long_caption_<appname>
qtn_package_name_<appname>
qtn_smart_installer_package_name_<appname>
Task-number: QT-5247
Reviewed-by: Sami Merila
-rw-r--r-- | qmake/generators/symbian/symbiancommon.cpp | 61 |
1 files changed, 28 insertions, 33 deletions
diff --git a/qmake/generators/symbian/symbiancommon.cpp b/qmake/generators/symbian/symbiancommon.cpp index c9ffa11..c7d7560 100644 --- a/qmake/generators/symbian/symbiancommon.cpp +++ b/qmake/generators/symbian/symbiancommon.cpp @@ -953,10 +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 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"); static QString languageAttribute = QLatin1String("language"); static QChar underscoreChar = QLatin1Char('_'); @@ -991,6 +996,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 +1011,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(); |