[qgis] 04/05: Add patches from upstream release-2_8 branch.

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Mon Mar 9 19:18:02 UTC 2015


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository qgis.

commit 17ff6e6b241a680c3f378d01b7c6c7c67a3b88f1
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Mon Mar 9 19:19:26 2015 +0100

    Add patches from upstream release-2_8 branch.
---
 debian/changelog                                   |   1 +
 ...-about-possible-pending-bug-in-force2d-ne.patch |  32 ++++
 ...er-of-dimensions-for-tables-with-unconstr.patch |  40 +++++
 ...001-Fix-handling-of-warped-VRT-refs-12264.patch |  24 +++
 ...or-dimension-if-it-is-not-already-known-a.patch |  65 ++++++++
 ...0001-Use-ST_Force2D-from-PostGIS-2.1.0-up.patch |  26 ++++
 ...tribute-table-fix-changing-header-font-fi.patch |  23 +++
 ...builder-widget-save-scripts-in-the-same-m.patch |  24 +++
 ...-fix-SAGA-2.1.3-Kernel-Density-Estimation.patch |  22 +++
 .../0001-german-translation-fix-fixes-12231.patch  | 163 +++++++++++++++++++++
 ...ovider-restore-behaviour-to-keep-3d-wkb-r.patch |  72 +++++++++
 ...ovider-use-min-max-before-casting-followu.patch |  95 ++++++++++++
 ...fix-error-in-MultipleFileInput-selector-w.patch |  23 +++
 debian/patches/0001-translation-string-fix.patch   |  21 +++
 debian/patches/series                              |  13 ++
 15 files changed, 644 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 0da02e6..82fe8cf 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,7 @@ qgis (2.8.1+dfsg1-1~exp2) UNRELEASED; urgency=medium
   * Don't build internal PySpatiaLite, use Debian package instead.
     (closes: #779933)
   * Add patch to fix FTBFS on arm*.
+  * Add patches from upstream release-2_8 branch.
 
  -- Bas Couwenberg <sebastic at debian.org>  Thu, 05 Mar 2015 22:51:10 +0100
 
diff --git a/debian/patches/0001-Add-comment-about-possible-pending-bug-in-force2d-ne.patch b/debian/patches/0001-Add-comment-about-possible-pending-bug-in-force2d-ne.patch
new file mode 100644
index 0000000..79a5d95
--- /dev/null
+++ b/debian/patches/0001-Add-comment-about-possible-pending-bug-in-force2d-ne.patch
@@ -0,0 +1,32 @@
+From d2d6813673a6a7da97dc47f8b5bc27f124326a62 Mon Sep 17 00:00:00 2001
+From: Sandro Santilli <strk at keybit.net>
+Date: Tue, 3 Mar 2015 17:41:29 +0100
+Subject: Add comment about possible pending bug in force2d need detection
+Origin: https://github.com/qgis/QGIS/commit/d2d6813673a6a7da97dc47f8b5bc27f124326a62
+
+---
+ src/providers/postgres/qgspostgresconn.cpp |    6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/src/providers/postgres/qgspostgresconn.cpp
++++ b/src/providers/postgres/qgspostgresconn.cpp
+@@ -469,6 +469,10 @@ bool QgsPostgresConn::getTableInfo( bool
+       layerProperty.types = QList<QGis::WkbType>() << ( QgsPostgresConn::wkbTypeFromPostgis( type ) );
+       layerProperty.srids = QList<int>() << srid;
+       layerProperty.sql = "";
++      /* TODO: why not != 2 ?
++       * Also note the value is not necessarely trustworthy:
++       * http://trac.osgeo.org/postgis/ticket/3068
++       */
+       layerProperty.force2d = dim == 4;
+       addColumnInfo( layerProperty, schemaName, tableName, isView );
+ 
+@@ -1307,7 +1311,7 @@ void QgsPostgresConn::retrieveLayerTypes
+ 
+     query += " FROM " + table;
+ 
+-    //QgsDebugMsg( "Retrieving geometry types: " + query );
++    //QgsDebugMsg( "Retrieving geometry types,srids and dims: " + query );
+ 
+     QgsPostgresResult gresult = PQexec( query );
+ 
diff --git a/debian/patches/0001-Detect-number-of-dimensions-for-tables-with-unconstr.patch b/debian/patches/0001-Detect-number-of-dimensions-for-tables-with-unconstr.patch
new file mode 100644
index 0000000..68e5102
--- /dev/null
+++ b/debian/patches/0001-Detect-number-of-dimensions-for-tables-with-unconstr.patch
@@ -0,0 +1,40 @@
+From 3d6554e0ab35444228cf3d7d0e1eb6e1e08173bb Mon Sep 17 00:00:00 2001
+From: Sandro Santilli <strk at keybit.net>
+Date: Tue, 3 Mar 2015 17:34:48 +0100
+Subject: Detect number of dimensions for tables with unconstrained type
+Origin: https://github.com/qgis/QGIS/commit/3d6554e0ab35444228cf3d7d0e1eb6e1e08173bb
+Bug: http://hub.qgis.org/issues/9748
+
+Fixes #9748
+
+(cherry picked from commit f512e87ffd0ed7297520bf63830c1fc5c37d7ee9)
+---
+ src/providers/postgres/qgspostgresconn.cpp |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/src/providers/postgres/qgspostgresconn.cpp
++++ b/src/providers/postgres/qgspostgresconn.cpp
+@@ -1298,6 +1298,12 @@ void QgsPostgresConn::retrieveLayerTypes
+       query += QString::number( srid );
+     }
+ 
++    query += ",";
++    query += QString( "%1(%2%3)" )
++             .arg( majorVersion() < 2 ? "ndims" : "st_ndims" )
++             .arg( quotedIdentifier( layerProperty.geometryColName ) )
++             .arg( layerProperty.geometryColType == sctGeography ? "::geometry" : "" );
++
+     query += " FROM " + table;
+ 
+     //QgsDebugMsg( "Retrieving geometry types: " + query );
+@@ -1310,6 +1316,10 @@ void QgsPostgresConn::retrieveLayerTypes
+       {
+         QString type = gresult.PQgetvalue( i, 0 );
+         QString srid = gresult.PQgetvalue( i, 1 );
++        QString ndims = gresult.PQgetvalue( i, 2 );
++
++        if ( ndims.toInt() > 2 ) layerProperty.force2d = true;
++
+         if ( type.isEmpty() )
+           continue;
+ 
diff --git a/debian/patches/0001-Fix-handling-of-warped-VRT-refs-12264.patch b/debian/patches/0001-Fix-handling-of-warped-VRT-refs-12264.patch
new file mode 100644
index 0000000..6732bd9
--- /dev/null
+++ b/debian/patches/0001-Fix-handling-of-warped-VRT-refs-12264.patch
@@ -0,0 +1,24 @@
+From ffaa4989403e0c69577ad6332ecc566a0c6fc5f2 Mon Sep 17 00:00:00 2001
+From: Nyall Dawson <nyall.dawson at gmail.com>
+Date: Fri, 27 Feb 2015 14:59:08 +1100
+Subject: Fix handling of warped VRT (refs #12264)
+Origin: https://github.com/qgis/QGIS/commit/ffaa4989403e0c69577ad6332ecc566a0c6fc5f2
+Bug: http://hub.qgis.org/issues/12264
+
+Loading of rasters requiring warped VRTs was broken, but the heatmap
+plugin is still creating incorrect outputs which needs to be fixed.
+---
+ src/providers/gdal/qgsgdalprovider.cpp |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/src/providers/gdal/qgsgdalprovider.cpp
++++ b/src/providers/gdal/qgsgdalprovider.cpp
+@@ -2486,7 +2486,7 @@ void QgsGdalProvider::initBaseDataset()
+     }
+     else
+     {
+-      hasGeoTransform = GDALGetGeoTransform( mGdalDataset, mGeoTransform );
++      hasGeoTransform = GDALGetGeoTransform( mGdalDataset, mGeoTransform ) == CE_None;
+     }
+   }
+   else
diff --git a/debian/patches/0001-Only-scan-for-dimension-if-it-is-not-already-known-a.patch b/debian/patches/0001-Only-scan-for-dimension-if-it-is-not-already-known-a.patch
new file mode 100644
index 0000000..c0ff286
--- /dev/null
+++ b/debian/patches/0001-Only-scan-for-dimension-if-it-is-not-already-known-a.patch
@@ -0,0 +1,65 @@
+From c5ce2677d16c4460aabf0016188292bef4922c4e Mon Sep 17 00:00:00 2001
+From: Sandro Santilli <strk at keybit.net>
+Date: Tue, 3 Mar 2015 17:51:20 +0100
+Subject: Only scan for dimension if it is not already known as needing
+ force2d
+Origin: https://github.com/qgis/QGIS/commit/c5ce2677d16c4460aabf0016188292bef4922c4e
+
+Also force 2d on 3d input
+---
+ src/providers/postgres/qgspostgresconn.cpp |   27 +++++++++++++++++----------
+ 1 file changed, 17 insertions(+), 10 deletions(-)
+
+--- a/src/providers/postgres/qgspostgresconn.cpp
++++ b/src/providers/postgres/qgspostgresconn.cpp
+@@ -469,11 +469,12 @@ bool QgsPostgresConn::getTableInfo( bool
+       layerProperty.types = QList<QGis::WkbType>() << ( QgsPostgresConn::wkbTypeFromPostgis( type ) );
+       layerProperty.srids = QList<int>() << srid;
+       layerProperty.sql = "";
+-      /* TODO: why not != 2 ?
+-       * Also note the value is not necessarely trustworthy:
++      /*
++       * NOTE: force2d may get a false negative value
++       * (dim == 2 but is not really constrained)
+        * http://trac.osgeo.org/postgis/ticket/3068
+        */
+-      layerProperty.force2d = dim == 4;
++      layerProperty.force2d = dim > 2;
+       addColumnInfo( layerProperty, schemaName, tableName, isView );
+ 
+       if ( isView && layerProperty.pkCols.empty() )
+@@ -1303,11 +1304,14 @@ void QgsPostgresConn::retrieveLayerTypes
+       query += QString::number( srid );
+     }
+ 
+-    query += ",";
+-    query += QString( "%1(%2%3)" )
+-             .arg( majorVersion() < 2 ? "ndims" : "st_ndims" )
+-             .arg( quotedIdentifier( layerProperty.geometryColName ) )
+-             .arg( layerProperty.geometryColType == sctGeography ? "::geometry" : "" );
++    if ( ! layerProperty.force2d )
++    {
++      query += ",";
++      query += QString( "%1(%2%3)" )
++               .arg( majorVersion() < 2 ? "ndims" : "st_ndims" )
++               .arg( quotedIdentifier( layerProperty.geometryColName ) )
++               .arg( layerProperty.geometryColType == sctGeography ? "::geometry" : "" );
++    }
+ 
+     query += " FROM " + table;
+ 
+@@ -1321,9 +1325,12 @@ void QgsPostgresConn::retrieveLayerTypes
+       {
+         QString type = gresult.PQgetvalue( i, 0 );
+         QString srid = gresult.PQgetvalue( i, 1 );
+-        QString ndims = gresult.PQgetvalue( i, 2 );
+ 
+-        if ( ndims.toInt() > 2 ) layerProperty.force2d = true;
++        if ( ! layerProperty.force2d )
++        {
++          QString ndims = gresult.PQgetvalue( i, 2 );
++          if ( ndims.toInt() > 2 ) layerProperty.force2d = true;
++        }
+ 
+         if ( type.isEmpty() )
+           continue;
diff --git a/debian/patches/0001-Use-ST_Force2D-from-PostGIS-2.1.0-up.patch b/debian/patches/0001-Use-ST_Force2D-from-PostGIS-2.1.0-up.patch
new file mode 100644
index 0000000..d1a1ffb
--- /dev/null
+++ b/debian/patches/0001-Use-ST_Force2D-from-PostGIS-2.1.0-up.patch
@@ -0,0 +1,26 @@
+From a525dbd82109d7340f8912c6efca0e08c4258fd7 Mon Sep 17 00:00:00 2001
+From: Sandro Santilli <strk at keybit.net>
+Date: Tue, 3 Mar 2015 18:26:59 +0100
+Subject: Use ST_Force2D from PostGIS-2.1.0 up
+Origin: https://github.com/qgis/QGIS/commit/a525dbd82109d7340f8912c6efca0e08c4258fd7
+
+---
+ src/providers/postgres/qgspostgresfeatureiterator.cpp |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/src/providers/postgres/qgspostgresfeatureiterator.cpp
++++ b/src/providers/postgres/qgspostgresfeatureiterator.cpp
+@@ -322,7 +322,12 @@ bool QgsPostgresFeatureIterator::declare
+     if ( mSource->mForce2d )
+     {
+       geom = QString( "%1(%2)" )
+-             .arg( mConn->majorVersion() < 2 ? "force_2d" : "st_force_2d" )
++                   // Force_2D before 2.0
++             .arg( mConn->majorVersion() < 2 ? "force_2d"
++                   // ST_Force2D since 2.1.0
++                   : mConn->majorVersion() > 2 || mConn->minorVersion() > 0 ? "st_force2d"
++                   // ST_Force_2D in 2.0.x
++                   : "st_force_2d" )
+              .arg( geom );
+     }
+ 
diff --git a/debian/patches/0001-composer-attribute-table-fix-changing-header-font-fi.patch b/debian/patches/0001-composer-attribute-table-fix-changing-header-font-fi.patch
new file mode 100644
index 0000000..1465d90
--- /dev/null
+++ b/debian/patches/0001-composer-attribute-table-fix-changing-header-font-fi.patch
@@ -0,0 +1,23 @@
+From fe9161f401d10c2e1f63e57a60faeeb78a4d600b Mon Sep 17 00:00:00 2001
+From: "Juergen E. Fischer" <jef at norbit.de>
+Date: Fri, 27 Feb 2015 20:58:04 +0100
+Subject: composer attribute table: fix changing header font (fixes #12233)
+Origin: https://github.com/qgis/QGIS/commit/fe9161f401d10c2e1f63e57a60faeeb78a4d600b
+Bug: http://hub.qgis.org/issues/12233
+
+(cherry picked from commit ec0ab3f7ce4c7b009cff9abaf9d9277cb62437de)
+---
+ src/app/composer/qgscomposerattributetablewidget.cpp |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/src/app/composer/qgscomposerattributetablewidget.cpp
++++ b/src/app/composer/qgscomposerattributetablewidget.cpp
+@@ -286,7 +286,7 @@ void QgsComposerAttributeTableWidget::on
+ 
+   bool ok;
+   QFont newFont = QgisGui::getFont( ok, mComposerTable->headerFont(), tr( "Select Font" ) );
+-  if ( !ok )
++  if ( ok )
+   {
+     QgsComposition *composition = mComposerTable->composition();
+     if ( composition )
diff --git a/debian/patches/0001-expression-builder-widget-save-scripts-in-the-same-m.patch b/debian/patches/0001-expression-builder-widget-save-scripts-in-the-same-m.patch
new file mode 100644
index 0000000..ddc210d
--- /dev/null
+++ b/debian/patches/0001-expression-builder-widget-save-scripts-in-the-same-m.patch
@@ -0,0 +1,24 @@
+From dced88d8831e1ac313458d9633581347fd8fb0cc Mon Sep 17 00:00:00 2001
+From: "Juergen E. Fischer" <jef at norbit.de>
+Date: Fri, 6 Mar 2015 14:00:26 +0100
+Subject: =?UTF-8?q?expression=20builder=20widget:=20save=20scripts=20in=20th?=
+ =?UTF-8?q?e=20same=20mode=20they=20are=20loaded=0A(avoids=20adding=20empty=20?=
+ =?UTF-8?q?lines=20on=20every=20save=20on=20windows)?=
+Origin: https://github.com/qgis/QGIS/commit/dced88d8831e1ac313458d9633581347fd8fb0cc
+
+(cherry picked from commit 37a7831d2a1571616f10d20a476b71f1d539cc5d)
+---
+ src/gui/qgsexpressionbuilderwidget.cpp |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/src/gui/qgsexpressionbuilderwidget.cpp
++++ b/src/gui/qgsexpressionbuilderwidget.cpp
+@@ -149,7 +149,7 @@ void QgsExpressionBuilderWidget::saveFun
+ 
+   fileName = mFunctionsPath + QDir::separator() + fileName;
+   QFile myFile( fileName );
+-  if ( myFile.open( QIODevice::WriteOnly | QIODevice::Text ) )
++  if ( myFile.open( QIODevice::WriteOnly ) )
+   {
+     QTextStream myFileStream( &myFile );
+     myFileStream << txtPython->text() << endl;
diff --git a/debian/patches/0001-fix-SAGA-2.1.3-Kernel-Density-Estimation.patch b/debian/patches/0001-fix-SAGA-2.1.3-Kernel-Density-Estimation.patch
new file mode 100644
index 0000000..9a33f4b
--- /dev/null
+++ b/debian/patches/0001-fix-SAGA-2.1.3-Kernel-Density-Estimation.patch
@@ -0,0 +1,22 @@
+From 3603ee0f00892bce721a2de26e370a8c2a86389f Mon Sep 17 00:00:00 2001
+From: Giovanni Manghi <giovanni.manghi at faunalia.pt>
+Date: Tue, 3 Mar 2015 23:13:46 +0000
+Subject: fix SAGA 2.1.3 Kernel Density Estimation
+Origin: https://github.com/qgis/QGIS/commit/3603ee0f00892bce721a2de26e370a8c2a86389f
+
+---
+ .../algs/saga/description/2.1.3/KernelDensityEstimation.txt       |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/python/plugins/processing/algs/saga/description/2.1.3/KernelDensityEstimation.txt
++++ b/python/plugins/processing/algs/saga/description/2.1.3/KernelDensityEstimation.txt
+@@ -6,5 +6,6 @@ ParameterNumber|RADIUS|Radius|None|None|
+ ParameterSelection|KERNEL|Kernel|[0] quartic kernel;[1] gaussian kernel
+ Hardcoded|-TARGET_DEFINITION 0
+ Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+-ParameterNumber|USER_SIZE|Cellsize|None|None|100.0
+-OutputRaster|USER_GRID|Grid
++ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
++ParameterSelection|TARGET_USER_FITS|Fit Choice|[0] nodes;[1] cells
++OutputRaster|TARGET_OUT_GRID|Grid
+\ No newline at end of file
diff --git a/debian/patches/0001-german-translation-fix-fixes-12231.patch b/debian/patches/0001-german-translation-fix-fixes-12231.patch
new file mode 100644
index 0000000..b1b8f3b
--- /dev/null
+++ b/debian/patches/0001-german-translation-fix-fixes-12231.patch
@@ -0,0 +1,163 @@
+From e2fcf6fc911d85739971078bc6eedc0221bf2337 Mon Sep 17 00:00:00 2001
+From: "Juergen E. Fischer" <jef at norbit.de>
+Date: Thu, 5 Mar 2015 20:49:27 +0100
+Subject: german translation fix (fixes #12231)
+Origin: https://github.com/qgis/QGIS/commit/e2fcf6fc911d85739971078bc6eedc0221bf2337
+Bug: http://hub.qgis.org/issues/12231
+
+---
+ doc/TRANSLATORS |   90 +++++++++++++++++++++++++++----------------------------
+ i18n/qgis_de.ts |   26 ++++++----------
+ 2 files changed, 54 insertions(+), 62 deletions(-)
+
+--- a/doc/TRANSLATORS
++++ b/doc/TRANSLATORS
+@@ -1,47 +1,47 @@
+ <style>table {font-size:80%;}th {text-align:left; }.bartodo{ background-color:red;width:100px;height:20px;}.bardone{ background-color:green;width:80px;height:20px;font-size:80%;text-align:center;padding-top:4px;height:16px;color:white;}</style><table><tr><th colspan="2" style="width:250px;">Language</th><th>Finished %</th><th>Translators</th></tr>
+ 
+-<tr><td><img src="qrc:/images/flags/de.png"></td><td>German</td><td><div title="finished:13174 unfinished:1 untranslated:0" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Jürgen E. Fischer, Stephan Holl, Otto Dassau, Werner Macho</td></tr>
+-<tr><td><img src="qrc:/images/flags/gl.png"></td><td>Galician</td><td><div title="finished:13174 unfinished:1 untranslated:0" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Xan Vieiro</td></tr>
+-<tr><td><img src="qrc:/images/flags/nb.png"></td><td>Bokmal, Norwegian</td><td><div title="finished:13174 unfinished:1 untranslated:0" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>James Stott, Maléne Peterson</td></tr>
+-<tr><td><img src="qrc:/images/flags/pt_PT.png"></td><td>Portuguese (Portugal)</td><td><div title="finished:13174 unfinished:1 untranslated:0" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Giovanni Manghi, Joana Simões, Duarte Carreira, Alexandre Neto, Pedro Pereira, Pedro Palheiro, Nelson Silva, Ricardo Sena, Leandro Infantini, João Gaspar</td></tr>
+-<tr><td><img src="qrc:/images/flags/sv.png"></td><td>Swedish</td><td><div title="finished:13174 unfinished:1 untranslated:0" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Lars Luthman, Magnus Homann, Victor Axbom</td></tr>
+-<tr><td><img src="qrc:/images/flags/fr.png"></td><td>French</td><td><div title="finished:13174 unfinished:0 untranslated:1" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Arnaud Morvan, Augustin Roche, Jean-Roc Morreale, Loïc Buscoz, Marc-André Saia, Mathieu Bossaert, Mayeul Kauffmann, Médéric Ribreux, Michael Douchin, Nicolas Rochard, Robin Prest, DelazJ, Stéphane Possamai, Sylvain Badey, Sylvain_M, Sylvain Maillard, Xavier Tardieu</td></tr>
+-<tr><td><img src="qrc:/images/flags/pt_BR.png"></td><td>Portuguese (Brazil)</td><td><div title="finished:13174 unfinished:0 untranslated:1" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Sidney Schaberle Goveia, Arthur Nanni, Marcelo Soares Souza, Narcélio de Sá Pereira Filho, Leônidas Descovi Filho, Felipe Sodré Barros </td></tr>
+-<tr><td><img src="qrc:/images/flags/nl.png"></td><td>Dutch</td><td><div title="finished:13172 unfinished:1 untranslated:2" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Richard Duivenvoorde, Raymond Nijssen, Carlo van Rijswijk, Diethard Jansen, Willem Hoffmans, Dick Groskamp</td></tr>
+-<tr><td><img src="qrc:/images/flags/it.png"></td><td>Italian</td><td><div title="finished:13170 unfinished:1 untranslated:4" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Roberto Angeletti, Michele Beneventi, Marco Braida, Stefano Campus, Luca Casagrande, Paolo Cavallini, Giuliano Curti, Luca Delucchi, Alessandro Fanna, Michele Ferretti, Matteo Ghetta, Anne Gishla, Maurizio Napolitano, Flavio Rigolon</td></tr>
+-<tr><td><img src="qrc:/images/flags/es.png"></td><td>Spanish</td><td><div title="finished:13158 unfinished:1 untranslated:16" class="bartodo"><div class="bardone" style="width:99px">99.9</div></div></td><td>Carlos Dávila, Javier César Aldariz, Gabriela Awad, Edwin Amado, Mayeul Kauffmann, Diana Galindo</td></tr>
+-<tr><td><img src="qrc:/images/flags/fi.png"></td><td>Finnish</td><td><div title="finished:13156 unfinished:1 untranslated:18" class="bartodo"><div class="bardone" style="width:99px">99.9</div></div></td><td>Kari Salovaara, Marko Järvenpää</td></tr>
+-<tr><td><img src="qrc:/images/flags/eu.png"></td><td>Basque</td><td><div title="finished:13022 unfinished:1 untranslated:152" class="bartodo"><div class="bardone" style="width:98px">98.8</div></div></td><td>Asier Sarasua Garmendia, Irantzu Alvarez</td></tr>
+-<tr><td><img src="qrc:/images/flags/ja.png"></td><td>Japanese</td><td><div title="finished:12961 unfinished:0 untranslated:214" class="bartodo"><div class="bardone" style="width:98px">98.4</div></div></td><td>BABA Yoshihiko, Yoichi Kayama, Minoru Akagi, Takayuki Nuimura, Takayuki Mizutani, Norihiro Yamate</td></tr>
+-<tr><td><img src="qrc:/images/flags/pl.png"></td><td>Polish</td><td><div title="finished:12702 unfinished:1 untranslated:472" class="bartodo"><div class="bardone" style="width:96px">96.4</div></div></td><td>Robert Szczepanek, Milena Nowotarska, Borys Jurgiel, Mateusz Łoskot, Tomasz Paul, Andrzej Świąder, Radosław Pasiok</td></tr>
+-<tr><td><img src="qrc:/images/flags/hu.png"></td><td>Hungarian</td><td><div title="finished:12398 unfinished:5 untranslated:772" class="bartodo"><div class="bardone" style="width:94px">94.1</div></div></td><td>Zoltan Siki</td></tr>
+-<tr><td><img src="qrc:/images/flags/ro.png"></td><td>Romanian</td><td><div title="finished:12311 unfinished:4 untranslated:860" class="bartodo"><div class="bardone" style="width:93px">93.5</div></div></td><td>Sorin Călinică, Lonut Losifescu-Enescu, Bogdan Pacurar</td></tr>
+-<tr><td><img src="qrc:/images/flags/da.png"></td><td>Danish</td><td><div title="finished:12273 unfinished:4 untranslated:898" class="bartodo"><div class="bardone" style="width:93px">93.2</div></div></td><td>Jacob Overgaard Madsen, Bo Victor Thomsen</td></tr>
+-<tr><td><img src="qrc:/images/flags/zh.png"></td><td>Chinese simplified</td><td><div title="finished:12197 unfinished:3 untranslated:975" class="bartodo"><div class="bardone" style="width:92px">92.6</div></div></td><td>Calvin Ngei, Lisashen</td></tr>
+-<tr><td><img src="qrc:/images/flags/zh_CN.png"></td><td>Chinese (China)</td><td><div title="finished:12183 unfinished:2 untranslated:990" class="bartodo"><div class="bardone" style="width:92px">92.5</div></div></td><td>Calvin Ngei, Zhang Jun, Richard Xie</td></tr>
+-<tr><td><img src="qrc:/images/flags/ko.png"></td><td>Korean</td><td><div title="finished:12087 unfinished:2 untranslated:1086" class="bartodo"><div class="bardone" style="width:91px">91.7</div></div></td><td>OSGeo Korean Chapter</td></tr>
+-<tr><td><img src="qrc:/images/flags/ru.png"></td><td>Russian</td><td><div title="finished:12044 unfinished:25 untranslated:1106" class="bartodo"><div class="bardone" style="width:91px">91.5</div></div></td><td>Alexander Bruy, Artem Popov</td></tr>
+-<tr><td><img src="qrc:/images/flags/vi.png"></td><td>Vietnamese</td><td><div title="finished:12045 unfinished:14 untranslated:1116" class="bartodo"><div class="bardone" style="width:91px">91.5</div></div></td><td>Phan Anh, Bùi Hữu Mạnh</td></tr>
+-<tr><td><img src="qrc:/images/flags/zh_TW.png"></td><td>Chinese (Taiwan, Province of China)</td><td><div title="finished:11994 unfinished:5 untranslated:1176" class="bartodo"><div class="bardone" style="width:91px">91.1</div></div></td><td>Nung-yao Lin</td></tr>
+-<tr><td><img src="qrc:/images/flags/cs.png"></td><td>Czech</td><td><div title="finished:11848 unfinished:5 untranslated:1322" class="bartodo"><div class="bardone" style="width:89px">89.9</div></div></td><td>Jan Helebrant, Martin Landa, Peter Antolik, Martin Dzurov, Stanislav Horáček</td></tr>
+-<tr><td><img src="qrc:/images/flags/hi.png"></td><td>Hindi</td><td><div title="finished:11373 unfinished:3 untranslated:1799" class="bartodo"><div class="bardone" style="width:86px">86.3</div></div></td><td>Harish Kumar Solanki</td></tr>
+-<tr><td><img src="qrc:/images/flags/id.png"></td><td>Indonesian</td><td><div title="finished:10759 unfinished:63 untranslated:2353" class="bartodo"><div class="bardone" style="width:81px">81.9</div></div></td><td>Emir Hartato, Muhammad Iqnaul Haq Siregar, Trias Aditya, Januar V. Simarmata, I Made Anombawa</td></tr>
+-<tr><td><img src="qrc:/images/flags/lt.png"></td><td>Lithuanian</td><td><div title="finished:10779 unfinished:10 untranslated:2386" class="bartodo"><div class="bardone" style="width:81px">81.9</div></div></td><td>Paulius Litvinas, Tomas Straupis, Kestas M</td></tr>
+-<tr><td><img src="qrc:/images/flags/bs.png"></td><td>Bosnian</td><td><div title="finished:10519 unfinished:15 untranslated:2641" class="bartodo"><div class="bardone" style="width:79px">79.9</div></div></td><td>Almir Karabegovic</td></tr>
+-<tr><td><img src="qrc:/images/flags/km.png"></td><td>Central Khmer</td><td><div title="finished:9384 unfinished:9 untranslated:3782" class="bartodo"><div class="bardone" style="width:71px">71.3</div></div></td><td>Khoem Sokhem</td></tr>
+-<tr><td><img src="qrc:/images/flags/sl.png"></td><td>Slovenian</td><td><div title="finished:9041 unfinished:12 untranslated:4122" class="bartodo"><div class="bardone" style="width:68px">68.7</div></div></td><td>Jože Detečnik, Dejan Gregor, Jaka Kranjc</td></tr>
+-<tr><td><img src="qrc:/images/flags/lv.png"></td><td>Latvian</td><td><div title="finished:8905 unfinished:48 untranslated:4222" class="bartodo"><div class="bardone" style="width:67px">67.8</div></div></td><td>Maris Nartiss, Pēteris Brūns</td></tr>
+-<tr><td><img src="qrc:/images/flags/ar.png"></td><td>Arabic</td><td><div title="finished:8893 unfinished:31 untranslated:4251" class="bartodo"><div class="bardone" style="width:67px">67.6</div></div></td><td>Ichaouia Amine, Hosham Munier</td></tr>
+-<tr><td><img src="qrc:/images/flags/et.png"></td><td>Estonian</td><td><div title="finished:8816 unfinished:32 untranslated:4327" class="bartodo"><div class="bardone" style="width:67px">67.0</div></div></td><td>Veiko Viil</td></tr>
+-<tr><td><img src="qrc:/images/flags/hr.png"></td><td>Croatian</td><td><div title="finished:7455 unfinished:15 untranslated:5705" class="bartodo"><div class="bardone" style="width:56px">56.6</div></div></td><td>Zoran Jankovic</td></tr>
+-<tr><td><img src="qrc:/images/flags/tr.png"></td><td>Turkish</td><td><div title="finished:6841 unfinished:7 untranslated:6327" class="bartodo"><div class="bardone" style="width:51px">52.0</div></div></td><td>Osman Yalçın YILMAZ, Omur Saygin</td></tr>
+-<tr><td><img src="qrc:/images/flags/sk.png"></td><td>Slovak</td><td><div title="finished:5933 unfinished:980 untranslated:6262" class="bartodo"><div class="bardone" style="width:48px">48.8</div></div></td><td>Lubos Balazovic, Jana Kormanikova, Ivan Mincik</td></tr>
+-<tr><td><img src="qrc:/images/flags/sr.png"></td><td>Serbian (latin)</td><td><div title="finished:6247 unfinished:39 untranslated:6889" class="bartodo"><div class="bardone" style="width:47px">47.6</div></div></td><td>Goran Ivanković</td></tr>
+-<tr><td><img src="qrc:/images/flags/el.png"></td><td>Modern Greek (1453-)</td><td><div title="finished:6189 unfinished:12 untranslated:6974" class="bartodo"><div class="bardone" style="width:47px">47.0</div></div></td><td>Theodoros Vakkas, Ioannis Tsimpiris, Evripidis Argyropoulos, Mike Pegnigiannis, Nikos Ves</td></tr>
+-<tr><td><img src="qrc:/images/flags/sr.png"></td><td>Serbian</td><td><div title="finished:6005 unfinished:27 untranslated:7143" class="bartodo"><div class="bardone" style="width:45px">45.7</div></div></td><td>Goran Ivanković</td></tr>
+-<tr><td><img src="qrc:/images/flags/ca.png"></td><td>Catalan</td><td><div title="finished:5155 unfinished:24 untranslated:7996" class="bartodo"><div class="bardone" style="width:39px">39.2</div></div></td><td>Albert F, Pau Reguant Ridó, Xavier Roijals</td></tr>
+-<tr><td><img src="qrc:/images/flags/th.png"></td><td>Thai</td><td><div title="finished:5074 unfinished:27 untranslated:8074" class="bartodo"><div class="bardone" style="width:38px">38.6</div></div></td><td>Man Chao</td></tr>
+-<tr><td><img src="qrc:/images/flags/fa.png"></td><td>Persian</td><td><div title="finished:5040 unfinished:32 untranslated:8103" class="bartodo"><div class="bardone" style="width:38px">38.4</div></div></td><td>Mola Pahnadayan, Masoud Pashotan , Masoud Erfanyan</td></tr>
+-<tr><td><img src="qrc:/images/flags/is.png"></td><td>Icelandic</td><td><div title="finished:4920 unfinished:28 untranslated:8227" class="bartodo"><div class="bardone" style="width:37px">37.4</div></div></td><td>Ásta Kristín Óladóttir, Thordur Ivarsson</td></tr>
+-<tr><td><img src="qrc:/images/flags/uk.png"></td><td>Ukrainian</td><td><div title="finished:4839 unfinished:21 untranslated:8315" class="bartodo"><div class="bardone" style="width:36px">36.8</div></div></td><td>Alexander Bruy</td></tr>
+-<tr><td><img src="qrc:/images/flags/mn.png"></td><td>Mongolian</td><td><div title="finished:4635 unfinished:19 untranslated:8521" class="bartodo"><div class="bardone" style="width:35px">35.3</div></div></td><td>Bayarmaa Enkhtur</td></tr></table>
++<tr><td><img src="qrc:/images/flags/de.png"></td><td>German</td><td><div title="finished:13174 unfinished:0 untranslated:0" class="bartodo"><div class="bardone" style="width:100px">100.0</div></div></td><td>Jürgen E. Fischer, Stephan Holl, Otto Dassau, Werner Macho</td></tr>
++<tr><td><img src="qrc:/images/flags/gl.png"></td><td>Galician</td><td><div title="finished:13170 unfinished:1 untranslated:3" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Xan Vieiro</td></tr>
++<tr><td><img src="qrc:/images/flags/nb.png"></td><td>Norwegian Bokmal</td><td><div title="finished:13170 unfinished:1 untranslated:3" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>James Stott, Maléne Peterson</td></tr>
++<tr><td><img src="qrc:/images/flags/pt_PT.png"></td><td>Portuguese (Portugal)</td><td><div title="finished:13170 unfinished:1 untranslated:3" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Giovanni Manghi, Joana Simões, Duarte Carreira, Alexandre Neto, Pedro Pereira, Pedro Palheiro, Nelson Silva, Ricardo Sena, Leandro Infantini, João Gaspar</td></tr>
++<tr><td><img src="qrc:/images/flags/sv.png"></td><td>Swedish</td><td><div title="finished:13170 unfinished:1 untranslated:3" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Lars Luthman, Magnus Homann, Victor Axbom</td></tr>
++<tr><td><img src="qrc:/images/flags/fr.png"></td><td>French</td><td><div title="finished:13170 unfinished:0 untranslated:4" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Arnaud Morvan, Augustin Roche, Jean-Roc Morreale, Loïc Buscoz, Marc-André Saia, Mathieu Bossaert, Mayeul Kauffmann, Médéric Ribreux, Michael Douchin, Nicolas Rochard, Robin Prest, DelazJ, Stéphane Possamai, Sylvain Badey, Sylvain_M, Sylvain Maillard, Xavier Tardieu</td></tr>
++<tr><td><img src="qrc:/images/flags/pt_BR.png"></td><td>Portuguese (Brazil)</td><td><div title="finished:13170 unfinished:0 untranslated:4" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Sidney Schaberle Goveia, Arthur Nanni, Marcelo Soares Souza, Narcélio de Sá Pereira Filho, Leônidas Descovi Filho, Felipe Sodré Barros </td></tr>
++<tr><td><img src="qrc:/images/flags/nl.png"></td><td>Dutch</td><td><div title="finished:13168 unfinished:1 untranslated:5" class="bartodo"><div class="bardone" style="width:99px">100.0</div></div></td><td>Richard Duivenvoorde, Raymond Nijssen, Carlo van Rijswijk, Diethard Jansen, Willem Hoffmans, Dick Groskamp</td></tr>
++<tr><td><img src="qrc:/images/flags/it.png"></td><td>Italian</td><td><div title="finished:13166 unfinished:1 untranslated:7" class="bartodo"><div class="bardone" style="width:99px">99.9</div></div></td><td>Roberto Angeletti, Michele Beneventi, Marco Braida, Stefano Campus, Luca Casagrande, Paolo Cavallini, Giuliano Curti, Luca Delucchi, Alessandro Fanna, Michele Ferretti, Matteo Ghetta, Anne Gishla, Maurizio Napolitano, Flavio Rigolon</td></tr>
++<tr><td><img src="qrc:/images/flags/es.png"></td><td>Spanish</td><td><div title="finished:13154 unfinished:1 untranslated:19" class="bartodo"><div class="bardone" style="width:99px">99.9</div></div></td><td>Carlos Dávila, Javier César Aldariz, Gabriela Awad, Edwin Amado, Mayeul Kauffmann, Diana Galindo</td></tr>
++<tr><td><img src="qrc:/images/flags/fi.png"></td><td>Finnish</td><td><div title="finished:13152 unfinished:1 untranslated:21" class="bartodo"><div class="bardone" style="width:99px">99.8</div></div></td><td>Kari Salovaara, Marko Järvenpää</td></tr>
++<tr><td><img src="qrc:/images/flags/eu.png"></td><td>Basque</td><td><div title="finished:13018 unfinished:1 untranslated:155" class="bartodo"><div class="bardone" style="width:98px">98.8</div></div></td><td>Asier Sarasua Garmendia, Irantzu Alvarez</td></tr>
++<tr><td><img src="qrc:/images/flags/ja.png"></td><td>Japanese</td><td><div title="finished:12957 unfinished:0 untranslated:217" class="bartodo"><div class="bardone" style="width:98px">98.4</div></div></td><td>BABA Yoshihiko, Yoichi Kayama, Minoru Akagi, Takayuki Nuimura, Takayuki Mizutani, Norihiro Yamate</td></tr>
++<tr><td><img src="qrc:/images/flags/pl.png"></td><td>Polish</td><td><div title="finished:12698 unfinished:1 untranslated:475" class="bartodo"><div class="bardone" style="width:96px">96.4</div></div></td><td>Robert Szczepanek, Milena Nowotarska, Borys Jurgiel, Mateusz Łoskot, Tomasz Paul, Andrzej Świąder, Radosław Pasiok</td></tr>
++<tr><td><img src="qrc:/images/flags/hu.png"></td><td>Hungarian</td><td><div title="finished:12394 unfinished:9 untranslated:771" class="bartodo"><div class="bardone" style="width:94px">94.1</div></div></td><td>Zoltan Siki</td></tr>
++<tr><td><img src="qrc:/images/flags/ro.png"></td><td>Romanian</td><td><div title="finished:12307 unfinished:4 untranslated:863" class="bartodo"><div class="bardone" style="width:93px">93.4</div></div></td><td>Sorin Călinică, Lonut Losifescu-Enescu, Bogdan Pacurar</td></tr>
++<tr><td><img src="qrc:/images/flags/da.png"></td><td>Danish</td><td><div title="finished:12269 unfinished:4 untranslated:901" class="bartodo"><div class="bardone" style="width:93px">93.1</div></div></td><td>Jacob Overgaard Madsen, Bo Victor Thomsen</td></tr>
++<tr><td><img src="qrc:/images/flags/zh.png"></td><td>Chinese simplified</td><td><div title="finished:12193 unfinished:3 untranslated:978" class="bartodo"><div class="bardone" style="width:92px">92.6</div></div></td><td>Calvin Ngei, Lisashen</td></tr>
++<tr><td><img src="qrc:/images/flags/zh_CN.png"></td><td>Chinese (China)</td><td><div title="finished:12179 unfinished:2 untranslated:993" class="bartodo"><div class="bardone" style="width:92px">92.5</div></div></td><td>Calvin Ngei, Zhang Jun, Richard Xie</td></tr>
++<tr><td><img src="qrc:/images/flags/ko.png"></td><td>Korean</td><td><div title="finished:12083 unfinished:2 untranslated:1089" class="bartodo"><div class="bardone" style="width:91px">91.7</div></div></td><td>OSGeo Korean Chapter</td></tr>
++<tr><td><img src="qrc:/images/flags/ru.png"></td><td>Russian</td><td><div title="finished:12041 unfinished:24 untranslated:1109" class="bartodo"><div class="bardone" style="width:91px">91.5</div></div></td><td>Alexander Bruy, Artem Popov</td></tr>
++<tr><td><img src="qrc:/images/flags/vi.png"></td><td>Vietnamese</td><td><div title="finished:12041 unfinished:14 untranslated:1119" class="bartodo"><div class="bardone" style="width:91px">91.5</div></div></td><td>Phan Anh, Bùi Hữu Mạnh</td></tr>
++<tr><td><img src="qrc:/images/flags/zh_TW.png"></td><td>Chinese (Taiwan (Province of China))</td><td><div title="finished:11990 unfinished:5 untranslated:1179" class="bartodo"><div class="bardone" style="width:91px">91.0</div></div></td><td>Nung-yao Lin</td></tr>
++<tr><td><img src="qrc:/images/flags/cs.png"></td><td>Czech</td><td><div title="finished:11844 unfinished:5 untranslated:1325" class="bartodo"><div class="bardone" style="width:89px">89.9</div></div></td><td>Jan Helebrant, Martin Landa, Peter Antolik, Martin Dzurov, Stanislav Horáček</td></tr>
++<tr><td><img src="qrc:/images/flags/hi.png"></td><td>Hindi</td><td><div title="finished:11369 unfinished:3 untranslated:1802" class="bartodo"><div class="bardone" style="width:86px">86.3</div></div></td><td>Harish Kumar Solanki</td></tr>
++<tr><td><img src="qrc:/images/flags/id.png"></td><td>Indonesian</td><td><div title="finished:10755 unfinished:63 untranslated:2356" class="bartodo"><div class="bardone" style="width:81px">81.9</div></div></td><td>Emir Hartato, Muhammad Iqnaul Haq Siregar, Trias Aditya, Januar V. Simarmata, I Made Anombawa</td></tr>
++<tr><td><img src="qrc:/images/flags/lt.png"></td><td>Lithuanian</td><td><div title="finished:10775 unfinished:10 untranslated:2389" class="bartodo"><div class="bardone" style="width:81px">81.8</div></div></td><td>Paulius Litvinas, Tomas Straupis, Kestas M</td></tr>
++<tr><td><img src="qrc:/images/flags/bs.png"></td><td>Bosnian</td><td><div title="finished:10515 unfinished:15 untranslated:2644" class="bartodo"><div class="bardone" style="width:79px">79.9</div></div></td><td>Almir Karabegovic</td></tr>
++<tr><td><img src="qrc:/images/flags/km.png"></td><td>Central Khmer</td><td><div title="finished:9381 unfinished:9 untranslated:3784" class="bartodo"><div class="bardone" style="width:71px">71.2</div></div></td><td>Khoem Sokhem</td></tr>
++<tr><td><img src="qrc:/images/flags/sl.png"></td><td>Slovenian</td><td><div title="finished:9037 unfinished:12 untranslated:4125" class="bartodo"><div class="bardone" style="width:68px">68.6</div></div></td><td>Jože Detečnik, Dejan Gregor, Jaka Kranjc</td></tr>
++<tr><td><img src="qrc:/images/flags/lv.png"></td><td>Latvian</td><td><div title="finished:8902 unfinished:48 untranslated:4224" class="bartodo"><div class="bardone" style="width:67px">67.8</div></div></td><td>Maris Nartiss, Pēteris Brūns</td></tr>
++<tr><td><img src="qrc:/images/flags/ar.png"></td><td>Arabic</td><td><div title="finished:8889 unfinished:31 untranslated:4254" class="bartodo"><div class="bardone" style="width:67px">67.6</div></div></td><td>Ichaouia Amine, Hosham Munier</td></tr>
++<tr><td><img src="qrc:/images/flags/et.png"></td><td>Estonian</td><td><div title="finished:8813 unfinished:32 untranslated:4329" class="bartodo"><div class="bardone" style="width:67px">67.0</div></div></td><td>Veiko Viil</td></tr>
++<tr><td><img src="qrc:/images/flags/hr.png"></td><td>Croatian</td><td><div title="finished:7451 unfinished:15 untranslated:5708" class="bartodo"><div class="bardone" style="width:56px">56.6</div></div></td><td>Zoran Jankovic</td></tr>
++<tr><td><img src="qrc:/images/flags/tr.png"></td><td>Turkish</td><td><div title="finished:6838 unfinished:7 untranslated:6329" class="bartodo"><div class="bardone" style="width:51px">51.9</div></div></td><td>Osman Yalçın YILMAZ, Omur Saygin</td></tr>
++<tr><td><img src="qrc:/images/flags/sk.png"></td><td>Slovak</td><td><div title="finished:5931 unfinished:979 untranslated:6264" class="bartodo"><div class="bardone" style="width:48px">48.7</div></div></td><td>Lubos Balazovic, Jana Kormanikova, Ivan Mincik</td></tr>
++<tr><td><img src="qrc:/images/flags/sr.png"></td><td>Serbian (latin)</td><td><div title="finished:6244 unfinished:39 untranslated:6891" class="bartodo"><div class="bardone" style="width:47px">47.5</div></div></td><td>Goran Ivanković</td></tr>
++<tr><td><img src="qrc:/images/flags/el.png"></td><td>Modern Greek (1453-)</td><td><div title="finished:6186 unfinished:12 untranslated:6976" class="bartodo"><div class="bardone" style="width:47px">47.0</div></div></td><td>Theodoros Vakkas, Ioannis Tsimpiris, Evripidis Argyropoulos, Mike Pegnigiannis, Nikos Ves</td></tr>
++<tr><td><img src="qrc:/images/flags/sr.png"></td><td>Serbian</td><td><div title="finished:6002 unfinished:27 untranslated:7145" class="bartodo"><div class="bardone" style="width:45px">45.7</div></div></td><td>Goran Ivanković</td></tr>
++<tr><td><img src="qrc:/images/flags/ca.png"></td><td>Catalan</td><td><div title="finished:5152 unfinished:24 untranslated:7998" class="bartodo"><div class="bardone" style="width:39px">39.2</div></div></td><td>Albert F, Pau Reguant Ridó, Xavier Roijals</td></tr>
++<tr><td><img src="qrc:/images/flags/th.png"></td><td>Thai</td><td><div title="finished:5071 unfinished:27 untranslated:8076" class="bartodo"><div class="bardone" style="width:38px">38.6</div></div></td><td>Man Chao</td></tr>
++<tr><td><img src="qrc:/images/flags/fa.png"></td><td>Persian</td><td><div title="finished:5037 unfinished:32 untranslated:8105" class="bartodo"><div class="bardone" style="width:38px">38.4</div></div></td><td>Mola Pahnadayan, Masoud Pashotan , Masoud Erfanyan</td></tr>
++<tr><td><img src="qrc:/images/flags/is.png"></td><td>Icelandic</td><td><div title="finished:4917 unfinished:28 untranslated:8229" class="bartodo"><div class="bardone" style="width:37px">37.4</div></div></td><td>Ásta Kristín Óladóttir, Thordur Ivarsson</td></tr>
++<tr><td><img src="qrc:/images/flags/uk.png"></td><td>Ukrainian</td><td><div title="finished:4836 unfinished:21 untranslated:8317" class="bartodo"><div class="bardone" style="width:36px">36.8</div></div></td><td>Alexander Bruy</td></tr>
++<tr><td><img src="qrc:/images/flags/mn.png"></td><td>Mongolian</td><td><div title="finished:4632 unfinished:19 untranslated:8523" class="bartodo"><div class="bardone" style="width:35px">35.2</div></div></td><td>Bayarmaa Enkhtur</td></tr></table>
+--- a/i18n/qgis_de.ts
++++ b/i18n/qgis_de.ts
+@@ -4794,7 +4794,7 @@ Erweiterung wird nicht aktiviert.</trans
+     </message>
+     <message>
+         <source>Merge...</source>
+-        <translation>Abfrage...</translation>
++        <translation>Verschmelzen...</translation>
+     </message>
+     <message>
+         <source>Information...</source>
+@@ -7559,6 +7559,10 @@ im Installationsverzeichnis nicht erlaub
+         <source>Elevation</source>
+         <translation>Geländehöhe</translation>
+     </message>
++    <message>
++        <source>Feature %d is smaller than raster cell size</source>
++        <translation>Objekt %d ist kleiner als die Rasterzellengröße</translation>
++    </message>
+ </context>
+ <context>
+     <name>ImportIntoPostGIS</name>
+@@ -9447,6 +9451,10 @@ Funktioniert auf allen ändernbaren Laye
+         <source>seconds</source>
+         <translation>Sekunden</translation>
+     </message>
++    <message>
++        <source>Record parsing error</source>
++        <translation>Datensatzfehler</translation>
++    </message>
+ </context>
+ <context>
+     <name>ModelerAlgorithm</name>
+@@ -33237,22 +33245,6 @@ Die könnte auf ein Netzwerkproblem oder
+         <source>Segments [%1]</source>
+         <translation>Segmente [%1]</translation>
+     </message>
+-    <message>
+-        <source>Meters</source>
+-        <translation>Meter</translation>
+-    </message>
+-    <message>
+-        <source>Feet</source>
+-        <translation>Fuß</translation>
+-    </message>
+-    <message>
+-        <source>Degrees</source>
+-        <translation>Grad</translation>
+-    </message>
+-    <message>
+-        <source>Nautical Miles</source>
+-        <translation>Seemeilen</translation>
+-    </message>
+ </context>
+ <context>
+     <name>QgsMeasureTool</name>
diff --git a/debian/patches/0001-postgres-provider-restore-behaviour-to-keep-3d-wkb-r.patch b/debian/patches/0001-postgres-provider-restore-behaviour-to-keep-3d-wkb-r.patch
new file mode 100644
index 0000000..ae3ca11
--- /dev/null
+++ b/debian/patches/0001-postgres-provider-restore-behaviour-to-keep-3d-wkb-r.patch
@@ -0,0 +1,72 @@
+From c7234cee23aae55d1bacc4f59b9450c96efdaabd Mon Sep 17 00:00:00 2001
+From: "Juergen E. Fischer" <jef at norbit.de>
+Date: Tue, 3 Mar 2015 20:08:16 +0100
+Subject: =?UTF-8?q?postgres=20provider:=20restore=20behaviour=20to=20keep=20?=
+ =?UTF-8?q?3d=20wkb=20(refs=20#9651,=0Afollowup=20bd311c8)?=
+Origin: https://github.com/qgis/QGIS/commit/c7234cee23aae55d1bacc4f59b9450c96efdaabd
+Bug: http://hub.qgis.org/issues/9651
+
+---
+ src/providers/postgres/qgspostgresconn.cpp |   20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+--- a/src/providers/postgres/qgspostgresconn.cpp
++++ b/src/providers/postgres/qgspostgresconn.cpp
+@@ -454,13 +454,15 @@ bool QgsPostgresConn::getTableInfo( bool
+         srid = INT_MIN;
+       }
+ 
+-      /*QgsDebugMsg( QString( "%1 : %2.%3.%4: %5 %6 %7 %8" )
++#if 0
++      QgsDebugMsg( QString( "%1 : %2.%3.%4: %5 %6 %7 %8" )
+                    .arg( gtableName )
+                    .arg( schemaName ).arg( tableName ).arg( column )
+                    .arg( type )
+                    .arg( srid )
+                    .arg( relkind )
+-                   .arg( dim ) );*/
++                   .arg( dim ) );
++#endif
+ 
+       layerProperty.schemaName = schemaName;
+       layerProperty.tableName = tableName;
+@@ -470,11 +472,11 @@ bool QgsPostgresConn::getTableInfo( bool
+       layerProperty.srids = QList<int>() << srid;
+       layerProperty.sql = "";
+       /*
+-       * NOTE: force2d may get a false negative value
++       * force2d may get a false negative value
+        * (dim == 2 but is not really constrained)
+        * http://trac.osgeo.org/postgis/ticket/3068
+        */
+-      layerProperty.force2d = dim > 2;
++      layerProperty.force2d = dim > 3;
+       addColumnInfo( layerProperty, schemaName, tableName, isView );
+ 
+       if ( isView && layerProperty.pkCols.empty() )
+@@ -1304,10 +1306,9 @@ void QgsPostgresConn::retrieveLayerTypes
+       query += QString::number( srid );
+     }
+ 
+-    if ( ! layerProperty.force2d )
++    if ( !layerProperty.force2d )
+     {
+-      query += ",";
+-      query += QString( "%1(%2%3)" )
++      query += QString( ",%1(%2%3)" )
+                .arg( majorVersion() < 2 ? "ndims" : "st_ndims" )
+                .arg( quotedIdentifier( layerProperty.geometryColName ) )
+                .arg( layerProperty.geometryColType == sctGeography ? "::geometry" : "" );
+@@ -1326,10 +1327,9 @@ void QgsPostgresConn::retrieveLayerTypes
+         QString type = gresult.PQgetvalue( i, 0 );
+         QString srid = gresult.PQgetvalue( i, 1 );
+ 
+-        if ( ! layerProperty.force2d )
++        if ( !layerProperty.force2d && gresult.PQgetvalue( i, 2 ).toInt() > 3 )
+         {
+-          QString ndims = gresult.PQgetvalue( i, 2 );
+-          if ( ndims.toInt() > 2 ) layerProperty.force2d = true;
++          layerProperty.force2d = true;
+         }
+ 
+         if ( type.isEmpty() )
diff --git a/debian/patches/0001-postgres-provider-use-min-max-before-casting-followu.patch b/debian/patches/0001-postgres-provider-use-min-max-before-casting-followu.patch
new file mode 100644
index 0000000..1c0a55a
--- /dev/null
+++ b/debian/patches/0001-postgres-provider-use-min-max-before-casting-followu.patch
@@ -0,0 +1,95 @@
+From 377c1dba6222e5a4925f9309c4f1b1c9e70c6f48 Mon Sep 17 00:00:00 2001
+From: "Juergen E. Fischer" <jef at norbit.de>
+Date: Wed, 4 Mar 2015 08:29:10 +0100
+Subject: postgres provider: use min()/max() before casting (followup bf56457;
+ fixes #12306)
+Origin: https://github.com/qgis/QGIS/commit/377c1dba6222e5a4925f9309c4f1b1c9e70c6f48
+Bug: http://hub.qgis.org/issues/12306
+
+(cherry picked from commit 7ce195ebec7330f101bb6922055a079958bfd58a)
+---
+ src/providers/postgres/qgspostgresconn.cpp     |   15 ++++++++-------
+ src/providers/postgres/qgspostgresconn.h       |    2 +-
+ src/providers/postgres/qgspostgresprovider.cpp |    8 ++++----
+ 3 files changed, 13 insertions(+), 12 deletions(-)
+
+--- a/src/providers/postgres/qgspostgresconn.cpp
++++ b/src/providers/postgres/qgspostgresconn.cpp
+@@ -1170,34 +1170,35 @@ qint64 QgsPostgresConn::getBinaryInt( Qg
+   return oid;
+ }
+ 
+-QString QgsPostgresConn::fieldExpression( const QgsField &fld )
++QString QgsPostgresConn::fieldExpression( const QgsField &fld, QString expr )
+ {
+   const QString &type = fld.typeName();
++  expr = expr.arg( quotedIdentifier( fld.name() ) );
+   if ( type == "money" )
+   {
+-    return QString( "cash_out(%1)" ).arg( quotedIdentifier( fld.name() ) );
++    return QString( "cash_out(%1)" ).arg( expr );
+   }
+   else if ( type.startsWith( "_" ) )
+   {
+-    return QString( "array_out(%1)" ).arg( quotedIdentifier( fld.name() ) );
++    return QString( "array_out(%1)" ).arg( expr );
+   }
+   else if ( type == "bool" )
+   {
+-    return QString( "boolout(%1)" ).arg( quotedIdentifier( fld.name() ) );
++    return QString( "boolout(%1)" ).arg( expr );
+   }
+   else if ( type == "geometry" )
+   {
+     return QString( "%1(%2)" )
+            .arg( majorVersion() < 2 ? "asewkt" : "st_asewkt" )
+-           .arg( quotedIdentifier( fld.name() ) );
++           .arg( expr );
+   }
+   else if ( type == "geography" )
+   {
+-    return QString( "st_astext(%1)" ).arg( quotedIdentifier( fld.name() ) );
++    return QString( "st_astext(%1)" ).arg( expr );
+   }
+   else
+   {
+-    return quotedIdentifier( fld.name() ) + "::text";
++    return expr + "::text";
+   }
+ }
+ 
+--- a/src/providers/postgres/qgspostgresconn.h
++++ b/src/providers/postgres/qgspostgresconn.h
+@@ -285,7 +285,7 @@ class QgsPostgresConn : public QObject
+ 
+     qint64 getBinaryInt( QgsPostgresResult &queryResult, int row, int col );
+ 
+-    QString fieldExpression( const QgsField &fld );
++    QString fieldExpression( const QgsField &fld, QString expr = "%1" );
+ 
+     QString connInfo() const { return mConnInfo; }
+ 
+--- a/src/providers/postgres/qgspostgresprovider.cpp
++++ b/src/providers/postgres/qgspostgresprovider.cpp
+@@ -1234,8 +1234,8 @@ QVariant QgsPostgresProvider::minimumVal
+   {
+     // get the field name
+     const QgsField &fld = field( index );
+-    QString sql = QString( "SELECT min(%1) FROM %2" )
+-                  .arg( connectionRO()->fieldExpression( fld ) )
++    QString sql = QString( "SELECT %1 FROM %2" )
++                  .arg( connectionRO()->fieldExpression( fld, "min(%1)" ) )
+                   .arg( mQuery );
+ 
+     if ( !mSqlWhereClause.isEmpty() )
+@@ -1407,8 +1407,8 @@ QVariant QgsPostgresProvider::maximumVal
+   {
+     // get the field name
+     const QgsField &fld = field( index );
+-    QString sql = QString( "SELECT max(%1) FROM %2" )
+-                  .arg( connectionRO()->fieldExpression( fld ) )
++    QString sql = QString( "SELECT %1 FROM %2" )
++                  .arg( connectionRO()->fieldExpression( fld, "max(%1)" ) )
+                   .arg( mQuery );
+ 
+     if ( !mSqlWhereClause.isEmpty() )
diff --git a/debian/patches/0001-processing-fix-error-in-MultipleFileInput-selector-w.patch b/debian/patches/0001-processing-fix-error-in-MultipleFileInput-selector-w.patch
new file mode 100644
index 0000000..f94955a
--- /dev/null
+++ b/debian/patches/0001-processing-fix-error-in-MultipleFileInput-selector-w.patch
@@ -0,0 +1,23 @@
+From 60b5d4245b449e64d74cf1cce9ef7b24b42985b9 Mon Sep 17 00:00:00 2001
+From: Alexander Bruy <alexander.bruy at gmail.com>
+Date: Wed, 4 Mar 2015 13:01:32 +0200
+Subject: =?UTF-8?q?[processing]=20fix=20error=20in=20MultipleFileInput=20sel?=
+ =?UTF-8?q?ector=20when=20user=20press=0ACancel=20button?=
+Origin: https://github.com/qgis/QGIS/commit/60b5d4245b449e64d74cf1cce9ef7b24b42985b9
+
+---
+ python/plugins/processing/gui/MultipleFileInputDialog.py |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/python/plugins/processing/gui/MultipleFileInputDialog.py
++++ b/python/plugins/processing/gui/MultipleFileInputDialog.py
+@@ -91,6 +91,9 @@ class MultipleFileInputDialog(QDialog, U
+         files = QFileDialog.getOpenFileNames(self,
+             self.tr('Select file(s)'), path, self.tr('All files (*.*)'))
+ 
++        if len(files) == 0:
++            return
++
+         model = self.lstLayers.model()
+         for filePath in files:
+             item = QStandardItem(filePath)
diff --git a/debian/patches/0001-translation-string-fix.patch b/debian/patches/0001-translation-string-fix.patch
new file mode 100644
index 0000000..599b6ac
--- /dev/null
+++ b/debian/patches/0001-translation-string-fix.patch
@@ -0,0 +1,21 @@
+From fbabc250f53000fd81ab09e678959af347661cd1 Mon Sep 17 00:00:00 2001
+From: "Juergen E. Fischer" <jef at norbit.de>
+Date: Sun, 1 Mar 2015 14:41:44 +0100
+Subject: translation string fix
+Origin: https://github.com/qgis/QGIS/commit/fbabc250f53000fd81ab09e678959af347661cd1
+
+---
+ python/plugins/processing/algs/qgis/HypsometricCurves.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/python/plugins/processing/algs/qgis/HypsometricCurves.py
++++ b/python/plugins/processing/algs/qgis/HypsometricCurves.py
+@@ -134,7 +134,7 @@ class HypsometricCurves(GeoAlgorithm):
+ 
+             if srcOffset[2] == 0 or srcOffset[3] == 0:
+                 progress.setInfo(
+-                    self.tr('Feature %d does is smaller than raster '
++                    self.tr('Feature %d is smaller than raster '
+                             'cell size' % f.id()))
+                 continue
+ 
diff --git a/debian/patches/series b/debian/patches/series
index 23b8638..32b5565 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -7,3 +7,16 @@ exclude-elvensword-resources.patch
 0001-fix-arm-build.patch
 0001-processing-correctly-handle-tiny-polygons-smaller-th.patch
 0001-backport-ada01603cb7b10786436aa0ed2361743b52ce48f.patch
+0001-composer-attribute-table-fix-changing-header-font-fi.patch
+0001-Fix-handling-of-warped-VRT-refs-12264.patch
+0001-Detect-number-of-dimensions-for-tables-with-unconstr.patch
+0001-postgres-provider-use-min-max-before-casting-followu.patch
+0001-fix-SAGA-2.1.3-Kernel-Density-Estimation.patch
+0001-Add-comment-about-possible-pending-bug-in-force2d-ne.patch
+0001-Use-ST_Force2D-from-PostGIS-2.1.0-up.patch
+0001-Only-scan-for-dimension-if-it-is-not-already-known-a.patch
+0001-postgres-provider-restore-behaviour-to-keep-3d-wkb-r.patch
+0001-processing-fix-error-in-MultipleFileInput-selector-w.patch
+0001-translation-string-fix.patch
+0001-german-translation-fix-fixes-12231.patch
+0001-expression-builder-widget-save-scripts-in-the-same-m.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/qgis.git



More information about the Pkg-grass-devel mailing list