changeset 1509:5853d9bfd97b

Merge
author Hosted Weblate <hosted@weblate.org>
date Wed, 05 Dec 2018 14:13:28 +0100
parents f352accc8646 (current diff) 0e47ed779c66 (diff)
children 56734ea87f9e c234317c99be
files client/src/locale/de_AT/LC_MESSAGES/app.po pkg/imports/kinds.go
diffstat 24 files changed, 2320 insertions(+), 119 deletions(-) [+]
line wrap: on
line diff
--- a/client/Makefile	Wed Dec 05 10:31:41 2018 +0000
+++ b/client/Makefile	Wed Dec 05 14:13:28 2018 +0100
@@ -20,7 +20,7 @@
 OUTPUT_DIR = src
 
 # Available locales for the app.
-LOCALES = de_AT en_GB sk_SK
+LOCALES = de_AT en_GB sk_SK hu_HU hr_HR bg_BG ro_RO
 
 # Name of the generated .po files for each available locale.
 LOCALE_FILES ?= $(patsubst %,$(OUTPUT_DIR)/locale/%/LC_MESSAGES/app.po,$(LOCALES))
--- a/client/src/assets/application.scss	Wed Dec 05 10:31:41 2018 +0000
+++ b/client/src/assets/application.scss	Wed Dec 05 14:13:28 2018 +0100
@@ -19,7 +19,7 @@
 $icon-width: 2rem;
 $large-offset: 2rem;
 $offset: 1rem;
-$sidebar-width: 15rem;
+$sidebar-width: 20rem;
 $slight-transparent: 0.96;
 $small-offset: 0.5rem;
 $smaller: 0.9rem;
--- a/client/src/components/Sidebar.vue	Wed Dec 05 10:31:41 2018 +0000
+++ b/client/src/components/Sidebar.vue	Wed Dec 05 14:13:28 2018 +0100
@@ -9,72 +9,72 @@
     <div class="menu text-nowrap text-left">
       <router-link to="/">
         <font-awesome-icon
+          fixed-width
           icon="map-marked-alt"
-          fixed-width
         ></font-awesome-icon>
-        <span v-translate class="fix-trans-space">Map</span>
+        <span class="fix-trans-space" v-translate>Map</span>
       </router-link>
       <a
-        href="#"
+        :class="['secondary', { active: isActive('bottlenecks') }]"
         @click="toggleContextBox('bottlenecks')"
-        :class="['secondary', { active: isActive('bottlenecks') }]"
+        href="#"
       >
-        <font-awesome-icon icon="ship" fixed-width></font-awesome-icon>
-        <span v-translate class="fix-trans-space">Bottlenecks</span>
+        <font-awesome-icon fixed-width icon="ship"></font-awesome-icon>
+        <span class="fix-trans-space" v-translate>Bottlenecks</span>
       </a>
       <div v-if="isWaterwayAdmin">
         <a
-          href="#"
+          :class="['secondary', { active: isActive('imports') }]"
           @click="toggleContextBox('imports')"
-          :class="['secondary', { active: isActive('imports') }]"
+          href="#"
         >
-          <font-awesome-icon icon="upload" fixed-width></font-awesome-icon>
-          <span v-translate class="fix-trans-space"
+          <font-awesome-icon fixed-width icon="upload"></font-awesome-icon>
+          <span class="fix-trans-space" v-translate
             >Import soundingresults</span
           >
         </a>
         <a
-          href="#"
+          :class="['secondary', { active: isActive('staging') }]"
           @click="toggleContextBox('staging')"
-          :class="['secondary', { active: isActive('staging') }]"
+          href="#"
         >
           <font-awesome-icon
+            fixed-width
             icon="clipboard-check"
-            fixed-width
           ></font-awesome-icon>
-          <span v-translate class="fix-trans-space">Staging area</span>
+          <span class="fix-trans-space" v-translate>Staging area</span>
         </a>
         <small class="text-muted pl-3">
           <translate>Systemadministration</translate>
         </small>
         <hr class="m-0" />
         <router-link to="usermanagement">
-          <font-awesome-icon icon="users-cog" fixed-width></font-awesome-icon>
-          <span v-translate class="fix-trans-space">Users</span>
+          <font-awesome-icon fixed-width icon="users-cog"></font-awesome-icon>
+          <span class="fix-trans-space" v-translate>Users</span>
         </router-link>
       </div>
       <div v-if="isSysAdmin">
         <router-link to="systemconfiguration">
-          <font-awesome-icon icon="wrench" fixed-width></font-awesome-icon>
-          <span v-translate class="fix-trans-space">Configuration</span>
+          <font-awesome-icon fixed-width icon="wrench"></font-awesome-icon>
+          <span class="fix-trans-space" v-translate>Configuration</span>
         </router-link>
         <router-link to="logs">
-          <font-awesome-icon icon="book" fixed-width></font-awesome-icon>
-          <span v-translate class="fix-trans-space">Logs</span>
+          <font-awesome-icon fixed-width icon="book"></font-awesome-icon>
+          <span class="fix-trans-space" v-translate>Logs</span>
         </router-link>
         <router-link to="importqueue">
-          <font-awesome-icon icon="tasks" fixed-width></font-awesome-icon>
-          <span v-translate class="fix-trans-space">Importqueue</span>
+          <font-awesome-icon fixed-width icon="tasks"></font-awesome-icon>
+          <span class="fix-trans-space" v-translate>Importqueue</span>
         </router-link>
-        <router-link v-if="this.$options.IMPORTSCHEDULE" to="importschedule">
-          <font-awesome-icon icon="clock" fixed-width></font-awesome-icon>
+        <router-link to="importschedule" v-if="this.$options.IMPORTSCHEDULE">
+          <font-awesome-icon fixed-width icon="clock"></font-awesome-icon>
           <translate class="fix-trans-space">Importschedule</translate>
         </router-link>
       </div>
       <hr class="m-0" />
-      <a href="#" @click="logoff">
-        <font-awesome-icon icon="power-off" fixed-width></font-awesome-icon>
-        <span v-translate class="fix-trans-space">Logout</span> {{ user }}
+      <a @click="logoff" href="#">
+        <font-awesome-icon fixed-width icon="power-off"></font-awesome-icon>
+        <span class="fix-trans-space" v-translate>Logout</span> {{ user }}
       </a>
     </div>
   </div>
@@ -96,6 +96,7 @@
  * Markus Kottländer <markus.kottlaender@intevation.de>
  */
 import { mapGetters, mapState } from "vuex";
+import app from "../main";
 
 export default {
   name: "sidebar",
@@ -122,6 +123,7 @@
   IMPORTSCHEDULE: process.env.VUE_APP_FEATURE_IMPORTSCHEDULE,
   methods: {
     logoff() {
+      app.$snotify.clear();
       this.$store.commit("reset");
       this.$store.commit("user/clearAuth");
       this.$router.push("/login");
--- a/client/src/components/admin/Importqueue.vue	Wed Dec 05 10:31:41 2018 +0000
+++ b/client/src/components/admin/Importqueue.vue	Wed Dec 05 14:13:28 2018 +0100
@@ -54,6 +54,7 @@
                   <th><translate>Enqueued</translate></th>
                   <th><translate>Kind</translate></th>
                   <th><translate>User</translate></th>
+                  <th><translate>Signer</translate></th>
                   <th><translate>State</translate></th>
                 </tr>
               </thead>
@@ -62,6 +63,7 @@
                   <td>{{ job.enqueued }}</td>
                   <td>{{ job.kind }}</td>
                   <td>{{ job.user }}</td>
+                  <td>{{ job.signer }}</td>
                   <td>{{ job.state }}</td>
                 </tr>
               </tbody>
@@ -242,7 +244,7 @@
 }
 
 .importqueuecard {
-  width: 80vw;
+  width: 75vw;
   min-height: 20rem;
 }
 
@@ -276,6 +278,6 @@
 .searchgroup {
   position: absolute;
   left: 0;
-  width: 50%;
+  width: 45%;
 }
 </style>
--- a/client/src/components/admin/Logs.vue	Wed Dec 05 10:31:41 2018 +0000
+++ b/client/src/components/admin/Logs.vue	Wed Dec 05 14:13:28 2018 +0100
@@ -6,7 +6,7 @@
         <h6
           class="mb-0 py-2 px-3 border-bottom d-flex text-info align-items-center"
         >
-          <font-awesome-icon icon="book" class="mr-2"></font-awesome-icon>
+          <font-awesome-icon class="mr-2" icon="book"></font-awesome-icon>
           <translate class="headline">Logs</translate>
         </h6>
         <div class="logoutput text-left bg-white">
@@ -19,8 +19,8 @@
             <ul class="nav nav-pills">
               <li class="nav-item">
                 <a
+                  :class="accesslogStyle"
                   @click="fetch('system/log/apache2/access.log', 'accesslog')"
-                  :class="accesslogStyle"
                   href="#"
                 >
                   <translate>Accesslog</translate>
@@ -28,8 +28,8 @@
               </li>
               <li class="nav-item">
                 <a
+                  :class="errorlogStyle"
                   @click="fetch('system/log/apache2/error.log', 'errorlog')"
-                  :class="errorlogStyle"
                   href="#"
                 >
                   <translate>Errorlog</translate>
@@ -43,8 +43,8 @@
             </div>
             <div class="refresh">
               <button
+                @click="fetch(currentFile, currentLog)"
                 class="btn btn-dark"
-                @click="fetch(currentFile, currentLog)"
               >
                 <translate>Refresh</translate>
               </button>
@@ -107,7 +107,7 @@
 .statusline {
   position: absolute;
   right: 0;
-  margin-right: 7rem;
+  margin-right: 9rem;
   bottom: -0.5rem;
 }
 
--- a/client/src/components/map/Identify.vue	Wed Dec 05 10:31:41 2018 +0000
+++ b/client/src/components/map/Identify.vue	Wed Dec 05 14:13:28 2018 +0100
@@ -35,8 +35,7 @@
                     /[.][^.]*$/,
                     ""
                   ) /* cut away everything from the last . to the end */
-              }}:</b
-            >
+              }}:</b>
             <small
               v-for="(value, key) in prepareProperties(feature)"
               :key="key"
