[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 &note, 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