type = m->danger() ? tr("unresolved") : QLatin1String("unfinished");
break;
case TranslatorMessage::Obsolete:
+ case TranslatorMessage::Vanished:
type = tr("obsolete");
break;
}
MultiDataIndex dataIndex = m_messageModel->dataIndex(item);
MessageItem *m = m_dataModel->messageItem(dataIndex);
- if (!m || m->message().type() == TranslatorMessage::Obsolete)
+ if (!m || m->message().type() == TranslatorMessage::Obsolete
+ || m->message().type() == TranslatorMessage::Vanished)
return;
m_dataModel->setFinished(dataIndex, !m->isFinished());
}
setEditingEnabled(j, m_dataModel->isModelWritable(j)
- && item->message().type() != TranslatorMessage::Obsolete);
+ && item->message().type() != TranslatorMessage::Obsolete
+ && item->message().type() != TranslatorMessage::Vanished);
// Translation label
ed.pluralEditMode = item->translations().count() > 1;
MessageItem tmp(msg);
if (msg.type() == TranslatorMessage::Finished)
c->incrementFinishedCount();
- if (msg.type() != TranslatorMessage::Obsolete) {
+ if (msg.type() == TranslatorMessage::Unfinished) {
doCharCounting(tmp.text(), m_srcWords, m_srcChars, m_srcCharsSpc);
doCharCounting(tmp.pluralText(), m_srcWords, m_srcChars, m_srcCharsSpc);
c->incrementNonobsoleteCount();
void setType(TranslatorMessage::Type type) { m_message.setType(type); }
bool isFinished() const { return type() == TranslatorMessage::Finished; }
- bool isObsolete() const { return type() == TranslatorMessage::Obsolete; }
+ bool isObsolete() const
+ { return type() == TranslatorMessage::Obsolete || type() == TranslatorMessage::Vanished; }
const TranslatorMessage &message() const { return m_message; }
bool compare(const QString &findText, bool matchSubstring,
if (mvi < 0) {
if (!(options & HeuristicSimilarText)) {
makeObsolete:
- newType = TranslatorMessage::Obsolete;
- if (m.type() != TranslatorMessage::Obsolete)
+ switch (m.type()) {
+ case TranslatorMessage::Finished:
+ newType = TranslatorMessage::Vanished;
+ obsoleted++;
+ break;
+ case TranslatorMessage::Unfinished:
+ newType = TranslatorMessage::Obsolete;
obsoleted++;
+ break;
+ default:
+ newType = m.type();
+ break;
+ }
m.clearReferences();
} else {
mvi = virginTor.find(m.context(), m.comment(), m.allReferences());
newType = TranslatorMessage::Unfinished;
known++;
break;
+ case TranslatorMessage::Vanished:
+ newType = TranslatorMessage::Finished;
+ neww++;
+ break;
case TranslatorMessage::Obsolete:
newType = TranslatorMessage::Unfinished;
neww++;
+ break;
}
}
* will offer them as possible translations.
*/
mv.clearReferences();
- mv.setType(TranslatorMessage::Obsolete);
+ mv.setType(mv.type() == TranslatorMessage::Finished
+ ? TranslatorMessage::Vanished : TranslatorMessage::Obsolete);
if (options & NoLocations)
outTor.append(mv);
else
// #, flag...
// #~ msgctxt, msgid*, msgstr - used for obsoleted messages
// #| msgctxt, msgid* previous untranslated-string - for fuzzy message
+ // #~| msgctxt, msgid* previous untranslated-string - for fuzzy obsoleted messages
// msgctx string-context
// msgid untranslated-string
// -- For singular:
translations << str;
}
msg.setTranslations(translations);
- if (isObsolete)
+ bool isFuzzy = item.isFuzzy || (!msg.sourceText().isEmpty() && !msg.isTranslated());
+ if (isObsolete && isFuzzy)
msg.setType(TranslatorMessage::Obsolete);
- else if (item.isFuzzy || (!msg.sourceText().isEmpty() && !msg.isTranslated()))
+ else if (isObsolete)
+ msg.setType(TranslatorMessage::Vanished);
+ else if (isFuzzy)
msg.setType(TranslatorMessage::Unfinished);
else
msg.setType(TranslatorMessage::Finished);
item.tscomment = slurpEscapedString(lines, l, 11, "#~ ", cd);
if (qtContexts)
splitContext(&item.tscomment, &item.context);
+ } else if (line.startsWith("#~| msgid ")) {
+ item.oldMsgId = slurpEscapedString(lines, l, 10, "#~| ", cd);
+ } else if (line.startsWith("#~| msgid_plural ")) {
+ QByteArray extra = slurpEscapedString(lines, l, 17, "#~| ", cd);
+ if (extra != item.oldMsgId)
+ item.extra[QLatin1String("po-old_msgid_plural")] =
+ codec->toUnicode(extra);
+ } else if (line.startsWith("#~| msgctxt ")) {
+ item.oldTscomment = slurpEscapedString(lines, l, 12, "#~| ", cd);
+ if (qtContexts)
+ splitContext(&item.oldTscomment, &item.context);
} else {
cd.appendError(QString(QLatin1String("PO-format parse error in line %1: '%2'"))
.arg(l + 1).arg(codec->toUnicode(lines[l])));
bool noWrap = false;
bool skipFormat = false;
QStringList flags;
- if (msg.type() == TranslatorMessage::Unfinished && msg.isTranslated())
+ if ((msg.type() == TranslatorMessage::Unfinished
+ || msg.type() == TranslatorMessage::Obsolete) && msg.isTranslated())
flags.append(QLatin1String("fuzzy"));
TranslatorMessage::ExtraData::const_iterator itr =
msg.extras().find(QLatin1String("po-flags"));
if (!flags.isEmpty())
out << "#, " << flags.join(QLatin1String(", ")) << '\n';
- QString prefix = QLatin1String("#| ");
+ bool isObsolete = (msg.type() == TranslatorMessage::Obsolete
+ || msg.type() == TranslatorMessage::Vanished);
+ QString prefix = QLatin1String(isObsolete ? "#~| " : "#| ");
if (!msg.oldComment().isEmpty())
out << poEscapedString(prefix, QLatin1String("msgctxt"), noWrap,
escapeComment(msg.oldComment(), qtContexts));
QString plural = msg.extra(QLatin1String("po-old_msgid_plural"));
if (!plural.isEmpty())
out << poEscapedString(prefix, QLatin1String("msgid_plural"), noWrap, plural);
- prefix = QLatin1String((msg.type() == TranslatorMessage::Obsolete) ? "#~ " : "");
+ prefix = QLatin1String(isObsolete ? "#~ " : "");
if (!msg.context().isEmpty())
out << poEscapedString(prefix, QLatin1String("msgctxt"), noWrap,
escapeComment(msg.context(), true) + QLatin1Char('|')
for (int i = 0; i != translator.messageCount(); ++i) {
const TranslatorMessage &msg = translator.message(i);
TranslatorMessage::Type typ = msg.type();
- if (typ != TranslatorMessage::Obsolete) {
+ if (typ != TranslatorMessage::Obsolete && typ != TranslatorMessage::Vanished) {
if (cd.m_idBased && msg.id().isEmpty()) {
++missingIds;
continue;
void Translator::stripObsoleteMessages()
{
for (TMM::Iterator it = m_messages.begin(); it != m_messages.end(); )
- if (it->type() == TranslatorMessage::Obsolete)
+ if (it->type() == TranslatorMessage::Obsolete || it->type() == TranslatorMessage::Vanished)
it = m_messages.erase(it);
else
++it;
class TranslatorMessage
{
public:
- enum Type { Unfinished, Finished, Obsolete };
+ enum Type { Unfinished, Finished, Vanished, Obsolete };
typedef QHash<QString, QString> ExtraData;
class Reference
{
STRING(unfinished);
STRING(userdata);
STRING(value);
+ STRING(vanished);
//STRING(version);
STRING(yes);
QStringRef type = atts.value(strtype);
if (type == strunfinished)
msg.setType(TranslatorMessage::Unfinished);
+ else if (type == strvanished)
+ msg.setType(TranslatorMessage::Vanished);
else if (type == strobsolete)
msg.setType(TranslatorMessage::Obsolete);
if (msg.isPlural()) {
// The xml prolog allows processors to easily detect the correct encoding
t << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n";
- t << "<TS version=\"2.0\"";
+ t << "<TS version=\"2.1\"";
QString languageCode = translator.languageCode();
if (!languageCode.isEmpty() && languageCode != QLatin1String("C"))
QList<QString> contextOrder;
foreach (const TranslatorMessage &msg, translator.messages()) {
// no need for such noise
- if (msg.type() == TranslatorMessage::Obsolete && msg.translation().isEmpty())
+ if ((msg.type() == TranslatorMessage::Obsolete || msg.type() == TranslatorMessage::Vanished)
+ && msg.translation().isEmpty()) {
continue;
+ }
QList<TranslatorMessage> &context = messageOrder[msg.context()];
if (context.isEmpty())
t << " <translation";
if (msg.type() == TranslatorMessage::Unfinished)
t << " type=\"unfinished\"";
+ else if (msg.type() == TranslatorMessage::Vanished)
+ t << " type=\"vanished\"";
else if (msg.type() == TranslatorMessage::Obsolete)
t << " type=\"obsolete\"";
if (msg.isPlural()) {
!
! The location element is set as optional since it was introduced first in Qt 4.2.
! The userdata element is set as optional since it was introduced first in Qt 4.4.
+ ! The vanished message type was introduced first in Qt 5.2.
!
-->
<!--
! variants may not be yes if the message has numerus yes.
-->
<!ATTLIST translation
- type (unfinished|obsolete) #IMPLIED
+ type (unfinished|vanished|obsolete) #IMPLIED
variants (yes|no) "no">
<!-- Deprecated. Use extra-* -->
<!ELEMENT userdata (#PCDATA)* >
while (srcit != srcend || oldsrcit != oldsrcend || transit != transend) {
QByteArray attribs;
QByteArray state;
- if (msg.type() == TranslatorMessage::Obsolete) {
- if (!msg.isPlural())
- attribs = " translate=\"no\"";
- } else if (msg.type() == TranslatorMessage::Finished) {
- attribs = " approved=\"yes\"";
- } else if (transit != transend && !transit->isEmpty()) {
+ if ((msg.type() == TranslatorMessage::Obsolete
+ || msg.type() == TranslatorMessage::Vanished)
+ && !msg.isPlural()) {
+ attribs = " translate=\"no\"";
+ }
+ if (msg.type() == TranslatorMessage::Finished
+ || msg.type() == TranslatorMessage::Vanished) {
+ attribs += " approved=\"yes\"";
+ } else if (msg.type() == TranslatorMessage::Unfinished
+ && transit != transend && !transit->isEmpty()) {
state = " state=\"needs-review-translation\"";
}
writeIndent(ts, indent);
ts << "<group restype=\"" << restypePlurals << "\"";
if (!msg.id().isEmpty())
ts << " id=\"" << msg.id() << "\"";
- if (msg.type() == TranslatorMessage::Obsolete)
+ if (msg.type() == TranslatorMessage::Obsolete || msg.type() == TranslatorMessage::Vanished)
ts << " translate=\"no\"";
ts << ">\n";
++indent;
private:
Translator &m_translator;
ConversionData &m_cd;
- TranslatorMessage::Type m_type;
QString m_language;
QString m_sourceLanguage;
QString m_context;
QString m_oldComment;
QString m_extraComment;
QString m_translatorComment;
+ bool m_translate;
+ bool m_approved;
bool m_isPlural;
bool m_hadAlt;
QStringList m_translations;
XLIFFHandler::XLIFFHandler(Translator &translator, ConversionData &cd)
: m_translator(translator), m_cd(cd),
- m_type(TranslatorMessage::Finished),
+ m_translate(true),
+ m_approved(true),
m_lineNumber(-1),
m_URITT(QLatin1String(TrollTsNamespaceURI)),
m_URI(QLatin1String(XLIFF11namespaceURI)),
pushContext(XC_restype_plurals);
m_id = atts.value(QLatin1String("id"));
if (atts.value(QLatin1String("translate")) == QLatin1String("no"))
- m_type = TranslatorMessage::Obsolete;
+ m_translate = false;
} else {
pushContext(XC_group);
}
} else if (localName == QLatin1String("trans-unit")) {
if (!hasContext(XC_restype_plurals) || m_sources.isEmpty() /* who knows ... */)
if (atts.value(QLatin1String("translate")) == QLatin1String("no"))
- m_type = TranslatorMessage::Obsolete;
+ m_translate = false;
if (!hasContext(XC_restype_plurals)) {
m_id = atts.value(QLatin1String("id"));
if (m_id.startsWith(QLatin1String("_msg")))
m_id.clear();
}
- if (m_type != TranslatorMessage::Obsolete &&
- atts.value(QLatin1String("approved")) != QLatin1String("yes"))
- m_type = TranslatorMessage::Unfinished;
+ if (atts.value(QLatin1String("approved")) != QLatin1String("yes"))
+ m_approved = false;
pushContext(XC_trans_unit);
m_hadAlt = false;
} else if (localName == QLatin1String("alt-trans")) {
m_cd.appendError(QLatin1String("XLIFF syntax error: Message without source string."));
return false;
}
- if (m_type == TranslatorMessage::Obsolete && m_refs.size() == 1
+ if (!m_translate && m_refs.size() == 1
&& m_refs.at(0).fileName() == QLatin1String(MAGIC_OBSOLETE_REFERENCE))
m_refs.clear();
+ TranslatorMessage::Type type
+ = m_translate ? (m_approved ? TranslatorMessage::Finished : TranslatorMessage::Unfinished)
+ : (m_approved ? TranslatorMessage::Vanished : TranslatorMessage::Obsolete);
TranslatorMessage msg(m_context, m_sources[0],
m_comment, QString(), QString(), -1,
- m_translations, m_type, isPlural);
+ m_translations, type, isPlural);
msg.setId(m_id);
msg.setReferences(m_refs);
msg.setOldComment(m_oldComment);
m_translatorComment.clear();
m_extra.clear();
m_refs.clear();
- m_type = TranslatorMessage::Finished;
+ m_translate = true;
+ m_approved = true;
return true;
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>FooBar</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="de">
+<TS version="2.1" language="de">
<context>
<name>Assistant</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>Dialog2</name>
<message numerus="yes">
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="cn">
+<TS version="2.1" language="cn">
<context>
<name>Assistant</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="de">
+<TS version="2.1" language="de">
<context>
<name>Assistant</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>Foo</name>
<message>
msgstr ""
"%1 wird angemeldet ...\n"
"\n"
+
+#: kgverify.cpp:460
+#, fuzzy, kde-format
+#~| msgid ""
+#~| "Logging out %1 ...\n"
+#~| "\n"
+#~ msgid ""
+#~ "Logging out %1...\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%1 wird abgemeldet ...\n"
+#~ "\n"
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>Dialog2</name>
<message numerus="yes">
<location filename="main.cpp" line="41"/>
<source>Plurals, QCoreApplication</source>
<comment>%n car(s)</comment>
- <translation type="unfinished">
- <numerusform></numerusform>
+ <translation>
+ <numerusform>looks quite finished</numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="main.cpp" line="42"/>
<source>Plurals, QCoreApplication</source>
<comment>%n horse(s)</comment>
- <translation type="unfinished">
- <numerusform></numerusform>
+ <translation type="vanished">
+ <numerusform>looks kinda vanished</numerusform>
</translation>
</message>
</context>
<location filename="main.cpp" line="120"/>
<source>inline function 2</source>
<comment>TestClass</comment>
- <translation type="unfinished"></translation>
+ <translation type="vanished">just fine here</translation>
</message>
<message>
<location filename="main.cpp" line="124"/>
<source>static inline function</source>
<comment>TestClass</comment>
- <translation type="unfinished"></translation>
+ <translation type="obsolete">not quite fine here</translation>
</message>
</context>
<context>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="de">
+<TS version="2.1" language="de">
<context>
<name>Assistant</name>
<message>
QTest::addColumn<QString>("fileName");
QTest::addColumn<QString>("format");
+ QTest::newRow("ts") << "test20.ts" << "ts";
QTest::newRow("empty comment") << "test-empty-comment.po" << "po";
QTest::newRow("translator comment") << "test-translator-comment.po" << "po";
QTest::newRow("developer comment") << "test-developer-comment.po" << "po";
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>QApplication</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>FindDialog</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>aaa</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>FindDialog</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>QObject</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>QApplication</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>A</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>B</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>Foo</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>FindDialog</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>QObject</name>
<message>
<message>
<location filename="finddialog.cpp" line="58"/>
<source>Search reached start of the document</source>
- <translation type="unfinished"></translation>
+ <translation type="obsolete"></translation>
</message>
<message>
<location filename="finddialog.cpp" line="59"/>
<source>Text not found</source>
- <translation type="unfinished"></translation>
+ <translation type="vanished">text not found (in chinese)</translation>
</message>
<message numerus="yes">
<location filename="finddialog.cpp" line="64"/>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="zh_CN">
+<TS version="2.1" language="zh_CN">
<context>
<name></name>
<message id="xx_hello">
<message>
<location filename="finddialog.cpp" line="59"/>
<source>Text not found</source>
- <translation type="unfinished"></translation>
+ <translation>text not found (in chinese)</translation>
</message>
<message numerus="yes">
<location filename="finddialog.cpp" line="64"/>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name></name>
<message id="keep_id">
<message>
<location filename="finddialog.cpp" line="85"/>
<source>Enter the text you are looking for.</source>
- <translation type="unfinished">Skriv inn teksten du soker etter</translation>
+ <translation>Skriv inn teksten du soker etter</translation>
</message>
<message>
<location filename="finddialog.cpp" line="135"/>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name></name>
<message id="keep_id">
<name>FindDialog</name>
<message>
<source>Enter the text you are looking for.</source>
- <translation type="obsolete">Skriv inn teksten du soker etter</translation>
+ <translation type="vanished">Skriv inn teksten du soker etter</translation>
</message>
<message>
<location filename="finddialog.cpp" line="88"/>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>FindDialog</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>FindDialog</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>context</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>A1::B::Test</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>Dialog2</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>A1::AB</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name></name>
<message id="this_a_id">
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name></name>
<message id="no_source">
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>Plurals, QCoreApplication</name>
<message numerus="yes">
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name></name>
<message id="qtn_foo_bar">
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>FooContext</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name></name>
<message id="qtn_foo_bar">
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>FooContext</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name></name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name></name>
<message id="qtn_foo_bar">
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>FooContext</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>FindDialog</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>Foo</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>QApplication</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>QApplication</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>QLineEdit</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>QApplication</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>QApplication</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>QApplication</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>QApplication</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>subdir1</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>subsub2</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>subdir1</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>subdir1</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>subsub2</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>subdir1</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>QApplication</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>Dialog2</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>FindDialog</name>
<message>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name></name>
<message id="this_a_id">