diff options
author | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2011-03-23 19:05:49 (GMT) |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2011-04-11 16:24:56 (GMT) |
commit | e2ac68f3437ab6e9e865c7c9ad1c52b293f61910 (patch) | |
tree | 3c3a8c311816f8262a4711470a9bf56b99f251ec /tools/linguist | |
parent | 63fdbf4633552126197fad0d5f0595d505a28164 (diff) | |
download | Qt-e2ac68f3437ab6e9e865c7c9ad1c52b293f61910.zip Qt-e2ac68f3437ab6e9e865c7c9ad1c52b293f61910.tar.gz Qt-e2ac68f3437ab6e9e865c7c9ad1c52b293f61910.tar.bz2 |
fix detection of relative location information
an empty line number does not indicate relative loc info - it may be the
result of -no-ui-lines.
instead, an empty file name does indicate it - no file name at all makes
no sense, so this means a previous messages has set it already. and we
need this additional detection, as the entire ts file may have no line
number info to base the decision on at all.
Diffstat (limited to 'tools/linguist')
-rw-r--r-- | tools/linguist/shared/ts.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/tools/linguist/shared/ts.cpp b/tools/linguist/shared/ts.cpp index 85be5c6..4523bc5 100644 --- a/tools/linguist/shared/ts.cpp +++ b/tools/linguist/shared/ts.cpp @@ -264,6 +264,7 @@ bool TSReader::read(Translator &translator) //qDebug() << "TS " << attributes(); QHash<QString, int> currentLine; QString currentFile; + bool maybeRelative = false, maybeAbsolute = false; QXmlStreamAttributes atts = attributes(); //QString version = atts.value(strversion).toString(); @@ -342,10 +343,12 @@ bool TSReader::read(Translator &translator) msg.setTranslatorComment(readContents()); } else if (elementStarts(strlocation)) { // <location/> + maybeAbsolute = true; QXmlStreamAttributes atts = attributes(); QString fileName = atts.value(strfilename).toString(); if (fileName.isEmpty()) { fileName = currentMsgFile; + maybeRelative = true; } else { if (refs.isEmpty()) currentFile = fileName; @@ -353,7 +356,6 @@ bool TSReader::read(Translator &translator) } const QString lin = atts.value(strline).toString(); if (lin.isEmpty()) { - translator.setLocationsType(Translator::RelativeLocations); refs.append(TranslatorMessage::Reference(fileName, -1)); } else { bool bOK; @@ -361,9 +363,7 @@ bool TSReader::read(Translator &translator) if (bOK) { if (lin.startsWith(QLatin1Char('+')) || lin.startsWith(QLatin1Char('-'))) { lineNo = (currentLine[fileName] += lineNo); - translator.setLocationsType(Translator::RelativeLocations); - } else { - translator.setLocationsType(Translator::AbsoluteLocations); + maybeRelative = true; } refs.append(TranslatorMessage::Reference(fileName, lineNo)); } @@ -422,6 +422,9 @@ bool TSReader::read(Translator &translator) } else { handleError(); } + translator.setLocationsType(maybeRelative ? Translator::RelativeLocations : + maybeAbsolute ? Translator::AbsoluteLocations : + Translator::NoLocations); } // </TS> } else { handleError(); @@ -727,7 +730,6 @@ bool saveTS(const Translator &translator, QIODevice &dev, ConversionData &cd, in bool loadTS(Translator &translator, QIODevice &dev, ConversionData &cd) { - translator.setLocationsType(Translator::NoLocations); TSReader reader(dev, cd); return reader.read(translator); } |