@@ -67,14 +66,10 @@
           <a href="https://www.openstreetmap.org/copyright">%{ name }</a>
           contributors.
         </span>
-        <p v-translate="{geoLicense: 'CC-BY-4.0',data: 'data sources' }">
-          Geonames data source is licensed under
-          <a
-            href="https://creativecommons.org/licenses/by/4.0/"
-          >%{ geoLicense }</a> without warranty, see docs for details
-          <a
-            href="http://www.geonames.org/data-sources.html"
-          >%{ data }</a>.
+        <p v-translate="{geoLicense: 'CC-BY-4.0'}">
+           Uses
+          <a href="https://download.geonames.org/export/dump/readme.txt"
+             >GeoNames</a> under %{ geoLicense }.
         </p>
       </div>
     </div>
--- a/client/src/components/map/contextbox/Staging.vue	Wed Dec 05 10:31:41 2018 +0000
+++ b/client/src/components/map/contextbox/Staging.vue	Wed Dec 05 14:13:28 2018 +0100
@@ -1,13 +1,13 @@
 <template>
-  <div class="w-90">
+  <div class="w-90 stagingcard">
     <h6 class="mb-0 py-2 px-3 border-bottom d-flex align-items-center">
       <font-awesome-icon
+        class="mr-2"
         icon="clipboard-check"
-        class="mr-2"
       ></font-awesome-icon>
       <translate>Staging Area</translate>
     </h6>
-    <table class="table mb-0">
+    <table class="table">
       <thead>
         <tr>
           <th><translate>Name</translate></th>
@@ -20,7 +20,7 @@
         </tr>
       </thead>
       <tbody v-if="filteredData.length">
-        <tr v-for="data in filteredData" :key="data.id">
+        <tr :key="data.id" v-for="data in filteredData">
           <td>
             <a @click="zoomTo(data.id)" href="#">{{
               data.summary.bottleneck
@@ -32,26 +32,26 @@
           <td>{{ data.user }}</td>
           <td>
             <button
-              @click="toggleApproval(data.id, $options.STATES.APPROVED)"
               :class="{
                 btn: true,
                 'btn-sm': true,
                 'btn-outline-success': needsApproval(data) || isRejected(data),
                 'btn-success': isApproved(data)
               }"
+              @click="toggleApproval(data.id, $options.STATES.APPROVED)"
             >
               <font-awesome-icon icon="check"></font-awesome-icon>
             </button>
           </td>
           <td>
             <button
-              @click="toggleApproval(data.id, $options.STATES.REJECTED)"
               :class="{
                 btn: true,
                 'btn-sm': true,
                 'btn-outline-danger': needsApproval(data) || isApproved(data),
                 'btn-danger': isRejected(data)
               }"
+              @click="toggleApproval(data.id, $options.STATES.REJECTED)"
             >
               <font-awesome-icon icon="times"></font-awesome-icon>
             </button>
@@ -67,10 +67,13 @@
       </tbody>
     </table>
     <div class="p-3" v-if="filteredData.length">
-      <button @click="confirmReview" class="btn btn-info">
+      <button @click="confirmReview" class="confirm-button btn btn-info">
         <translate>Confirm</translate>
       </button>
     </div>
+    <div class="p-3">
+      <button @click="loadData" class="refresh btn btn-dark">Refresh</button>
+    </div>
   </div>
 </template>
 
@@ -199,6 +202,11 @@
 </script>
 
 <style lang="scss" scoped>
+.refresh {
+  position: absolute;
+  left: $offset;
+  bottom: $offset;
+}
 .table th,
 td {
   font-size: 0.9rem;
@@ -207,4 +215,15 @@
   text-align: left;
   padding: 0.5rem !important;
 }
+
+.stagingcard {
+  position: relative;
+  min-height: 150px;
+}
+
+.confirm-button {
+  position: absolute;
+  right: $offset;
+  bottom: $offset;
+}
 </style>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/client/src/locale/bg_BG/LC_MESSAGES/app.po	Wed Dec 05 14:13:28 2018 +0100
@@ -0,0 +1,522 @@
+# Bulgarian translations for gemmajs package.
+# Copyright (C) 2018 THE gemmajs'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the gemmajs package.
+# Automatically generated, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gemmajs 1.99.0-dev\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-12-05 12:25+0100\n"
+"PO-Revision-Date: 2018-12-05 12:23+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: bg_BG\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/components/admin/Importqueue.vue:46
+msgid "Accepted"
+msgstr ""
+
+#: src/components/admin/Logs.vue:25
+msgid "Accesslog"
+msgstr ""
+
+#: src/components/admin/usermanagement/Usermanagement.vue:106
+msgid "Add User"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:35
+msgid "Author"
+msgstr ""
+
+#: src/components/Login.vue:70
+msgid "back to login"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:134
+#: src/components/admin/Systemconfiguration.vue:133
+#: src/components/admin/Systemconfiguration.vue:148
+#: src/components/admin/Systemconfiguration.vue:167
+#: src/components/admin/Systemconfiguration.vue:184
+#: src/components/admin/usermanagement/Userdetail.vue:296
+#: src/components/admin/usermanagement/Userdetail.vue:368
+#: src/components/admin/usermanagement/Usermanagement.vue:300
+#: src/components/admin/usermanagement/Usermanagement.vue:308
+#: src/components/admin/usermanagement/Usermanagement.vue:334
+#: src/components/map/Search.vue:257
+#: src/components/map/contextbox/Bottlenecks.vue:252
+#: src/components/map/contextbox/ImportSoundingresults.vue:205
+#: src/components/map/contextbox/ImportSoundingresults.vue:244
+#: src/components/map/contextbox/ImportSoundingresults.vue:275
+msgid "Backend Error"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:11
+msgid "Bottleneck"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:19
+msgid "Bottleneck Areas fill-color"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:13
+msgid "Bottleneck Areas stroke-color"
+msgstr ""
+
+#: src/components/Sidebar.vue:22
+#: src/components/map/contextbox/Bottlenecks.vue:4
+msgid "Bottlenecks"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:121
+msgid "Cancel Upload"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:30
+msgid "Chainage"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:167
+#: src/components/map/contextbox/ImportSoundingresults.vue:181
+msgid "choose .zip- file"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:18
+msgid "Chose format:"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:64
+msgid "Compare with"
+msgstr ""
+
+#: src/components/Sidebar.vue:58
+msgid "Configuration"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:316
+#: src/components/map/contextbox/Staging.vue:70
+msgid "Confirm"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:374
+msgid "Coordinates copied to clipboard!"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:34
+msgid "Country"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:67
+#: src/components/map/contextbox/Staging.vue:14
+msgid "Date"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:47
+msgid "Depthreference"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:32
+msgid "Download"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:113
+msgid "Download Meta.json"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:37
+msgid "Email"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:60
+msgid "Email address"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:53
+msgid "Enqueued"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:123
+msgid "Enter coordinates manually"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:185
+msgid "Enter label for cross profile"
+msgstr ""
+
+#: src/components/Login.vue:157
+msgid "Enter passphrase"
+msgstr ""
+
+#: src/components/Login.vue:160
+msgid "Enter username"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:377
+msgid "Error while saving user"
+msgstr ""
+
+#: src/components/admin/Logs.vue:34
+msgid "Errorlog"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:37
+msgid "Failed"
+msgstr ""
+
+#: src/components/Login.vue:76
+msgid "Forgot password"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:10 src/components/map/Pdftool.vue:49
+msgid "Generate PDF"
+msgstr ""
+
+#: src/components/map/Identify.vue:10
+msgid "Identified"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:33
+#: src/components/map/contextbox/ImportSoundingresults.vue:267
+msgid "Import"
+msgstr ""
+
+#: src/components/Sidebar.vue:31
+msgid "Import soundingresults"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:4
+msgid "Import Soundingresults"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:15
+msgid "Imported"
+msgstr ""
+
+#: src/components/Sidebar.vue:66 src/components/admin/Importqueue.vue:9
+msgid "Importqueue"
+msgstr ""
+
+#: src/components/Sidebar.vue:70
+#: src/components/admin/importschedule/Importschedule.vue:9
+msgid "Importschedule"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:345
+msgid "invalid email"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:408
+msgid "Invalid input"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:54
+msgid "Kind"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:20
+msgid "landscape"
+msgstr ""
+
+#: src/components/admin/Logs.vue:41
+msgid "Last refresh:"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:19
+msgid "Latest"
+msgstr ""
+
+#: src/components/map/layers/Layers.vue:10
+msgid "Layers"
+msgstr ""
+
+#: src/components/Login.vue:58
+msgid "Login"
+msgstr ""
+
+#: src/components/Login.vue:151
+msgid "Login failed"
+msgstr ""
+
+#: src/components/Sidebar.vue:76
+msgid "Logout"
+msgstr ""
+
+#: src/components/Sidebar.vue:62 src/components/admin/Logs.vue:9
+msgid "Logs"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:141
+msgid "Mail was sent"
+msgstr ""
+
+#: src/components/Sidebar.vue:14
+msgid "Map"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:20
+msgid "Measurement"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:9
+#: src/components/map/contextbox/Staging.vue:12
+msgid "Name"
+msgstr ""
+
+#: src/components/admin/importschedule/Importscheduledetail.vue:6
+msgid "New import"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:72
+msgid "New Import"
+msgstr ""
+
+#: src/components/map/Identify.vue:50
+msgid "No features identified."
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:116
+#: src/components/map/contextbox/Staging.vue:63
+msgid "No results."
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:66
+msgid "No schedules"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:41
+msgid "Open in new window"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:229
+msgid "password"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:227
+msgid "Password"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:230
+msgid "password again"
+msgstr ""
+
+#: src/components/Login.vue:153
+msgid "Password reset requested!"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:338
+#: src/components/admin/usermanagement/Userdetail.vue:339
+msgid "Password should at least be 8 char long including 1 digit and 1 special char like $"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:334
+msgid "Passwords do not match!"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:40
+msgid "Pending"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:323
+msgid "Please choose a country"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:328
+msgid "Please choose a role"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:79
+msgid "Please enter a date"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:39
+msgid "Please enter a projection"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:62
+msgid "Please enter a reference"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:409
+#: src/components/map/fairway/Profiles.vue:410
+msgid "Please enter correct coordinates in the format: Lat,Lon,Lat,Lon"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:22
+msgid "Please select a bottleneck"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:41
+#: src/components/admin/usermanagement/Userdetail.vue:86
+msgid "Please select one"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:21
+msgid "portrait"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:448
+msgid "Profile deleted!"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:434
+msgid "Profile saved!"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:10
+msgid "Profiles"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:28
+msgid "Projection"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:70 src/components/admin/Logs.vue:48
+msgid "Refresh"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:43
+msgid "Rejected"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:228
+msgid "Repeat Password"
+msgstr ""
+
+#: src/components/Login.vue:66
+msgid "Request password reset!"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:79
+msgid "Role"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:82
+msgid "Saved cross profiles"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:36
+msgid "Schedule"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:32
+msgid "Select Bottleneck"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:25
+msgid "Send"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:139
+msgid "Send testmail"
+msgstr ""
+
+#: src/components/map/Identify.vue:63
+msgid ""
+"Some data ©\n"
+"        <a href=\"https://www.openstreetmap.org/copyright\">%{ name }</a>\n"
+"        contributors."
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:45
+msgid "Sounding Result"
+msgstr ""
+
+#: src/components/map/Identify.vue:60
+msgid "source-code"
+msgstr ""
+
+#: src/components/Sidebar.vue:44
+msgid "Staging area"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:7
+msgid "Staging Area"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:142
+msgid "Start"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:268
+msgid "Starting import for "
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:56
+msgid "State"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:130
+msgid "Submit"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:373
+msgid "Success"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:34
+msgid "Successful"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:89
+msgid "Sysadmin"
+msgstr ""
+
+#: src/components/Sidebar.vue:47
+msgid "Systemadministration"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:8
+msgid "Systemconfiguration"
+msgstr ""
+
+#: src/components/map/Identify.vue:54
+msgid ""
+"This app uses <i>gemma</i>, which is Free Software under <br/>\n"
+"        %{ license } without warranty, see docs for details."
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:34
+#: src/components/map/contextbox/Staging.vue:13
+msgid "Type"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:313
+msgid "Upload"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:55
+msgid "User"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:15
+#: src/components/map/contextbox/Staging.vue:16
+msgid "Username"
+msgstr ""
+
+#: src/components/Sidebar.vue:52
+#: src/components/admin/usermanagement/Usermanagement.vue:14
+msgid "Users"
+msgstr ""
+
+#: src/components/map/Identify.vue:68
+msgid ""
+"Uses\n"
+"        <a href=\"https://download.geonames.org/export/dump/readme.txt\">GeoNames</a> under %{ geoLicense }."
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:92
+msgid "Waterway Admin"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:95
+msgid "Waterway User"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:435
+#: src/components/map/fairway/Profiles.vue:436
+msgid "You can now select these coordinates from the \"Saved cross profiles\" menu to restore this cross profile."
+msgstr ""
--- a/client/src/locale/de_AT/LC_MESSAGES/app.po	Wed Dec 05 10:31:41 2018 +0000
+++ b/client/src/locale/de_AT/LC_MESSAGES/app.po	Wed Dec 05 14:13:28 2018 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: wamosjs 0.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-04 13:29+0100\n"
+"POT-Creation-Date: 2018-12-05 12:03+0100\n"
 "PO-Revision-Date: 2018-12-05 13:13+0000\n"
 "Last-Translator: Sascha L. Teichmann <sascha.teichmann@intevation.de>\n"
 "Language-Team: Austrian German <https://hosted.weblate.org/projects/gemma/"
