summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2011-03-23 20:05:49 +0100
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2011-04-11 18:24:56 +0200
commite2ac68f3437ab6e9e865c7c9ad1c52b293f61910 (patch)
tree3c3a8c311816f8262a4711470a9bf56b99f251ec /tools
parent63fdbf4633552126197fad0d5f0595d505a28164 (diff)
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')
-rw-r--r--tools/linguist/shared/ts.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/tools/linguist/shared/ts.cpp b/tools/linguist/shared/ts.cpp
index 85be5c6540..4523bc55d0 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);
}