From da11d83b1a00a0b79be58160c1216f92d6f555ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 8 Mar 2018 07:50:38 +0100
Subject: [PATCH] Write reported non-translated strings to a SQLite db

---
 lib/modulekit/lang |  2 +-
 src/language.php   | 26 ++++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/lib/modulekit/lang b/lib/modulekit/lang
index 80118dbc..832b12cc 160000
--- a/lib/modulekit/lang
+++ b/lib/modulekit/lang
@@ -1 +1 @@
-Subproject commit 80118dbcaafa9ab95298be95548126071efc069f
+Subproject commit 832b12cc0d0ac674339e1ed722d2800ab0d8885b
diff --git a/src/language.php b/src/language.php
index 35852bf7..da93d2e7 100644
--- a/src/language.php
+++ b/src/language.php
@@ -4,3 +4,29 @@ register_hook('options_save', function ($options) {
     $_SESSION['ui_lang'] = $options['ui_lang'];
   }
 });
+
+register_hook('lang_report_non_translated', function ($strings, $ui_lang) {
+  if (!is_writeable('data')) {
+    return;
+  }
+
+  $db = new PDO('sqlite:data/lang.db');
+
+  $res = $db->query('select 1 from lang_non_translated');
+  if (!$res) {
+    $query = <<<EOT
+create table lang_non_translated (
+  str           varchar(255)    not null,
+  lang          varchar(32)     not null,
+  count         integer         not null default 0,
+  primary key(str, lang)
+);
+EOT;
+    $db->query($query);
+  }
+
+  foreach ($strings as $k => $count) {
+    $query = 'insert or replace into lang_non_translated values (' . $db->quote($k) . ', ' . $db->quote($ui_lang) . ', coalesce((select count + ' . $db->quote($count) . ' from lang_non_translated where str=' . $db->quote($k) . ' and lang=' . $db->quote($ui_lang) . '), ' . $db->quote($count) . '))';
+    $db->query($query);
+  }
+});