--- a/client/src/locale/en_GB/LC_MESSAGES/app.po	Wed Dec 05 10:31:41 2018 +0000
+++ b/client/src/locale/en_GB/LC_MESSAGES/app.po	Wed Dec 05 14:13:28 2018 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: wamosjs 0.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-04 13:29+0100\n"
+"POT-Creation-Date: 2018-12-05 12:03+0100\n"
 "PO-Revision-Date: 2018-07-03 17:18+0200\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -175,13 +175,6 @@
 msgid "Generate PDF"
 msgstr ""
 
-#: src/components/map/Identify.vue:69
-msgid ""
-"Geonames data source is licensed under\n"
-"        <a href=\"https://creativecommons.org/licenses/by/4.0/\">%{ geoLicense }</a> without warranty, see docs for details\n"
-"        <a href=\"http://www.geonames.org/data-sources.html\">%{ data }</a>."
-msgstr ""
-
 #: src/components/map/Identify.vue:10
 msgid "Identified"
 msgstr ""
@@ -281,7 +274,7 @@
 msgid "New Import"
 msgstr ""
 
-#: src/components/map/Identify.vue:51
+#: src/components/map/Identify.vue:50
 msgid "No features identified."
 msgstr ""
 
@@ -421,7 +414,7 @@
 msgid "Send testmail"
 msgstr ""
 
-#: src/components/map/Identify.vue:64
+#: src/components/map/Identify.vue:63
 msgid ""
 "Some data ©\n"
 "        <a href=\"https://www.openstreetmap.org/copyright\">%{ name }</a>\n"
@@ -432,7 +425,7 @@
 msgid "Sounding Result"
 msgstr ""
 
-#: src/components/map/Identify.vue:61
+#: src/components/map/Identify.vue:60
 msgid "source-code"
 msgstr ""
 
@@ -480,7 +473,7 @@
 msgid "Systemconfiguration"
 msgstr ""
 
-#: src/components/map/Identify.vue:55
+#: src/components/map/Identify.vue:54
 msgid ""
 "This app uses <i>gemma</i>, which is Free Software under <br/>\n"
 "        %{ license } without warranty, see docs for details."
@@ -509,6 +502,12 @@
 msgid "Users"
 msgstr ""
 
+#: src/components/map/Identify.vue:68
+msgid ""
+"Uses\n"
+"        <a href=\"https://download.geonames.org/export/dump/readme.txt\">GeoNames</a> under %{ geoLicense }."
+msgstr ""
+
 #: src/components/admin/usermanagement/Userdetail.vue:92
 msgid "Waterway Admin"
 msgstr ""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/client/src/locale/hr_HR/LC_MESSAGES/app.po	Wed Dec 05 14:13:28 2018 +0100
