[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [lokalize] src: Search filter will now find plurals + they are displayed
From: Simon Depiets <null () kde ! org>
Date: 2018-09-05 1:09:42
Message-ID: E1fxMKE-0003As-GN () code ! kde ! org
[Download RAW message or body]
Git commit 1f9847b82fd988433e3b854a36cd002f908e0cdc by Simon Depiets.
Committed on 05/09/2018 at 01:09.
Pushed by sdepiets into branch 'master'.
Search filter will now find plurals + they are displayed
Summary:
https://bugs.kde.org/show_bug.cgi?id=292400
BUG: 292400
{F6234389}
Reviewers: #localization
Tags: #localization
Differential Revision: https://phabricator.kde.org/D15262
M +16 -0 src/catalog/catalog.cpp
M +2 -0 src/catalog/catalog.h
M +2 -0 src/catalog/catalogstorage.h
M +4 -0 src/catalog/gettext/catalogitem.cpp
M +1 -0 src/catalog/gettext/catalogitem.h
M +32 -0 src/catalog/gettext/gettextstorage.cpp
M +2 -0 src/catalog/gettext/gettextstorage.h
M +9 -0 src/catalog/ts/tsstorage.cpp
M +2 -0 src/catalog/ts/tsstorage.h
M +8 -0 src/catalog/xliff/xliffstorage.cpp
M +2 -0 src/catalog/xliff/xliffstorage.h
M +5 -4 src/cataloglistview/catalogmodel.cpp
M +3 -4 src/tm/jobs.cpp
https://commits.kde.org/lokalize/1f9847b82fd988433e3b854a36cd002f908e0cdc
diff --git a/src/catalog/catalog.cpp b/src/catalog/catalog.cpp
index e6641d8..1e83956 100644
--- a/src/catalog/catalog.cpp
+++ b/src/catalog/catalog.cpp
@@ -202,6 +202,13 @@ QString Catalog::msgid(const DocPosition& pos) const
return m_storage->source(alterForSinglePlural(this, pos));
}
+QString Catalog::msgidWithPlurals(const DocPosition& pos) const
+{
+ if (Q_UNLIKELY(!m_storage))
+ return QString();
+ return m_storage->sourceWithPlurals(pos);
+}
+
QString Catalog::msgstr(const DocPosition& pos) const
{
if (Q_UNLIKELY(!m_storage))
@@ -210,6 +217,15 @@ QString Catalog::msgstr(const DocPosition& pos) const
return m_storage->target(pos);
}
+QString Catalog::msgstrWithPlurals(const DocPosition& pos) const
+{
+ if (Q_UNLIKELY(!m_storage))
+ return QString();
+
+ return m_storage->targetWithPlurals(pos);
+}
+
+
CatalogString Catalog::sourceWithTags(const DocPosition& pos) const
{
if (Q_UNLIKELY(!m_storage))
diff --git a/src/catalog/catalog.h b/src/catalog/catalog.h
index e1ab8aa..2171f1e 100644
--- a/src/catalog/catalog.h
+++ b/src/catalog/catalog.h
@@ -84,6 +84,8 @@ public:
QString msgid(const DocPosition&) const;
virtual QString msgstr(const DocPosition&) const;
+ QString msgidWithPlurals(const DocPosition&) const;
+ QString msgstrWithPlurals(const DocPosition&) const;
static QStringList supportedExtensions();
static bool extIsSupported(const QString& path);
diff --git a/src/catalog/catalogstorage.h b/src/catalog/catalogstorage.h
index 8836fc0..1f11a35 100644
--- a/src/catalog/catalogstorage.h
+++ b/src/catalog/catalogstorage.h
@@ -69,6 +69,8 @@ public:
**/
virtual QString source(const DocPosition& pos) const = 0;
virtual QString target(const DocPosition& pos) const = 0;
+ virtual QString sourceWithPlurals(const DocPosition& pos) const = 0;
+ virtual QString targetWithPlurals(const DocPosition& pos) const = 0;
virtual CatalogString sourceWithTags(DocPosition pos) const = 0;
virtual CatalogString targetWithTags(DocPosition pos) const = 0;
virtual CatalogString catalogString(const DocPosition& pos) const = 0;
diff --git a/src/catalog/gettext/catalogitem.cpp \
b/src/catalog/gettext/catalogitem.cpp index 86f73f5..5008779 100644
--- a/src/catalog/gettext/catalogitem.cpp
+++ b/src/catalog/gettext/catalogitem.cpp
@@ -72,6 +72,10 @@ const QVector<QString>& CatalogItem::msgstrPlural() const
{
return d._msgstrPlural;
}
+const QVector<QString>& CatalogItem::msgidPlural() const
+{
+ return d._msgidPlural;
+}
QStringList CatalogItem::allPluralForms(CatalogItem::Part part, bool stripNewLines) \
const {
diff --git a/src/catalog/gettext/catalogitem.h b/src/catalog/gettext/catalogitem.h
index 751e33d..aee69a4 100644
--- a/src/catalog/gettext/catalogitem.h
+++ b/src/catalog/gettext/catalogitem.h
@@ -104,6 +104,7 @@ public:
}
const QString& msgstr(const int form = 0) const;
const QVector<QString>& msgstrPlural() const;
+ const QVector<QString>& msgidPlural() const;
enum Part {Source, Target};
QStringList allPluralForms(CatalogItem::Part, bool stripNewLines = false) const;
bool prependEmptyForMsgid(const int form = 0) const;
diff --git a/src/catalog/gettext/gettextstorage.cpp \
b/src/catalog/gettext/gettextstorage.cpp index afa3885..36d06a0 100644
--- a/src/catalog/gettext/gettextstorage.cpp
+++ b/src/catalog/gettext/gettextstorage.cpp
@@ -177,6 +177,38 @@ QString GettextStorage::target(const DocPosition& pos) const
{
return m_entries.at(pos.entry).msgstr(pos.form);
}
+QString GettextStorage::sourceWithPlurals(const DocPosition& pos) const
+{
+ if (m_entries.at(pos.entry).isPlural()) {
+ const QVector<QString> plurals = m_entries.at(pos.entry).msgidPlural();
+ QString pluralString = QString();
+ for (int i = 0; i < plurals.size(); i++) {
+ pluralString += plurals.at(i);
+ if (i != plurals.size() - 1) {
+ pluralString += "|";
+ }
+ }
+ return pluralString;
+ } else {
+ return m_entries.at(pos.entry).msgid(pos.form);
+ }
+}
+QString GettextStorage::targetWithPlurals(const DocPosition& pos) const
+{
+ if (m_entries.at(pos.entry).isPlural()) {
+ const QVector<QString> plurals = m_entries.at(pos.entry).msgstrPlural();
+ QString pluralString = QString();
+ for (int i = 0; i < plurals.size(); i++) {
+ pluralString += plurals.at(i);
+ if (i != plurals.size() - 1) {
+ pluralString += "|";
+ }
+ }
+ return pluralString;
+ } else {
+ return m_entries.at(pos.entry).msgstr(pos.form);
+ }
+}
void GettextStorage::targetDelete(const DocPosition& pos, int count)
{
diff --git a/src/catalog/gettext/gettextstorage.h \
b/src/catalog/gettext/gettextstorage.h index b470333..a82decb 100644
--- a/src/catalog/gettext/gettextstorage.h
+++ b/src/catalog/gettext/gettextstorage.h
@@ -56,6 +56,8 @@ public:
//flat-model interface (ignores XLIFF grouping)
QString source(const DocPosition& pos) const;
QString target(const DocPosition& pos) const;
+ QString sourceWithPlurals(const DocPosition& pos) const;
+ QString targetWithPlurals(const DocPosition& pos) const;
CatalogString sourceWithTags(DocPosition pos) const;
CatalogString targetWithTags(DocPosition pos) const;
CatalogString catalogString(const DocPosition& pos) const
diff --git a/src/catalog/ts/tsstorage.cpp b/src/catalog/ts/tsstorage.cpp
index 77a3fc4..7604c96 100644
--- a/src/catalog/ts/tsstorage.cpp
+++ b/src/catalog/ts/tsstorage.cpp
@@ -278,6 +278,15 @@ QString TsStorage::target(const DocPosition& pos) const
return content(targetForPos(pos));
}
+QString TsStorage::sourceWithPlurals(const DocPosition& pos) const
+{
+ return source(pos);
+}
+QString TsStorage::targetWithPlurals(const DocPosition& pos) const
+{
+ return target(pos);
+}
+
void TsStorage::targetDelete(const DocPosition& pos, int count)
{
diff --git a/src/catalog/ts/tsstorage.h b/src/catalog/ts/tsstorage.h
index c60037a..3b56954 100644
--- a/src/catalog/ts/tsstorage.h
+++ b/src/catalog/ts/tsstorage.h
@@ -46,6 +46,8 @@ public:
//flat-model interface (ignores TS grouping)
QString source(const DocPosition& pos) const;
QString target(const DocPosition& pos) const;
+ QString sourceWithPlurals(const DocPosition& pos) const;
+ QString targetWithPlurals(const DocPosition& pos) const;
CatalogString targetWithTags(DocPosition pos) const;
CatalogString sourceWithTags(DocPosition pos) const;
CatalogString catalogString(const DocPosition& pos) const;
diff --git a/src/catalog/xliff/xliffstorage.cpp b/src/catalog/xliff/xliffstorage.cpp
index b91e1d5..9ef7b19 100644
--- a/src/catalog/xliff/xliffstorage.cpp
+++ b/src/catalog/xliff/xliffstorage.cpp
@@ -509,6 +509,14 @@ QString XliffStorage::target(const DocPosition& pos) const
{
return genericContent(targetForPos(pos.entry), pos.entry < size());
}
+QString XliffStorage::sourceWithPlurals(const DocPosition& pos) const
+{
+ return source(pos);
+}
+QString XliffStorage::targetWithPlurals(const DocPosition& pos) const
+{
+ return target(pos);
+}
void XliffStorage::targetDelete(const DocPosition& pos, int count)
diff --git a/src/catalog/xliff/xliffstorage.h b/src/catalog/xliff/xliffstorage.h
index c3479f8..99b0e82 100644
--- a/src/catalog/xliff/xliffstorage.h
+++ b/src/catalog/xliff/xliffstorage.h
@@ -47,6 +47,8 @@ public:
//flat-model interface (ignores XLIFF grouping)
QString source(const DocPosition& pos) const;
QString target(const DocPosition& pos) const;
+ QString sourceWithPlurals(const DocPosition& pos) const;
+ QString targetWithPlurals(const DocPosition& pos) const;
CatalogString targetWithTags(DocPosition pos) const;
CatalogString sourceWithTags(DocPosition pos) const;
CatalogString catalogString(const DocPosition& pos) const;
diff --git a/src/cataloglistview/catalogmodel.cpp \
b/src/cataloglistview/catalogmodel.cpp index 4aa12aa..fbcb03e 100644
--- a/src/cataloglistview/catalogmodel.cpp
+++ b/src/cataloglistview/catalogmodel.cpp
@@ -170,8 +170,7 @@ QVariant CatalogTreeModel::data(const QModelIndex& index, int \
role) const if (index.column() >= TranslationStatus)
return QVariant();
else if (index.column() == Source || index.column() == Target) {
- static const DocPosition::Part parts[] = {DocPosition::Source, \
DocPosition::Target};
- QString str = m_catalog->catalogString(DocPosition(index.row(), \
parts[index.column() == Target])).string; + QString str = index.column() \
== Source ? m_catalog->msgidWithPlurals(index.row()) : \
m_catalog->msgstrWithPlurals(index.row());
return m_ignoreAccel ? str.remove(Project::instance()->accel()) : str;
}
role = Qt::DisplayRole;
@@ -183,8 +182,10 @@ QVariant CatalogTreeModel::data(const QModelIndex& index, int \
role) const
switch (index.column()) {
case Key: return index.row() + 1;
- case Source: return m_catalog->msgid(index.row());
- case Target: return m_catalog->msgstr(index.row());
+ case Source:
+ return m_catalog->msgidWithPlurals(index.row());
+ case Target:
+ return m_catalog->msgstrWithPlurals(index.row());
case Notes: {
QString result;
foreach (const Note ¬e, m_catalog->notes(index.row()))
diff --git a/src/tm/jobs.cpp b/src/tm/jobs.cpp
index bf3ddef..54761e6 100644
--- a/src/tm/jobs.cpp
+++ b/src/tm/jobs.cpp
@@ -588,8 +588,7 @@ static bool doInsertEntry(CatalogString source,
bool ok = query1.exec(); //note the RETURN!!!!
if (!ok)
qCWarning(LOKALIZE_LOG) << "doInsertEntry: target update failed" << \
query1.lastError().text();
- else
- {
+ else {
ok = query1.exec(QStringLiteral("UPDATE main SET \
change_date=CURRENT_DATE WHERE target=") % QString::number(targetId)); if (!ok)
qCWarning(LOKALIZE_LOG) << "doInsertEntry: main update failed" \
<< query1.lastError().text(); @@ -1714,8 +1713,8 @@ void UpdateJob::run()
QSqlQuery queryBegin(QStringLiteral("BEGIN"), db);
qlonglong priorId = -1;
doInsertEntry(m_english, m_newTarget,
- m_ctxt, //TODO QStringList -- after XLIFF
- m_approved, fileId, db, rxClean1, c.accel, priorId, priorId);
+ m_ctxt, //TODO QStringList -- after XLIFF
+ m_approved, fileId, db, rxClean1, c.accel, priorId, priorId);
QSqlQuery queryEnd(QStringLiteral("END"), db);
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic