From: Friedemann Kleint Date: Thu, 19 Jan 2012 08:31:11 +0000 (+0100) Subject: lupdate: Handle translation-attributes of string list properties. X-Git-Tag: accepted/tizen/20131212.181521~384 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ab9406faeb355d0bd8e0f7e2a6d0fe8d07d8e7d8;p=platform%2Fupstream%2Fqttools.git lupdate: Handle translation-attributes of string list properties. Stringlists now have translation attributes that apply to all items. Initial-patch-by: Jarek Kobus Task-number: QTBUG-8926 Task-number: QTBUG-20440 Change-Id: I230f3907631074df394238e30b3ed7a15adcca4b Sanity-Review: Qt Sanity Bot Reviewed-by: Jarek Kobus --- diff --git a/src/linguist/lupdate/ui.cpp b/src/linguist/lupdate/ui.cpp index 20f6994..95bd284 100644 --- a/src/linguist/lupdate/ui.cpp +++ b/src/linguist/lupdate/ui.cpp @@ -65,7 +65,7 @@ class UiReader : public QXmlDefaultHandler public: UiReader(Translator &translator, ConversionData &cd) : m_translator(translator), m_cd(cd), m_lineNumber(-1), m_isTrString(false), - m_needUtf8(translator.codecName() != "UTF-8") + m_needUtf8(translator.codecName() != "UTF-8"), m_insideStringList(false) {} bool startElement(const QString &namespaceURI, const QString &localName, @@ -79,6 +79,7 @@ public: private: void flush(); + void readTranslationAttributes(const QXmlAttributes &atts); Translator &m_translator; ConversionData &m_cd; @@ -92,6 +93,7 @@ private: int m_lineNumber; bool m_isTrString; bool m_needUtf8; + bool m_insideStringList; }; bool UiReader::startElement(const QString &namespaceURI, @@ -110,16 +112,12 @@ bool UiReader::startElement(const QString &namespaceURI, } } else if (qName == QLatin1String("string")) { flush(); - if (atts.value(QLatin1String("notr")).isEmpty() || - atts.value(QLatin1String("notr")) != QLatin1String("true")) { - m_isTrString = true; - m_comment = atts.value(QLatin1String("comment")); - m_extracomment = atts.value(QLatin1String("extracomment")); - if (!m_cd.m_noUiLines) - m_lineNumber = m_locator->lineNumber(); - } else { - m_isTrString = false; - } + if (!m_insideStringList) + readTranslationAttributes(atts); + } else if (qName == QLatin1String("stringlist")) { + flush(); + m_insideStringList = true; + readTranslationAttributes(atts); } m_accum.clear(); return true; @@ -143,6 +141,8 @@ bool UiReader::endElement(const QString &namespaceURI, flush(); } else if (qName == QLatin1String("function")) { // UI3 embedded code fetchtrInlinedCpp(m_accum, m_translator, m_context); + } else if (qName == QLatin1String("stringlist")) { + m_insideStringList = false; } else { flush(); } @@ -176,8 +176,24 @@ void UiReader::flush() m_translator.extend(msg); } m_source.clear(); - m_comment.clear(); - m_extracomment.clear(); + if (!m_insideStringList) { + m_comment.clear(); + m_extracomment.clear(); + } +} + +void UiReader::readTranslationAttributes(const QXmlAttributes &atts) +{ + const QString notr = atts.value(QStringLiteral("notr")); + if (notr.isEmpty() || notr != QStringLiteral("true")) { + m_isTrString = true; + m_comment = atts.value(QStringLiteral("comment")); + m_extracomment = atts.value(QStringLiteral("extracomment")); + if (!m_cd.m_noUiLines) + m_lineNumber = m_locator->lineNumber(); + } else { + m_isTrString = false; + } } bool loadUI(Translator &translator, const QString &filename, ConversionData &cd)