@@ -0,0 +1,522 @@
+# Croatian translations for gemmajs package.
+# Copyright (C) 2018 THE gemmajs'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the gemmajs package.
+# Automatically generated, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gemmajs 1.99.0-dev\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-12-05 12:25+0100\n"
+"PO-Revision-Date: 2018-12-05 12:23+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: hr_HR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: src/components/admin/Importqueue.vue:46
+msgid "Accepted"
+msgstr ""
+
+#: src/components/admin/Logs.vue:25
+msgid "Accesslog"
+msgstr ""
+
+#: src/components/admin/usermanagement/Usermanagement.vue:106
+msgid "Add User"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:35
+msgid "Author"
+msgstr ""
+
+#: src/components/Login.vue:70
+msgid "back to login"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:134
+#: src/components/admin/Systemconfiguration.vue:133
+#: src/components/admin/Systemconfiguration.vue:148
+#: src/components/admin/Systemconfiguration.vue:167
+#: src/components/admin/Systemconfiguration.vue:184
+#: src/components/admin/usermanagement/Userdetail.vue:296
+#: src/components/admin/usermanagement/Userdetail.vue:368
+#: src/components/admin/usermanagement/Usermanagement.vue:300
+#: src/components/admin/usermanagement/Usermanagement.vue:308
+#: src/components/admin/usermanagement/Usermanagement.vue:334
+#: src/components/map/Search.vue:257
+#: src/components/map/contextbox/Bottlenecks.vue:252
+#: src/components/map/contextbox/ImportSoundingresults.vue:205
+#: src/components/map/contextbox/ImportSoundingresults.vue:244
+#: src/components/map/contextbox/ImportSoundingresults.vue:275
+msgid "Backend Error"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:11
+msgid "Bottleneck"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:19
+msgid "Bottleneck Areas fill-color"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:13
+msgid "Bottleneck Areas stroke-color"
+msgstr ""
+
+#: src/components/Sidebar.vue:22
+#: src/components/map/contextbox/Bottlenecks.vue:4
+msgid "Bottlenecks"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:121
+msgid "Cancel Upload"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:30
+msgid "Chainage"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:167
+#: src/components/map/contextbox/ImportSoundingresults.vue:181
+msgid "choose .zip- file"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:18
+msgid "Chose format:"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:64
+msgid "Compare with"
+msgstr ""
+
+#: src/components/Sidebar.vue:58
+msgid "Configuration"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:316
+#: src/components/map/contextbox/Staging.vue:70
+msgid "Confirm"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:374
+msgid "Coordinates copied to clipboard!"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:34
+msgid "Country"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:67
+#: src/components/map/contextbox/Staging.vue:14
+msgid "Date"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:47
+msgid "Depthreference"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:32
+msgid "Download"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:113
+msgid "Download Meta.json"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:37
+msgid "Email"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:60
+msgid "Email address"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:53
+msgid "Enqueued"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:123
+msgid "Enter coordinates manually"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:185
+msgid "Enter label for cross profile"
+msgstr ""
+
+#: src/components/Login.vue:157
+msgid "Enter passphrase"
+msgstr ""
+
+#: src/components/Login.vue:160
+msgid "Enter username"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:377
+msgid "Error while saving user"
+msgstr ""
+
+#: src/components/admin/Logs.vue:34
+msgid "Errorlog"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:37
+msgid "Failed"
+msgstr ""
+
+#: src/components/Login.vue:76
+msgid "Forgot password"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:10 src/components/map/Pdftool.vue:49
+msgid "Generate PDF"
+msgstr ""
+
+#: src/components/map/Identify.vue:10
+msgid "Identified"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:33
+#: src/components/map/contextbox/ImportSoundingresults.vue:267
+msgid "Import"
+msgstr ""
+
+#: src/components/Sidebar.vue:31
+msgid "Import soundingresults"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:4
+msgid "Import Soundingresults"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:15
+msgid "Imported"
+msgstr ""
+
+#: src/components/Sidebar.vue:66 src/components/admin/Importqueue.vue:9
+msgid "Importqueue"
+msgstr ""
+
+#: src/components/Sidebar.vue:70
+#: src/components/admin/importschedule/Importschedule.vue:9
+msgid "Importschedule"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:345
+msgid "invalid email"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:408
+msgid "Invalid input"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:54
+msgid "Kind"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:20
+msgid "landscape"
+msgstr ""
+
+#: src/components/admin/Logs.vue:41
+msgid "Last refresh:"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:19
+msgid "Latest"
+msgstr ""
+
+#: src/components/map/layers/Layers.vue:10
+msgid "Layers"
+msgstr ""
+
+#: src/components/Login.vue:58
+msgid "Login"
+msgstr ""
+
+#: src/components/Login.vue:151
+msgid "Login failed"
+msgstr ""
+
+#: src/components/Sidebar.vue:76
+msgid "Logout"
+msgstr ""
+
+#: src/components/Sidebar.vue:62 src/components/admin/Logs.vue:9
+msgid "Logs"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:141
+msgid "Mail was sent"
+msgstr ""
+
+#: src/components/Sidebar.vue:14
+msgid "Map"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:20
+msgid "Measurement"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:9
+#: src/components/map/contextbox/Staging.vue:12
+msgid "Name"
+msgstr ""
+
+#: src/components/admin/importschedule/Importscheduledetail.vue:6
+msgid "New import"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:72
+msgid "New Import"
+msgstr ""
+
+#: src/components/map/Identify.vue:50
+msgid "No features identified."
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:116
+#: src/components/map/contextbox/Staging.vue:63
+msgid "No results."
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:66
+msgid "No schedules"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:41
+msgid "Open in new window"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:229
+msgid "password"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:227
+msgid "Password"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:230
+msgid "password again"
+msgstr ""
+
+#: src/components/Login.vue:153
+msgid "Password reset requested!"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:338
+#: src/components/admin/usermanagement/Userdetail.vue:339
+msgid "Password should at least be 8 char long including 1 digit and 1 special char like $"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:334
+msgid "Passwords do not match!"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:40
+msgid "Pending"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:323
+msgid "Please choose a country"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:328
+msgid "Please choose a role"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:79
+msgid "Please enter a date"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:39
+msgid "Please enter a projection"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:62
+msgid "Please enter a reference"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:409
+#: src/components/map/fairway/Profiles.vue:410
+msgid "Please enter correct coordinates in the format: Lat,Lon,Lat,Lon"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:22
+msgid "Please select a bottleneck"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:41
+#: src/components/admin/usermanagement/Userdetail.vue:86
+msgid "Please select one"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:21
+msgid "portrait"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:448
+msgid "Profile deleted!"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:434
+msgid "Profile saved!"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:10
+msgid "Profiles"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:28
+msgid "Projection"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:70 src/components/admin/Logs.vue:48
+msgid "Refresh"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:43
+msgid "Rejected"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:228
+msgid "Repeat Password"
+msgstr ""
+
+#: src/components/Login.vue:66
+msgid "Request password reset!"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:79
+msgid "Role"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:82
+msgid "Saved cross profiles"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:36
+msgid "Schedule"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:32
+msgid "Select Bottleneck"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:25
+msgid "Send"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:139
+msgid "Send testmail"
+msgstr ""
+
+#: src/components/map/Identify.vue:63
+msgid ""
+"Some data ©\n"
+"        <a href=\"https://www.openstreetmap.org/copyright\">%{ name }</a>\n"
+"        contributors."
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:45
+msgid "Sounding Result"
+msgstr ""
+
+#: src/components/map/Identify.vue:60
+msgid "source-code"
+msgstr ""
+
+#: src/components/Sidebar.vue:44
+msgid "Staging area"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:7
+msgid "Staging Area"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:142
+msgid "Start"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:268
+msgid "Starting import for "
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:56
+msgid "State"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:130
+msgid "Submit"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:373
+msgid "Success"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:34
+msgid "Successful"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:89
+msgid "Sysadmin"
+msgstr ""
+
+#: src/components/Sidebar.vue:47
+msgid "Systemadministration"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:8
+msgid "Systemconfiguration"
+msgstr ""
+
+#: src/components/map/Identify.vue:54
+msgid ""
+"This app uses <i>gemma</i>, which is Free Software under <br/>\n"
+"        %{ license } without warranty, see docs for details."
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:34
+#: src/components/map/contextbox/Staging.vue:13
+msgid "Type"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:313
+msgid "Upload"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:55
+msgid "User"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:15
+#: src/components/map/contextbox/Staging.vue:16
+msgid "Username"
+msgstr ""
+
+#: src/components/Sidebar.vue:52
+#: src/components/admin/usermanagement/Usermanagement.vue:14
+msgid "Users"
+msgstr ""
+
+#: src/components/map/Identify.vue:68
+msgid ""
+"Uses\n"
+"        <a href=\"https://download.geonames.org/export/dump/readme.txt\">GeoNames</a> under %{ geoLicense }."
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:92
+msgid "Waterway Admin"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:95
+msgid "Waterway User"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:435
+#: src/components/map/fairway/Profiles.vue:436
+msgid "You can now select these coordinates from the \"Saved cross profiles\" menu to restore this cross profile."
+msgstr ""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/client/src/locale/hu_HU/LC_MESSAGES/app.po	Wed Dec 05 14:13:28 2018 +0100
@@ -0,0 +1,522 @@
+# Hungarian translations for gemmajs package.
+# Copyright (C) 2018 THE gemmajs'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the gemmajs package.
+# Automatically generated, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gemmajs 1.99.0-dev\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-12-05 12:25+0100\n"
+"PO-Revision-Date: 2018-12-05 12:23+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: hu_HU\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/components/admin/Importqueue.vue:46
+msgid "Accepted"
+msgstr ""
+
+#: src/components/admin/Logs.vue:25
+msgid "Accesslog"
+msgstr ""
+
+#: src/components/admin/usermanagement/Usermanagement.vue:106
+msgid "Add User"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:35
+msgid "Author"
+msgstr ""
+
+#: src/components/Login.vue:70
+msgid "back to login"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:134
+#: src/components/admin/Systemconfiguration.vue:133
+#: src/components/admin/Systemconfiguration.vue:148
+#: src/components/admin/Systemconfiguration.vue:167
+#: src/components/admin/Systemconfiguration.vue:184
+#: src/components/admin/usermanagement/Userdetail.vue:296
+#: src/components/admin/usermanagement/Userdetail.vue:368
+#: src/components/admin/usermanagement/Usermanagement.vue:300
+#: src/components/admin/usermanagement/Usermanagement.vue:308
+#: src/components/admin/usermanagement/Usermanagement.vue:334
+#: src/components/map/Search.vue:257
+#: src/components/map/contextbox/Bottlenecks.vue:252
+#: src/components/map/contextbox/ImportSoundingresults.vue:205
+#: src/components/map/contextbox/ImportSoundingresults.vue:244
+#: src/components/map/contextbox/ImportSoundingresults.vue:275
+msgid "Backend Error"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:11
+msgid "Bottleneck"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:19
+msgid "Bottleneck Areas fill-color"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:13
+msgid "Bottleneck Areas stroke-color"
+msgstr ""
+
+#: src/components/Sidebar.vue:22
+#: src/components/map/contextbox/Bottlenecks.vue:4
+msgid "Bottlenecks"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:121
+msgid "Cancel Upload"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:30
+msgid "Chainage"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:167
+#: src/components/map/contextbox/ImportSoundingresults.vue:181
+msgid "choose .zip- file"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:18
+msgid "Chose format:"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:64
+msgid "Compare with"
+msgstr ""
+
+#: src/components/Sidebar.vue:58
+msgid "Configuration"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:316
+#: src/components/map/contextbox/Staging.vue:70
+msgid "Confirm"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:374
+msgid "Coordinates copied to clipboard!"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:34
+msgid "Country"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:67
+#: src/components/map/contextbox/Staging.vue:14
+msgid "Date"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:47
+msgid "Depthreference"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:32
+msgid "Download"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:113
+msgid "Download Meta.json"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:37
+msgid "Email"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:60
+msgid "Email address"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:53
+msgid "Enqueued"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:123
+msgid "Enter coordinates manually"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:185
+msgid "Enter label for cross profile"
+msgstr ""
+
+#: src/components/Login.vue:157
+msgid "Enter passphrase"
+msgstr ""
+
+#: src/components/Login.vue:160
+msgid "Enter username"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:377
+msgid "Error while saving user"
+msgstr ""
+
+#: src/components/admin/Logs.vue:34
+msgid "Errorlog"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:37
+msgid "Failed"
+msgstr ""
+
+#: src/components/Login.vue:76
+msgid "Forgot password"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:10 src/components/map/Pdftool.vue:49
+msgid "Generate PDF"
+msgstr ""
+
+#: src/components/map/Identify.vue:10
+msgid "Identified"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:33
+#: src/components/map/contextbox/ImportSoundingresults.vue:267
+msgid "Import"
+msgstr ""
+
+#: src/components/Sidebar.vue:31
+msgid "Import soundingresults"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:4
+msgid "Import Soundingresults"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:15
+msgid "Imported"
+msgstr ""
+
+#: src/components/Sidebar.vue:66 src/components/admin/Importqueue.vue:9
+msgid "Importqueue"
+msgstr ""
+
+#: src/components/Sidebar.vue:70
+#: src/components/admin/importschedule/Importschedule.vue:9
+msgid "Importschedule"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:345
+msgid "invalid email"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:408
+msgid "Invalid input"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:54
+msgid "Kind"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:20
+msgid "landscape"
+msgstr ""
+
+#: src/components/admin/Logs.vue:41
+msgid "Last refresh:"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:19
+msgid "Latest"
+msgstr ""
+
+#: src/components/map/layers/Layers.vue:10
+msgid "Layers"
+msgstr ""
+
+#: src/components/Login.vue:58
+msgid "Login"
+msgstr ""
+
+#: src/components/Login.vue:151
+msgid "Login failed"
+msgstr ""
+
+#: src/components/Sidebar.vue:76
+msgid "Logout"
+msgstr ""
+
+#: src/components/Sidebar.vue:62 src/components/admin/Logs.vue:9
+msgid "Logs"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:141
+msgid "Mail was sent"
+msgstr ""
+
+#: src/components/Sidebar.vue:14
+msgid "Map"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:20
+msgid "Measurement"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:9
+#: src/components/map/contextbox/Staging.vue:12
+msgid "Name"
+msgstr ""
+
+#: src/components/admin/importschedule/Importscheduledetail.vue:6
+msgid "New import"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:72
+msgid "New Import"
+msgstr ""
+
+#: src/components/map/Identify.vue:50
+msgid "No features identified."
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:116
+#: src/components/map/contextbox/Staging.vue:63
+msgid "No results."
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:66
+msgid "No schedules"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:41
+msgid "Open in new window"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:229
+msgid "password"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:227
+msgid "Password"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:230
+msgid "password again"
+msgstr ""
+
+#: src/components/Login.vue:153
+msgid "Password reset requested!"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:338
+#: src/components/admin/usermanagement/Userdetail.vue:339
+msgid "Password should at least be 8 char long including 1 digit and 1 special char like $"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:334
+msgid "Passwords do not match!"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:40
+msgid "Pending"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:323
+msgid "Please choose a country"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:328
+msgid "Please choose a role"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:79
+msgid "Please enter a date"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:39
+msgid "Please enter a projection"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:62
+msgid "Please enter a reference"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:409
+#: src/components/map/fairway/Profiles.vue:410
+msgid "Please enter correct coordinates in the format: Lat,Lon,Lat,Lon"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:22
+msgid "Please select a bottleneck"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:41
+#: src/components/admin/usermanagement/Userdetail.vue:86
+msgid "Please select one"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:21
+msgid "portrait"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:448
+msgid "Profile deleted!"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:434
+msgid "Profile saved!"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:10
+msgid "Profiles"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:28
+msgid "Projection"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:70 src/components/admin/Logs.vue:48
+msgid "Refresh"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:43
+msgid "Rejected"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:228
+msgid "Repeat Password"
+msgstr ""
+
+#: src/components/Login.vue:66
+msgid "Request password reset!"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:79
+msgid "Role"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:82
+msgid "Saved cross profiles"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:36
+msgid "Schedule"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:32
+msgid "Select Bottleneck"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:25
+msgid "Send"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:139
+msgid "Send testmail"
+msgstr ""
+
+#: src/components/map/Identify.vue:63
+msgid ""
+"Some data ©\n"
+"        <a href=\"https://www.openstreetmap.org/copyright\">%{ name }</a>\n"
+"        contributors."
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:45
+msgid "Sounding Result"
+msgstr ""
+
+#: src/components/map/Identify.vue:60
+msgid "source-code"
+msgstr ""
+
+#: src/components/Sidebar.vue:44
+msgid "Staging area"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:7
+msgid "Staging Area"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:142
+msgid "Start"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:268
+msgid "Starting import for "
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:56
+msgid "State"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:130
+msgid "Submit"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:373
+msgid "Success"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:34
+msgid "Successful"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:89
+msgid "Sysadmin"
+msgstr ""
+
+#: src/components/Sidebar.vue:47
+msgid "Systemadministration"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:8
+msgid "Systemconfiguration"
+msgstr ""
+
+#: src/components/map/Identify.vue:54
+msgid ""
+"This app uses <i>gemma</i>, which is Free Software under <br/>\n"
+"        %{ license } without warranty, see docs for details."
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:34
+#: src/components/map/contextbox/Staging.vue:13
+msgid "Type"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:313
+msgid "Upload"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:55
+msgid "User"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:15
+#: src/components/map/contextbox/Staging.vue:16
+msgid "Username"
+msgstr ""
+
+#: src/components/Sidebar.vue:52
+#: src/components/admin/usermanagement/Usermanagement.vue:14
+msgid "Users"
+msgstr ""
+
+#: src/components/map/Identify.vue:68
+msgid ""
+"Uses\n"
+"        <a href=\"https://download.geonames.org/export/dump/readme.txt\">GeoNames</a> under %{ geoLicense }."
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:92
+msgid "Waterway Admin"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:95
+msgid "Waterway User"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:435
+#: src/components/map/fairway/Profiles.vue:436
+msgid "You can now select these coordinates from the \"Saved cross profiles\" menu to restore this cross profile."
+msgstr ""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/client/src/locale/ro_RO/LC_MESSAGES/app.po	Wed Dec 05 14:13:28 2018 +0100
@@ -0,0 +1,522 @@
+# Romanian translations for gemmajs package.
+# Copyright (C) 2018 THE gemmajs'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the gemmajs package.
+# Automatically generated, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gemmajs 1.99.0-dev\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-12-05 12:25+0100\n"
+"PO-Revision-Date: 2018-12-05 12:23+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ro_RO\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\n"
+
+#: src/components/admin/Importqueue.vue:46
+msgid "Accepted"
+msgstr ""
+
+#: src/components/admin/Logs.vue:25
+msgid "Accesslog"
+msgstr ""
+
+#: src/components/admin/usermanagement/Usermanagement.vue:106
+msgid "Add User"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:35
+msgid "Author"
+msgstr ""
+
+#: src/components/Login.vue:70
+msgid "back to login"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:134
+#: src/components/admin/Systemconfiguration.vue:133
+#: src/components/admin/Systemconfiguration.vue:148
+#: src/components/admin/Systemconfiguration.vue:167
+#: src/components/admin/Systemconfiguration.vue:184
+#: src/components/admin/usermanagement/Userdetail.vue:296
+#: src/components/admin/usermanagement/Userdetail.vue:368
+#: src/components/admin/usermanagement/Usermanagement.vue:300
+#: src/components/admin/usermanagement/Usermanagement.vue:308
+#: src/components/admin/usermanagement/Usermanagement.vue:334
+#: src/components/map/Search.vue:257
+#: src/components/map/contextbox/Bottlenecks.vue:252
+#: src/components/map/contextbox/ImportSoundingresults.vue:205
+#: src/components/map/contextbox/ImportSoundingresults.vue:244
+#: src/components/map/contextbox/ImportSoundingresults.vue:275
+msgid "Backend Error"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:11
+msgid "Bottleneck"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:19
+msgid "Bottleneck Areas fill-color"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:13
+msgid "Bottleneck Areas stroke-color"
+msgstr ""
+
+#: src/components/Sidebar.vue:22
+#: src/components/map/contextbox/Bottlenecks.vue:4
+msgid "Bottlenecks"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:121
+msgid "Cancel Upload"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:30
+msgid "Chainage"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:167
+#: src/components/map/contextbox/ImportSoundingresults.vue:181
+msgid "choose .zip- file"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:18
+msgid "Chose format:"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:64
+msgid "Compare with"
+msgstr ""
+
+#: src/components/Sidebar.vue:58
+msgid "Configuration"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:316
+#: src/components/map/contextbox/Staging.vue:70
+msgid "Confirm"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:374
+msgid "Coordinates copied to clipboard!"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:34
+msgid "Country"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:67
+#: src/components/map/contextbox/Staging.vue:14
+msgid "Date"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:47
+msgid "Depthreference"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:32
+msgid "Download"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:113
+msgid "Download Meta.json"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:37
+msgid "Email"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:60
+msgid "Email address"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:53
+msgid "Enqueued"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:123
+msgid "Enter coordinates manually"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:185
+msgid "Enter label for cross profile"
+msgstr ""
+
+#: src/components/Login.vue:157
+msgid "Enter passphrase"
+msgstr ""
+
+#: src/components/Login.vue:160
+msgid "Enter username"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:377
+msgid "Error while saving user"
+msgstr ""
+
+#: src/components/admin/Logs.vue:34
+msgid "Errorlog"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:37
+msgid "Failed"
+msgstr ""
+
+#: src/components/Login.vue:76
+msgid "Forgot password"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:10 src/components/map/Pdftool.vue:49
+msgid "Generate PDF"
+msgstr ""
+
+#: src/components/map/Identify.vue:10
+msgid "Identified"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:33
+#: src/components/map/contextbox/ImportSoundingresults.vue:267
+msgid "Import"
+msgstr ""
+
+#: src/components/Sidebar.vue:31
+msgid "Import soundingresults"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:4
+msgid "Import Soundingresults"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:15
+msgid "Imported"
+msgstr ""
+
+#: src/components/Sidebar.vue:66 src/components/admin/Importqueue.vue:9
+msgid "Importqueue"
+msgstr ""
+
+#: src/components/Sidebar.vue:70
+#: src/components/admin/importschedule/Importschedule.vue:9
+msgid "Importschedule"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:345
+msgid "invalid email"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:408
+msgid "Invalid input"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:54
+msgid "Kind"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:20
+msgid "landscape"
+msgstr ""
+
+#: src/components/admin/Logs.vue:41
+msgid "Last refresh:"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:19
+msgid "Latest"
+msgstr ""
+
+#: src/components/map/layers/Layers.vue:10
+msgid "Layers"
+msgstr ""
+
+#: src/components/Login.vue:58
+msgid "Login"
+msgstr ""
+
+#: src/components/Login.vue:151
+msgid "Login failed"
+msgstr ""
+
+#: src/components/Sidebar.vue:76
+msgid "Logout"
+msgstr ""
+
+#: src/components/Sidebar.vue:62 src/components/admin/Logs.vue:9
+msgid "Logs"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:141
+msgid "Mail was sent"
+msgstr ""
+
+#: src/components/Sidebar.vue:14
+msgid "Map"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:20
+msgid "Measurement"
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:9
+#: src/components/map/contextbox/Staging.vue:12
+msgid "Name"
+msgstr ""
+
+#: src/components/admin/importschedule/Importscheduledetail.vue:6
+msgid "New import"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:72
+msgid "New Import"
+msgstr ""
+
+#: src/components/map/Identify.vue:50
+msgid "No features identified."
+msgstr ""
+
+#: src/components/map/contextbox/Bottlenecks.vue:116
+#: src/components/map/contextbox/Staging.vue:63
+msgid "No results."
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:66
+msgid "No schedules"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:41
+msgid "Open in new window"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:229
+msgid "password"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:227
+msgid "Password"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:230
+msgid "password again"
+msgstr ""
+
+#: src/components/Login.vue:153
+msgid "Password reset requested!"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:338
+#: src/components/admin/usermanagement/Userdetail.vue:339
+msgid "Password should at least be 8 char long including 1 digit and 1 special char like $"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:334
+msgid "Passwords do not match!"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:40
+msgid "Pending"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:323
+msgid "Please choose a country"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:328
+msgid "Please choose a role"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:79
+msgid "Please enter a date"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:39
+msgid "Please enter a projection"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:62
+msgid "Please enter a reference"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:409
+#: src/components/map/fairway/Profiles.vue:410
+msgid "Please enter correct coordinates in the format: Lat,Lon,Lat,Lon"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:22
+msgid "Please select a bottleneck"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:41
+#: src/components/admin/usermanagement/Userdetail.vue:86
+msgid "Please select one"
+msgstr ""
+
+#: src/components/map/Pdftool.vue:21
+msgid "portrait"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:448
+msgid "Profile deleted!"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:434
+msgid "Profile saved!"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:10
+msgid "Profiles"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:28
+msgid "Projection"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:70 src/components/admin/Logs.vue:48
+msgid "Refresh"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:43
+msgid "Rejected"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:228
+msgid "Repeat Password"
+msgstr ""
+
+#: src/components/Login.vue:66
+msgid "Request password reset!"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:79
+msgid "Role"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:82
+msgid "Saved cross profiles"
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:36
+msgid "Schedule"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:32
+msgid "Select Bottleneck"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:25
+msgid "Send"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:139
+msgid "Send testmail"
+msgstr ""
+
+#: src/components/map/Identify.vue:63
+msgid ""
+"Some data ©\n"
+"        <a href=\"https://www.openstreetmap.org/copyright\">%{ name }</a>\n"
+"        contributors."
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:45
+msgid "Sounding Result"
+msgstr ""
+
+#: src/components/map/Identify.vue:60
+msgid "source-code"
+msgstr ""
+
+#: src/components/Sidebar.vue:44
+msgid "Staging area"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:7
+msgid "Staging Area"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:142
+msgid "Start"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:268
+msgid "Starting import for "
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:56
+msgid "State"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:130
+msgid "Submit"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:373
+msgid "Success"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:34
+msgid "Successful"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:89
+msgid "Sysadmin"
+msgstr ""
+
+#: src/components/Sidebar.vue:47
+msgid "Systemadministration"
+msgstr ""
+
+#: src/components/admin/Systemconfiguration.vue:8
+msgid "Systemconfiguration"
+msgstr ""
+
+#: src/components/map/Identify.vue:54
+msgid ""
+"This app uses <i>gemma</i>, which is Free Software under <br/>\n"
+"        %{ license } without warranty, see docs for details."
+msgstr ""
+
+#: src/components/admin/importschedule/Importschedule.vue:34
+#: src/components/map/contextbox/Staging.vue:13
+msgid "Type"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:313
+msgid "Upload"
+msgstr ""
+
+#: src/components/admin/Importqueue.vue:55
+msgid "User"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:15
+#: src/components/map/contextbox/Staging.vue:16
+msgid "Username"
+msgstr ""
+
+#: src/components/Sidebar.vue:52
+#: src/components/admin/usermanagement/Usermanagement.vue:14
+msgid "Users"
+msgstr ""
+
+#: src/components/map/Identify.vue:68
+msgid ""
+"Uses\n"
+"        <a href=\"https://download.geonames.org/export/dump/readme.txt\">GeoNames</a> under %{ geoLicense }."
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:92
+msgid "Waterway Admin"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:95
+msgid "Waterway User"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:435
+#: src/components/map/fairway/Profiles.vue:436
+msgid "You can now select these coordinates from the \"Saved cross profiles\" menu to restore this cross profile."
+msgstr ""
--- a/client/src/locale/sk_SK/LC_MESSAGES/app.po	Wed Dec 05 10:31:41 2018 +0000
+++ b/client/src/locale/sk_SK/LC_MESSAGES/app.po	Wed Dec 05 14:13:28 2018 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: wamosjs 0.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-04 13:29+0100\n"
+"POT-Creation-Date: 2018-12-05 12:03+0100\n"
 "PO-Revision-Date: 2018-07-03 17:18+0200\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -175,13 +175,6 @@
 msgid "Generate PDF"
 msgstr ""
 
-#: src/components/map/Identify.vue:69
-msgid ""
-"Geonames data source is licensed under\n"
-"        <a href=\"https://creativecommons.org/licenses/by/4.0/\">%{ geoLicense }</a> without warranty, see docs for details\n"
-"        <a href=\"http://www.geonames.org/data-sources.html\">%{ data }</a>."
-msgstr ""
-
 #: src/components/map/Identify.vue:10
 msgid "Identified"
 msgstr ""
@@ -281,7 +274,7 @@
 msgid "New Import"
 msgstr ""
 
-#: src/components/map/Identify.vue:51
+#: src/components/map/Identify.vue:50
 msgid "No features identified."
 msgstr ""
 
@@ -421,7 +414,7 @@
 msgid "Send testmail"
 msgstr ""
 
-#: src/components/map/Identify.vue:64
+#: src/components/map/Identify.vue:63
 msgid ""
 "Some data ©\n"
 "        <a href=\"https://www.openstreetmap.org/copyright\">%{ name }</a>\n"
@@ -432,7 +425,7 @@
 msgid "Sounding Result"
 msgstr ""
 
-#: src/components/map/Identify.vue:61
+#: src/components/map/Identify.vue:60
 msgid "source-code"
 msgstr ""
 
@@ -480,7 +473,7 @@
 msgid "Systemconfiguration"
 msgstr ""
 
-#: src/components/map/Identify.vue:55
+#: src/components/map/Identify.vue:54
 msgid ""
 "This app uses <i>gemma</i>, which is Free Software under <br/>\n"
 "        %{ license } without warranty, see docs for details."
@@ -509,6 +502,12 @@
 msgid "Users"
 msgstr ""
 
+#: src/components/map/Identify.vue:68
+msgid ""
+"Uses\n"
+"        <a href=\"https://download.geonames.org/export/dump/readme.txt\">GeoNames</a> under %{ geoLicense }."
+msgstr ""
+
 #: src/components/admin/usermanagement/Userdetail.vue:92
 msgid "Waterway Admin"
 msgstr ""
--- a/client/src/locale/translations.json	Wed Dec 05 10:31:41 2018 +0000
+++ b/client/src/locale/translations.json	Wed Dec 05 14:13:28 2018 +0100
@@ -1,1 +1,1 @@
-{"de_AT":{"Accepted":"Akzeptiert","Accesslog":"Zugriffs-Protokoll","Add User":"Benutzer hinzufügen","Author":"Autor","back to login":"zurück zur Anmeldung","Backend Error":"Server-Fehler","Bottleneck":"Engstelle","Bottleneck Areas fill-color":"Flächenfüllfarbe Engstelle","Bottleneck Areas stroke-color":"Flächenumrandungsfarbe Engstelle","Bottlenecks":"Engstellen","Cancel Upload":"Hochladen abbrechen","Chainage":"Verkettung","choose .zip- file":"Wählen Sie eine .zip Datei","Chose format:":"Format wählen:","Compare with":"Vergleiche mit","Configuration":"Konfiguration","Confirm":"Bestätigen","Coordinates copied to clipboard!":"Koordinaten auf die Zwischenablage kopiert!","Country":"Land","Date":"Datum","Depthreference":"Tiefenreferenz","Download":"Herunterladen","Download Meta.json":"Meta.json Herunterladen","Email":"E-Mail","Email address":"E-Mail Adresse","Enqueued":"Hinzugefügt","Enter coordinates manually":"Manuelle Koordinateneingabe","Enter label for cross profile":"Namen für Profilschnitt eingeben","Enter passphrase":"Passphrase eingeben","Errorlog":"Fehlerprotokoll","Failed":"Fehlgeschlagen","Forgot password":"Passwort vergessen","Generate PDF":"PDF generieren","Identified":"Identifiziert","Import":"Daten-Import","Import soundingresults":"Seichtstellenmessungen importieren","Import Soundingresults":"Seichtstellenmessungen importieren","Imported":"Importiert","Importqueue":"Import-Warteschlange","Importschedule":"Import-Zeitplan","Invalid input":"Ungültige Eingabe","Kind":"Art","landscape":"Querformat","Last refresh:":"Letzter Abgleich:","Latest":"Neustes","Layers":"Schichten","Login":"Login","Login failed":"Login fehlgeschlagen","Logout":"Abmelden","Logs":"Protokolle","Mail was sent":"E-Mail wurde gesendet","Map":"Karte","Measurement":"Messung","Name":"Name","New Import":"Neuer Import","No features identified.":"Keine Objekte identifiziert.","No results.":"Keine Ergebnisse.","No schedules":"Keine Pläne","Open in new window":"In neuem Fenster öffnen","Password reset requested!":"Passwort Zurücksetzung angefragt!","Pending":"Ausstehend","Please enter a date":"Bitte ein Datum eingeben","Please enter a projection":"Bitte eine Projektion eingeben","Please enter a reference":"Bitte ein Höhenreferenzsystem eingeben","Please enter correct coordinates in the format: Lat,Lon,Lat,Lon":"Bitte geben Sie die Koordinaten in folgendem Format an: Lat,Lon,Lat,Lon","Please select a bottleneck":"Bitte eine Seichtstelle wählen","Please select one":"Bitte auswählen","portrait":"Hochformat","Profile deleted!":"Profil gelöscht!","Profile saved!":"Profil gespeichert!","Profiles":"Profile","Projection":"Projektion","Refresh":"Aktualisieren","Rejected":"Abgelehnt","Request password reset!":"Passwort-Zurücksetzung anfragen!","Role":"Rolle","Saved cross profiles":"Gespeicherte Profile","Schedule":"Zeitplan","Select Bottleneck":"Wähle Engstelle","Send":"Absenden","Send testmail":"Test-E-Mail versenden","Sounding Result":"Seichtstellenvermessungsergebnisse","source-code":"Quelltext","Staging area":"Import-Überprüfung","Staging Area":"Import-Überprüfung","Start":"Start","Starting import for ":"Import gestartet ","State":"Zustand","Submit":"Abschicken","Success":"Erfolg","Successful":"Erfolgreich","Sysadmin":"Sys-Admin","Systemadministration":"System-Administration","Systemconfiguration":"System-Konfiguation","Type":"Typ","Upload":"Hochladen","User":"Benutzer","Users":"Benutzer","Waterway Admin":"Waterway-Admin","Waterway User":"Waterway-Benutzer","You can now select these coordinates from the \"Saved cross profiles\" menu to restore this cross profile.":"Sie können diese Koordinaten aus dem \"Gespeicherte Profile\"-Menü auswählen, um diesen Profilschnitt wieder herzustellen."},"en_GB":{},"sk_SK":{}}
\ No newline at end of file
+{"bg_BG":{},"de_AT":{"Accepted":"Akzeptiert","Accesslog":"Zugriffs-Protokoll","Add User":"Benutzer hinzufügen","Author":"Autor","back to login":"zurück zur Anmeldung","Backend Error":"Server-Fehler","Bottleneck":"Engstelle","Bottleneck Areas fill-color":"Flächenfüllfarbe Engstelle","Bottleneck Areas stroke-color":"Flächenumrandungsfarbe Engstelle","Bottlenecks":"Engstellen","Cancel Upload":"Hochladen abbrechen","Chainage":"Verkettung","choose .zip- file":"Wählen Sie eine .zip Datei","Chose format:":"Format wählen:","Compare with":"Vergleiche mit","Configuration":"Konfiguration","Confirm":"Bestätigen","Coordinates copied to clipboard!":"Koordinaten auf die Zwischenablage kopiert!","Country":"Land","Date":"Datum","Depthreference":"Tiefenreferenz","Download":"Herunterladen","Download Meta.json":"Meta.json Herunterladen","Email":"E-Mail","Email address":"E-Mail Adresse","Enqueued":"Hinzugefügt","Enter coordinates manually":"Manuelle Koordinateneingabe","Enter label for cross profile":"Namen für Profilschnitt eingeben","Enter passphrase":"Passphrase eingeben","Errorlog":"Fehlerprotokoll","Failed":"Fehlgeschlagen","Forgot password":"Passwort vergessen","Generate PDF":"PDF generieren","Identified":"Identifiziert","Import":"Daten-Import","Import soundingresults":"Seichtstellenmessungen importieren","Import Soundingresults":"Seichtstellenmessungen importieren","Imported":"Importiert","Importqueue":"Import-Warteschlange","Importschedule":"Import-Zeitplan","Invalid input":"Ungültige Eingabe","Kind":"Art","landscape":"Querformat","Last refresh:":"Letzter Abgleich:","Latest":"Neustes","Layers":"Schichten","Login":"Login","Login failed":"Login fehlgeschlagen","Logout":"Abmelden","Logs":"Protokolle","Mail was sent":"E-Mail wurde gesendet","Map":"Karte","Measurement":"Messung","Name":"Name","New Import":"Neuer Import","No features identified.":"Keine Objekte identifiziert.","No results.":"Keine Ergebnisse.","No schedules":"Keine Pläne","Open in new window":"In neuem Fenster öffnen","Password reset requested!":"Passwort Zurücksetzung angefragt!","Pending":"Ausstehend","Please enter a date":"Bitte ein Datum eingeben","Please enter a projection":"Bitte eine Projektion eingeben","Please enter a reference":"Bitte ein Höhenreferenzsystem eingeben","Please enter correct coordinates in the format: Lat,Lon,Lat,Lon":"Bitte geben Sie die Koordinaten in folgendem Format an: Lat,Lon,Lat,Lon","Please select a bottleneck":"Bitte eine Seichtstelle wählen","Please select one":"Bitte auswählen","portrait":"Hochformat","Profile deleted!":"Profil gelöscht!","Profile saved!":"Profil gespeichert!","Profiles":"Profile","Projection":"Projektion","Refresh":"Aktualisieren","Rejected":"Abgelehnt","Request password reset!":"Passwort-Zurücksetzung anfragen!","Role":"Rolle","Saved cross profiles":"Gespeicherte Profile","Schedule":"Zeitplan","Select Bottleneck":"Wähle Engstelle","Send":"Absenden","Send testmail":"Test-E-Mail versenden","Sounding Result":"Seichtstellenvermessungsergebnisse","source-code":"Quelltext","Staging area":"Import-Überprüfung","Staging Area":"Import-Überprüfung","Start":"Start","Starting import for ":"Import gestartet ","State":"Zustand","Submit":"Abschicken","Success":"Erfolg","Successful":"Erfolgreich","Sysadmin":"Sys-Admin","Systemadministration":"System-Administration","Systemconfiguration":"System-Konfiguation","Type":"Typ","Upload":"Hochladen","User":"Benutzer","Users":"Benutzer","Waterway Admin":"Waterway-Admin","Waterway User":"Waterway-Benutzer","You can now select these coordinates from the \"Saved cross profiles\" menu to restore this cross profile.":"Sie können diese Koordinaten aus dem \"Gespeicherte Profile\"-Menü auswählen, um diesen Profilschnitt wieder herzustellen."},"en_GB":{},"hr_HR":{},"hu_HU":{},"ro_RO":{},"sk_SK":{}}
\ No newline at end of file
--- a/client/src/main.js	Wed Dec 05 10:31:41 2018 +0000
+++ b/client/src/main.js	Wed Dec 05 14:13:28 2018 +0100
@@ -139,17 +139,43 @@
 const supportedLanguages = {
   en_GB: "British English",
   de_AT: "Deutsch",
-  sk_SK: "slovenčina"
+  sk_SK: "slovenčina",
+  hu_HU: "Magyat",
+  hr_HR: "Hrvatska",
+  bg_BG: "български",
+  ro_RO: "Română"
 };
 
-if (browserLanguage === "de-DE") {
-  browserLanguage = "de-AT"; // map german to austrian variant for now
+if (
+  browserLanguage === "de-DE" ||
+  browserLanguage === "de-LI" ||
+  browserLanguage === "de-LU" ||
+  browserLanguage === "de-CH" ||
+  browserLanguage === "de"
+) {
+  browserLanguage = "de-AT"; // map german,liechtenstein,luxenburg and switzerland to austrian variant for now
 }
 
 if (browserLanguage === "sk") {
   browserLanguage = "sk_SK";
 }
 
+if (browserLanguage === "hu") {
+  browserLanguage = "hu_HU";
+}
+
+if (browserLanguage === "hr") {
+  browserLanguage = "hr_HR";
+}
+
+if (browserLanguage === "bg") {
+  browserLanguage = "bg_BG";
+}
+
+if (browserLanguage === "ro") {
+  browserLanguage = "ro_RO";
+}
+
 const language = browserLanguage.replace("-", "_");
 const isLanguageAvailable = supportedLanguages[language];
 let defaultLanguage = isLanguageAvailable ? language : "en_GB";
--- a/pkg/controllers/importqueue.go	Wed Dec 05 10:31:41 2018 +0000
+++ b/pkg/controllers/importqueue.go	Wed Dec 05 14:13:28 2018 +0100
@@ -113,7 +113,7 @@
 	}
 
 	if ks := req.FormValue("kinds"); ks != "" {
-		kinds = toTextArray(ks, imports.ImportKindNames)
+		kinds = toTextArray(ks, imports.ImportKindNames())
 	}
 
 	stmt.WriteString(selectImportsSQL)
--- a/pkg/controllers/proxy.go	Wed Dec 05 10:31:41 2018 +0000
+++ b/pkg/controllers/proxy.go	Wed Dec 05 14:13:28 2018 +0100
@@ -67,7 +67,7 @@
 
 		if entry, found := vars["entry"]; found {
 			if s, found = lookup(entry); !found {
-				log.Printf("warn: cannot find eintry '%s'\n", entry)
+				log.Printf("warn: cannot find entry '%s'\n", entry)
 				panic(middleware.ErrNotFound)
 			}
 		} else {
--- a/pkg/imports/kinds.go	Wed Dec 05 10:31:41 2018 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-package imports
-
-// This is Free Software under GNU Affero General Public License v >= 3.0
-// without warranty, see README.md and license for details.
-//
-// SPDX-License-Identifier: AGPL-3.0-or-later
-// License-Filename: LICENSES/AGPL-3.0.txt
-//
-// Copyright (C) 2018 by via donau
-//   – Österreichische Wasserstraßen-Gesellschaft mbH
-// Software engineering by Intevation GmbH
-//
-// Author(s):
-//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>
-
-var ImportKindNames = []string{
-	string(SRJobKind),
-}
--- a/pkg/imports/polygon.go	Wed Dec 05 10:31:41 2018 +0000
+++ b/pkg/imports/polygon.go	Wed Dec 05 14:13:28 2018 +0100
@@ -23,12 +23,12 @@
 )
 
 type (
-	Point struct {
+	point struct {
 		X float64
 		Y float64
 	}
-	LineString []Point
-	Polygon    []LineString
+	lineString []point
+	polygon    []lineString
 )
 
 const (
@@ -36,7 +36,7 @@
 	wkbPolygon uint32 = 3
 )
 
-func shapeToPolygon(s shp.Shape) (Polygon, error) {
+func shapeToPolygon(s shp.Shape) (polygon, error) {
 	switch p := s.(type) {
 	case *shp.Polygon:
 		return toPolygon(p.NumParts, p.Parts, p.Points), nil
@@ -48,22 +48,22 @@
 	return nil, fmt.Errorf("Unsupported shape type %T", s)
 }
 
-func toPolygon(numParts int32, parts []int32, points []shp.Point) Polygon {
-	out := make(Polygon, numParts)
+func toPolygon(numParts int32, parts []int32, points []shp.Point) polygon {
+	out := make(polygon, numParts)
 	pos := 0
 	for i := range out {
 		ps := parts[i]
-		line := make(LineString, ps)
+		line := make(lineString, ps)
 		for j := int32(0); j < ps; j, pos = j+1, pos+1 {
 			p := &points[pos]
-			line[j] = Point{p.X, p.Y}
+			line[j] = point{p.X, p.Y}
 		}
 		out[i] = line
 	}
 	return out
 }
 
-func (p Polygon) AsWBK() []byte {
+func (p polygon) asWKB() []byte {
 	if p == nil {
 		return nil
 	}
--- a/pkg/imports/queue.go	Wed Dec 05 10:31:41 2018 +0000
+++ b/pkg/imports/queue.go	Wed Dec 05 14:13:28 2018 +0100
@@ -31,22 +31,54 @@
 )
 
 type (
+	// Feedback is passed to the Do method of a Job to log
+	// informations, warnings or errors.
 	Feedback interface {
+		// Info logs informations.
 		Info(fmt string, args ...interface{})
+		// Warn logs warnings.
 		Warn(fmt string, args ...interface{})
+		// Error logs errors.
 		Error(fmt string, args ...interface{})
 	}
 
+	// Job is the central abstraction of an import job
+	// run by the import queue.
 	Job interface {
-		Do(context.Context, int64, *sql.Conn, Feedback) (interface{}, error)
+		// Do is called to do the actual import.
+		// Bind transactions to ctx and conn, please-
+		// id is the number of the import job.
+		// feedback can be used to log the import process.
+		// If no error is return the import is assumed to
+		// be successfull. The non-error return value is
+		// serialized as a JSON string into the database as
+		// a summary to the import to be used by the review process.
+		Do(ctx context.Context, id int64, conn *sql.Conn, feedback Feedback) (interface{}, error)
+		// CleanUp is called to clean up ressources hold by the import.
+		// It is called whether the import succeeded or not.
 		CleanUp() error
 	}
 
+	// JobKind is the type of an import.
+	// Choose a unique name for every import.
 	JobKind string
 
+	// JobCreator is used to bring a job to life as it is stored
+	// in pure meta-data form to the database.
 	JobCreator interface {
+		// Create build the actual job.
+		// kind is the name of the import type.
+		// data is a free form string to pass arguments to the creation
+		// process. This is useful to tell e.g. where to find data
+		// in the file system to be used for importing.
 		Create(kind JobKind, data string) (Job, error)
+		// Depends returns a list of ressources locked by this type of import.
+		// Imports are run concurrently if they have disjoint sets
+		// of dependencies.
 		Depends() []string
+		// StageDone is called if an import is positively reviewed
+		// (state = accepted). This can be used to finalize the imported
+		// data to move it e.g from the staging area.
 		StageDone(context.Context, *sql.Tx, int64) error
 	}
 
@@ -74,6 +106,7 @@
 }
 
 var (
+	// ImportStateNames is a list of the states a job can be in.
 	ImportStateNames = []string{
 		"queued",
 		"running",
@@ -149,15 +182,38 @@
 	q.creators[kind] = jc
 }
 
+// FindJobCreator looks up a JobCreator in the global import queue.
 func FindJobCreator(kind JobKind) JobCreator {
 	return iqueue.jobCreator(kind)
 }
 
+// ImportKindNames is a list of the names of the imports the
+// global import queue supports.
+func ImportKindNames() []string {
+	return iqueue.importKindNames()
+}
+
+// RegisterJobCreator adds a JobCreator to the global import queue.
+// This a good candidate to be called in a init function for
+// a particular JobCreator.
 func RegisterJobCreator(kind JobKind, jc JobCreator) {
 	log.Printf("info: register import job creator for kind '%s'\n", kind)
 	iqueue.registerJobCreator(kind, jc)
 }
 
+func (q *importQueue) importKindNames() []string {
+	q.creatorsMu.Lock()
+	defer q.creatorsMu.Unlock()
+	names := make([]string, len(q.creators))
+	var i int
+	for kind := range q.creators {
+		names[i] = string(kind)
+		i++
+	}
+	// XXX: Consider using sort.Strings to make output deterministic.
+	return names
+}
+
 func (q *importQueue) jobCreator(kind JobKind) JobCreator {
 	q.creatorsMu.Lock()
 	defer q.creatorsMu.Unlock()
@@ -179,6 +235,9 @@
 	return id, err
 }
 
+// AddJob adds a job to the global import queue to be executed
+// as soon as possible. This is gone in a separate Go routine
+// so this will not block.
 func AddJob(kind JobKind, user, data string) (int64, error) {
 	return iqueue.addJob(kind, user, data)
 }
--- a/pkg/imports/sr.go	Wed Dec 05 10:31:41 2018 +0000
+++ b/pkg/imports/sr.go	Wed Dec 05 14:13:28 2018 +0100
@@ -40,14 +40,24 @@
 	"gemma.intevation.de/gemma/pkg/octree"
 )
 
+// SoundingResult is a Job to import sounding reults
+// from a ZIP file into the database.
 type SoundingResult struct {
+	// Dir is the folder in the file system where the
+	// 'sr.zip' is expect to be.
 	Dir string `json:"dir"`
 
 	// Override data
-	Date           *models.SoundingResultDate `json:"date,omitempty"`
-	Bottleneck     *string                    `json:"bottleneck,omitempty"`
-	EPSG           *uint                      `json:"epsg,omitempty"`
-	DepthReference *string                    `json:"depth-reference,omitempty"`
+	// Date if given overrides the date value from the meta.json.
+	Date *models.SoundingResultDate `json:"date,omitempty"`
+	// Date if given overrides the name of the bottleneck from the meta.json.
+	Bottleneck *string `json:"bottleneck,omitempty"`
+	// EPSG if given overrides the EPSG code from the meta.json.
+	// Defaults to WGS84.
+	EPSG *uint `json:"epsg,omitempty"`
+	// DepthReference if given overides the DepthReference value
+	// from the meta.json.
+	DepthReference *string `json:"depth-reference,omitempty"`
 }
 
 const (
@@ -55,6 +65,7 @@
 	contourTolerance = 0.1
 )
 
+// SRJobKind is the unique name of a SoundingResult import job.
 const SRJobKind JobKind = "sr"
 
 type srJobCreator struct{}
@@ -91,7 +102,10 @@
 const (
 	srStageDoneSQL = `
 UPDATE waterway.sounding_results SET staging_done = true
-WHERE id = $1`
+WHERE id = (
+  SELECT key from waterway.track_imports
+  WHERE import_id = $1 AND
+        relation = 'waterway.sounding_results'::regclass)`
 
 	insertPointsSQL = `
 INSERT INTO waterway.sounding_results (
@@ -155,10 +169,13 @@
 `
 )
 
+// FromString revives a SoundingResult import from a string.
 func (sr *SoundingResult) FromString(data string) error {
 	return json.NewDecoder(strings.NewReader(data)).Decode(sr)
 }
 
+// ToString serializes a SoundingResult import into a string to
+// be revived by FromString.
 func (sr *SoundingResult) ToString() (string, error) {
 	var b strings.Builder
 	if err := json.NewEncoder(&b).Encode(sr); err != nil {
@@ -167,6 +184,7 @@
 	return b.String(), nil
 }
 
+// Do executes the actual sounding result import.
 func (sr *SoundingResult) Do(
 	ctx context.Context,
 	importID int64,
@@ -234,7 +252,7 @@
 		m.Date.Time,
 		m.DepthReference,
 		xyz.AsWKB(),
-		polygon.AsWBK(),
+		polygon.asWKB(),
 		m.EPSG,
 	).Scan(&id, &lat, &lon, &epsg)
 	xyz, polygon = nil, nil // not need from now on.
@@ -313,6 +331,8 @@
 	return &summary, err
 }
 
+// CleanUp removes the folder containing the ZIP file with the
+// the sounding result import.
 func (sr *SoundingResult) CleanUp() error {
 	return os.RemoveAll(sr.Dir)
 }
@@ -415,7 +435,7 @@
 	return loadXYZReader(r, feedback)
 }
 
-func loadBoundary(z *zip.ReadCloser) (Polygon, error) {
+func loadBoundary(z *zip.ReadCloser) (polygon, error) {
 	shpF := common.FindInZIP(z, ".shp")
 	if shpF == nil {
 		return nil, nil
--- a/pkg/middleware/modifyquery.go	Wed Dec 05 10:31:41 2018 +0000
+++ b/pkg/middleware/modifyquery.go	Wed Dec 05 14:13:28 2018 +0100
@@ -62,6 +62,8 @@
 	return nil
 }
 
+// ModifyQuery creates an http.Handler which calls a modify function first before
+// calling the the nested next http.Handler.
 func ModifyQuery(next http.Handler, modify func(*http.Request, url.Values) error) http.Handler {
 
 	return http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
@@ -90,6 +92,10 @@
 	})
 }
 
+// InjectUser is a modify function fitting into ModifyQuery to inject the
+// user's name from the current session hex-encoded into the 'env' query parameter.
+// This is used by the GeoServer to restrict the access to this the user/role
+// to show show the requested map.
 func InjectUser(req *http.Request, parameters url.Values) error {
 	// To prevent SQL injections
 	parameters.Del("env")
--- a/pkg/middleware/notfound.go	Wed Dec 05 10:31:41 2018 +0000
+++ b/pkg/middleware/notfound.go	Wed Dec 05 14:13:28 2018 +0100
@@ -18,8 +18,12 @@
 	"net/http"
 )
 
+// ErrNotFound should be as the argument to panic if the NotFound should
+// report back a http.StatusNotFound.
 var ErrNotFound = errors.New("Not found")
 
+// NotFound creates an http.Handler which survives panic(ErrNotFound) and
+// reports http.StatusNotFound in these cases back to the calling handler.
 func NotFound(next http.Handler) http.Handler {
 	return http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
 		defer func() {