changeset 1416:3af7ad9717e2

Client: add a set fo marked translation * add some marked transaltions in the templates. and update the corresponding .po files. * remove trailing whitespace and improve the formating in some files
author Fadi Abbud <fadi.abbud@intevation.de>
date Thu, 29 Nov 2018 11:08:02 +0100
parents d4fc5f3c1252
children bd9253eec499
files client/src/components/Sidebar.vue client/src/components/admin/usermanagement/Userdetail.vue client/src/components/admin/usermanagement/Usermanagement.vue client/src/components/map/Identify.vue client/src/components/map/fairway/Profiles.vue client/src/locale/de_AT/LC_MESSAGES/app.po client/src/locale/en_GB/LC_MESSAGES/app.po
diffstat 7 files changed, 431 insertions(+), 168 deletions(-) [+]
line wrap: on
line diff
--- a/client/src/components/Sidebar.vue	Thu Nov 29 11:02:51 2018 +0100
+++ b/client/src/components/Sidebar.vue	Thu Nov 29 11:08:02 2018 +0100
@@ -36,7 +36,9 @@
           <font-awesome-icon icon="clipboard-check" fixed-width></font-awesome-icon>
           <translate>Staging area</translate>
         </a>
-        <small class="text-muted pl-3"><translate>Systemadministration</translate></small>
+        <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>
@@ -60,7 +62,8 @@
       <hr class="m-0">
       <a href="#" @click="logoff">
         <font-awesome-icon icon="power-off" fixed-width></font-awesome-icon>
-        <translate>Logout</translate> {{ user }}
+        <translate>Logout</translate>
+        {{ user }}
       </a>
     </div>
   </div>
--- a/client/src/components/admin/usermanagement/Userdetail.vue	Thu Nov 29 11:02:51 2018 +0100
+++ b/client/src/components/admin/usermanagement/Userdetail.vue	Thu Nov 29 11:08:02 2018 +0100
@@ -11,7 +11,9 @@
         <form @submit.prevent="save" class="ml-3">
           <div class="formfields">
             <div v-if="currentUser.isNew" class="form-group row">
-              <label for="user">Username</label>
+              <label for="user">
+                <translate>Username</translate>
+              </label>
               <input
                 type="user"
                 :placeholder="userNamePlaceholder"
@@ -28,13 +30,17 @@
               </div>
             </div>
             <div class="form-group row">
-              <label for="country">Country</label>
+              <label for="country">
+                <translate>Country</translate>
+              </label>
               <select
                 class="form-control form-control-sm"
                 v-on:change="validateCountry"
                 v-model="currentUser.country"
               >
-                <option disabled value>Please select one</option>
+                <option disabled value>
+                  <translate>Please select one</translate>
+                </option>
                 <option
                   v-for="country in countries"
                   v-bind:value="country"
@@ -49,7 +55,9 @@
               </div>
             </div>
             <div class="form-group row">
-              <label for="email">Email address</label>
+              <label for="email">
+                <translate>Email address</translate>
+              </label>
               <input
                 type="email"
                 v-on:change="validateEmailaddress"
@@ -66,16 +74,26 @@
               </div>
             </div>
             <div class="form-group row">
-              <label for="role">Role</label>
+              <label for="role">
+                <translate>Role</translate>
+              </label>
               <select
                 class="form-control form-control-sm"
                 v-on:change="validateRole"
                 v-model="currentUser.role"
               >
-                <option disabled value>Please select one</option>
-                <option value="sys_admin">Sysadmin</option>
-                <option value="waterway_admin">Waterway Admin</option>
-                <option value="waterway_user">Waterway User</option>
+                <option disabled value>
+                  <translate>Please select one</translate>
+                </option>
+                <option value="sys_admin">
+                  <translate>Sysadmin</translate>
+                </option>
+                <option value="waterway_admin">
+                  <translate>Waterway Admin</translate>
+                </option>
+                <option value="waterway_user">
+                  <translate>Waterway User</translate>
+                </option>
               </select>
               <div v-show="errors.role" class="text-danger">
                 <small>
@@ -102,20 +120,21 @@
             </div>
           </div>
           <div>
-            <button
-              type="submit"
-              :disabled="submitted"
-              class="shadow-sm btn btn-info pull-right"
-            >Submit</button>
+            <button type="submit" :disabled="submitted" class="shadow-sm btn btn-info pull-right">
+              <translate>Submit</translate>
+            </button>
           </div>
           <div
             v-if="currentUser.role !='waterway_user' "
             class="form-group row d-flex flex-row justify-content-start mailbutton"
           >
             <a @click="sendTestMail" class="btn btn-light">
-              <font-awesome-icon icon="paper-plane"></font-awesome-icon>Send testmail
+              <font-awesome-icon icon="paper-plane"></font-awesome-icon>
+              <translate>Send testmail</translate>
             </a>
-            <div v-if="mailsent">Mail was sent</div>
+            <div v-if="mailsent">
+              <translate>Mail was sent</translate>
+            </div>
           </div>
         </form>
       </div>
--- a/client/src/components/admin/usermanagement/Usermanagement.vue	Thu Nov 29 11:02:51 2018 +0100
+++ b/client/src/components/admin/usermanagement/Usermanagement.vue	Thu Nov 29 11:08:02 2018 +0100
@@ -5,7 +5,9 @@
       <div class="d-flex flex-row">
         <div :class="userlistStyle">
           <div class="card">
-            <div class="card-header shadow-sm text-white bg-info mb-3">Users</div>
+            <div class="card-header shadow-sm text-white bg-info mb-3">
+              <translate>Users</translate>
+            </div>
             <div class="card-body">
               <table id="datatable" :class="tableStyle">
                 <thead>
@@ -66,7 +68,9 @@
               </button>
             </div>
             <div class="mr-3 pb-3">
-              <button @click="addUser " class="btn btn-info pull-right shadow-sm">Add User</button>
+              <button @click="addUser " class="btn btn-info pull-right shadow-sm">
+                <translate>Add User</translate>
+              </button>
             </div>
           </div>
         </div>
--- a/client/src/components/map/Identify.vue	Thu Nov 29 11:02:51 2018 +0100
+++ b/client/src/components/map/Identify.vue	Thu Nov 29 11:08:02 2018 +0100
@@ -1,54 +1,59 @@
 <template>
-    <div :class="['box ui-element rounded bg-white text-nowrap', { expanded: showIdentify }]">
-        <div style="width: 20rem">
-            <h6 class="mb-0 py-2 px-3 border-bottom d-flex align-items-center">
-              <font-awesome-icon icon="info" class="mr-2"></font-awesome-icon>
-              <translate>Identified</translate>
-              <font-awesome-icon
-                  icon="times"
-                  class="ml-auto text-muted"
-                  @click="$store.commit('application/showIdentify', false)"
-              ></font-awesome-icon>
-            </h6>
-            <div class="d-flex flex-column features p-3 flex-grow-1 text-left">
-                <div v-if="currentMeasurement">
-                    <b>
-                      {{ currentMeasurement.quantity }}
-                      ({{ currentMeasurement.unitSymbol }}):
-                    </b><br>
-                    <small>{{ currentMeasurement.value }}</small>
-                </div>
-                <div v-for="(feature, i) of identifiedFeatures" :key="feature.getId()" >
-                    <div v-if="feature.getId()" :class="{ 'mt-2': i }">
-                        <b>{{ feature.getId().replace(/[.][^.]*$/,"") /* cut away everything from the last . to the end */}}:</b>
-                        <small
-                            v-for="(value, key) in prepareProperties(feature)"
-                            :key="key"
-                        >
-                            <div v-if="value">{{key}}:{{value}}</div>
-                        </small>
-                    </div>
-                </div>
-                <div v-if="!currentMeasurement && !identifiedFeatures.length" class="text-muted small text-center my-auto">
-                    <translate>No features identified.</translate>
-                </div>
-            </div>
-            <div class="versioninfo border-top p-3 text-left">
-              <translate>This app uses </translate><i>gemma</i>,<translate> which is Free Software under</translate>
-              <br>
-              AGPL-3.0-or-later
-              <translate> without warranty, see docs for details.</translate><br>
+  <div :class="['box ui-element rounded bg-white text-nowrap', { expanded: showIdentify }]">
+    <div style="width: 20rem">
+      <h6 class="mb-0 py-2 px-3 border-bottom d-flex align-items-center">
+        <font-awesome-icon icon="info" class="mr-2"></font-awesome-icon>
+        <translate>Identified</translate>
+        <font-awesome-icon
+          icon="times"
+          class="ml-auto text-muted"
+          @click="$store.commit('application/showIdentify', false)"
+        ></font-awesome-icon>
+      </h6>
+      <div class="d-flex flex-column features p-3 flex-grow-1 text-left">
+        <div v-if="currentMeasurement">
+          <b>
+            {{ currentMeasurement.quantity }}
+            ({{ currentMeasurement.unitSymbol }}):
+          </b>
+          <br>
+          <small>{{ currentMeasurement.value }}</small>
+        </div>
+        <div v-for="(feature, i) of identifiedFeatures" :key="feature.getId()">
+          <div v-if="feature.getId()" :class="{ 'mt-2': i }">
+            <b>{{ feature.getId().replace(/[.][^.]*$/,"") /* cut away everything from the last . to the end */}}:</b>
+            <small v-for="(value, key) in prepareProperties(feature)" :key="key">
+              <div v-if="value">{{key}}:{{value}}</div>
+            </small>
+          </div>
+        </div>
+        <div
+          v-if="!currentMeasurement && !identifiedFeatures.length"
+          class="text-muted small text-center my-auto"
+        >
+          <translate>No features identified.</translate>
+        </div>
+      </div>
+      <div class="versioninfo border-top p-3 text-left">
+        <translate>This app uses</translate>
+        <i>gemma</i>,
+        <translate>which is Free Software under</translate>
+        <br>AGPL-3.0-or-later
+        <translate>without warranty, see docs for details.</translate>
+        <br>
 
-              <a href="https://hg.intevation.de/gemma/file/tip"><translate>source-code</translate></a>
-              {{ versionStr }}
-              <br>
-              © via donau. &#x24D4; Intevation.
-              <br><translate>Some data </translate>©
-              <a href="https://www.openstreetmap.org/copyright">OpenSteetMap</a>
-              <translate>contributors.</translate>
-            </div>
-        </div>
+        <a href="https://hg.intevation.de/gemma/file/tip">
+          <translate>source-code</translate>
+        </a>
+        {{ versionStr }}
+        <br>© via donau. &#x24D4; Intevation.
+        <br>
+        <translate>Some data</translate>©
+        <a href="https://www.openstreetmap.org/copyright">OpenSteetMap</a>
+        <translate>contributors.</translate>
+      </div>
     </div>
+  </div>
 </template>
 
 <style lang="sass" scoped>
--- a/client/src/components/map/fairway/Profiles.vue	Thu Nov 29 11:02:51 2018 +0100
+++ b/client/src/components/map/fairway/Profiles.vue	Thu Nov 29 11:08:02 2018 +0100
@@ -3,7 +3,7 @@
     <div style="width: 20rem">
       <h6 class="mb-0 py-2 px-3 border-bottom d-flex align-items-center">
         <font-awesome-icon icon="chart-area" class="mr-2"></font-awesome-icon>
-        Profiles
+        <translate>Profiles</translate>
         <font-awesome-icon
           icon="times"
           class="ml-auto text-muted"
@@ -11,11 +11,20 @@
         ></font-awesome-icon>
       </h6>
       <div class="d-flex flex-column p-3 flex-grow-1 text-left position-relative">
-        <div class="loading d-flex justify-content-center align-items-center" v-if="surveysLoading || profileLoading">
-          <font-awesome-icon icon="spinner" spin />
+        <div
+          class="loading d-flex justify-content-center align-items-center"
+          v-if="surveysLoading || profileLoading"
+        >
+          <font-awesome-icon icon="spinner" spin/>
         </div>
-        <select @click="moveToBottleneck" v-model="selectedBottleneck" class="form-control font-weight-bold">
-          <option :value="null">Select Bottleneck</option>
+        <select
+          @click="moveToBottleneck"
+          v-model="selectedBottleneck"
+          class="form-control font-weight-bold"
+        >
+          <option :value="null">
+            <translate>Select Bottleneck</translate>
+          </option>
           <option
             v-for="bn in bottlenecks"
             :key="bn.properties.name"
@@ -25,7 +34,9 @@
         <div v-if="selectedBottleneck">
           <div class="d-flex mt-2">
             <div class="flex-fill">
-              <small class="text-muted">Sounding Result:</small>
+              <small class="text-muted">
+                <translate>Sounding Result</translate>:
+              </small>
               <select v-model="selectedSurvey" class="form-control form-control-sm">
                 <option
                   v-for="survey in surveys"
@@ -35,7 +46,9 @@
               </select>
             </div>
             <div class="flex-fill ml-3" v-if="selectedSurvey && surveys.length > 1">
-              <small class="text-muted mt-1">Compare with:</small>
+              <small class="text-muted mt-1">
+                <translate>Compare with</translate>:
+              </small>
               <select v-model="additionalSurvey" class="form-control form-control-sm">
                 <option :value="null">None</option>
                 <option
@@ -47,43 +60,62 @@
             </div>
           </div>
           <hr class="w-100 mb-0">
-          <small class="text-muted d-block mt-2">Saved cross profiles:</small>
+          <small class="text-muted d-block mt-2">
+            <translate>Saved cross profiles</translate>:
+          </small>
           <div class="d-flex">
-            <select :class="['form-control form-control-sm flex-fill', { 'rounded-left-only': selectedCut }]" v-model="selectedCut">
+            <select
+              :class="['form-control form-control-sm flex-fill', { 'rounded-left-only': selectedCut }]"
+              v-model="selectedCut"
+            >
               <option></option>
-              <option v-for="(cut, index) in previousCuts" :value="cut" :key="index">
-                {{ cut.label }}
-              </option>
+              <option v-for="(cut, index) in previousCuts" :value="cut" :key="index">{{ cut.label }}</option>
             </select>
             <button
               class="btn btn-sm btn-danger input-button-right"
               @click="confirmDeleteSelectedCut = true"
               v-if="selectedCut && !confirmDeleteSelectedCut"
-            ><font-awesome-icon icon="trash" /></button>
+            >
+              <font-awesome-icon icon="trash"/>
+            </button>
             <button
               class="btn btn-sm btn-info rounded-0"
               @click="confirmDeleteSelectedCut = false"
               v-if="selectedCut && confirmDeleteSelectedCut"
-            ><font-awesome-icon icon="times" /></button>
+            >
+              <font-awesome-icon icon="times"/>
+            </button>
             <button
               class="btn btn-sm btn-danger input-button-right"
               @click="deleteSelectedCut"
               v-if="selectedCut && confirmDeleteSelectedCut"
-            ><font-awesome-icon icon="check" /></button>
+            >
+              <font-awesome-icon icon="check"/>
+            </button>
           </div>
-          <small class="text-muted d-block mt-2">Enter coordinates manually:</small>
+          <small class="text-muted d-block mt-2">
+            <translate>Enter coordinates manually</translate>:
+          </small>
           <div class="position-relative">
-            <input class="form-control form-control-sm pr-5" placeholder="Lat,Lon,Lat,Lon" v-model="coordinatesInput" />
+            <input
+              class="form-control form-control-sm pr-5"
+              placeholder="Lat,Lon,Lat,Lon"
+              v-model="coordinatesInput"
+            >
             <button
-              class="btn btn-sm btn-info position-absolute input-button-right" 
+              class="btn btn-sm btn-info position-absolute input-button-right"
               @click="applyManualCoordinates"
               style="top: 0; right: 0;"
               v-if="coordinatesInputIsValid"
-            ><font-awesome-icon icon="check" /></button>
+            >
+              <font-awesome-icon icon="check"/>
+            </button>
           </div>
           <small class="d-flex text-left mt-2" v-if="startPoint && endPoint">
             <div class="text-nowrap mr-3">
-              <b>Start:</b>
+              <b>
+                <translate>Start</translate>:
+              </b>
               <br>
               Lat: {{ startPoint[1] }}
               <br>
@@ -96,41 +128,42 @@
               <br>
               Lon: {{ endPoint[0] }}
             </div>
-            <button v-clipboard:copy="coordinatesForClipboard"
+            <button
+              v-clipboard:copy="coordinatesForClipboard"
               v-clipboard:success="onCopyCoordinates"
               class="btn btn-info btn-sm ml-auto mt-auto"
-            ><font-awesome-icon icon="copy" /></button>
+            >
+              <font-awesome-icon icon="copy"/>
+            </button>
           </small>
           <div class="d-flex mt-3">
             <div class="pr-3 w-50" v-if="startPoint && endPoint && !selectedCut">
-              <button
-                class="btn btn-info btn-sm w-100"
-                @click="showLabelInput = !showLabelInput"
-              >
-                <font-awesome-icon :icon="showLabelInput ? 'times' : 'check'" />
+              <button class="btn btn-info btn-sm w-100" @click="showLabelInput = !showLabelInput">
+                <font-awesome-icon :icon="showLabelInput ? 'times' : 'check'"/>
                 {{ showLabelInput ? "Cancel" : "Save" }}
               </button>
             </div>
             <div :class="startPoint && endPoint && !selectedCut ? 'w-50' : 'w-100'">
-              <button
-                class="btn btn-info btn-sm w-100"
-                @click="toggleCutTool"
-              >
+              <button class="btn btn-info btn-sm w-100" @click="toggleCutTool">
                 <font-awesome-icon :icon="cutTool && cutTool.getActive() ? 'times' : 'plus'"></font-awesome-icon>
                 {{ cutTool && cutTool.getActive() ? "Cancel" : "New" }}
               </button>
             </div>
           </div>
           <div v-if="showLabelInput" class="mt-2">
-            <small class="text-muted">Enter label for cross profile:</small>
+            <small class="text-muted">
+              <translate>Enter label for cross profile</translate>:
+            </small>
             <div class="position-relative">
-              <input class="form-control form-control-sm pr-5" v-model="cutLabel" />
+              <input class="form-control form-control-sm pr-5" v-model="cutLabel">
               <button
                 class="btn btn-sm btn-info position-absolute input-button-right"
                 @click="saveCut"
                 v-if="cutLabel"
                 style="top: 0; right: 0;"
-              ><font-awesome-icon icon="check" /></button>
+              >
+                <font-awesome-icon icon="check"/>
+              </button>
             </div>
           </div>
         </div>
@@ -160,7 +193,7 @@
     border-bottom-right-radius: 0 !important
     border-top-left-radius: $border-radius
     border-bottom-left-radius: $border-radius
-    
+
 </style>
 
 <script>
@@ -170,7 +203,7 @@
  * SPDX-License-Identifier: AGPL-3.0-or-later
  * License-Filename: LICENSES/AGPL-3.0.txt
  *
- * Copyright (C) 2018 by via donau 
+ * Copyright (C) 2018 by via donau
  *   – Österreichische Wasserstraßen-Gesellschaft mbH
  * Software engineering by Intevation GmbH
  *
--- a/client/src/locale/de_AT/LC_MESSAGES/app.po	Thu Nov 29 11:02:51 2018 +0100
+++ b/client/src/locale/de_AT/LC_MESSAGES/app.po	Thu Nov 29 11:08:02 2018 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: wamosjs 0.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-11-28 17:09+0100\n"
+"POT-Creation-Date: 2018-11-29 10:54+0100\n"
 "PO-Revision-Date: 2018-07-03 17:00+0200\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -26,11 +26,15 @@
 msgid "Accesslog"
 msgstr ""
 
+#: src/components/admin/usermanagement/Usermanagement.vue:71
+msgid "Add User"
+msgstr ""
+
 #: src/components/Login.vue:59
 msgid "back to login"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:9
+#: src/components/map/contextbox/ImportSoundingresults.vue:11
 msgid "Bottleneck"
 msgstr ""
 
@@ -47,7 +51,7 @@
 msgid "Bottlenecks"
 msgstr "Engstellen"
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:87
+#: src/components/map/contextbox/ImportSoundingresults.vue:110
 msgid "Cancel Upload"
 msgstr ""
 
@@ -59,34 +63,54 @@
 msgid "Chose format:"
 msgstr ""
 
-#: src/components/map/contextbox/Staging.vue:54
+#: src/components/map/fairway/Profiles.vue:49
+msgid "Compare with"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:65
 msgid "Confirm"
 msgstr ""
 
-#: src/components/map/Identify.vue:47
+#: src/components/map/Identify.vue:52
 msgid "contributors."
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:22
+#: src/components/admin/usermanagement/Userdetail.vue:33
+msgid "Country"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:16
 msgid "Date"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:39
+#: src/components/map/contextbox/ImportSoundingresults.vue:42
 msgid "Depthreference"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:81
-msgid "Download"
+#: src/components/map/contextbox/ImportSoundingresults.vue:107
+msgid "Download Meta.json"
 msgstr ""
 
 #: src/components/map/Pdftool.vue:25
 msgid "Dvownload"
 msgstr ""
 
+#: src/components/admin/usermanagement/Userdetail.vue:58
+msgid "Email address"
+msgstr ""
+
 #: src/components/admin/Importqueue.vue:35
 msgid "Enqueued"
 msgstr ""
 
+#: src/components/map/fairway/Profiles.vue:96
+msgid "Enter coordinates manually"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:154
+msgid "Enter label for cross profile"
+msgstr ""
+
 #: src/components/Login.vue:141
 msgid "Enter passphrase"
 msgstr "Passphrase"
@@ -116,17 +140,19 @@
 msgid "Identified"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:3
-msgid ""
-"Import\n"
-"    Soundingresults"
-msgstr ""
-
 #: src/components/Sidebar.vue:28
 msgid "Import soundingresults"
 msgstr ""
 
-#: src/components/Sidebar.vue:56 src/components/admin/Importqueue.vue:5
+#: src/components/map/contextbox/ImportSoundingresults.vue:4
+msgid "Import Soundingresults"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:19
+msgid "Imported"
+msgstr ""
+
+#: src/components/Sidebar.vue:58 src/components/admin/Importqueue.vue:5
 msgid "Importqueue"
 msgstr ""
 
@@ -158,14 +184,18 @@
 msgid "Login failed"
 msgstr "Login fehlgeschlagen"
 
-#: src/components/Sidebar.vue:62
+#: src/components/Sidebar.vue:64
 msgid "Logout"
 msgstr ""
 
-#: src/components/Sidebar.vue:52
+#: src/components/Sidebar.vue:54
 msgid "Logs"
 msgstr ""
 
+#: src/components/admin/usermanagement/Userdetail.vue:135
+msgid "Mail was sent"
+msgstr ""
+
 #: src/components/Sidebar.vue:11
 msgid "Map"
 msgstr "Karte"
@@ -175,15 +205,16 @@
 msgstr ""
 
 #: src/components/map/contextbox/Bottlenecks.vue:7
+#: src/components/map/contextbox/Staging.vue:10
 msgid "Name"
 msgstr ""
 
-#: src/components/map/Identify.vue:32
+#: src/components/map/Identify.vue:33
 msgid "No features identified."
 msgstr ""
 
 #: src/components/map/contextbox/Bottlenecks.vue:63
-#: src/components/map/contextbox/Staging.vue:49
+#: src/components/map/contextbox/Staging.vue:58
 msgid "No results."
 msgstr ""
 
@@ -199,22 +230,39 @@
 msgid "Pending"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:35
+#: src/components/map/contextbox/ImportSoundingresults.vue:69
 msgid "Please enter a date"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:46
+#: src/components/map/contextbox/ImportSoundingresults.vue:34
+msgid "Please enter a projection"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:52
 msgid "Please enter a reference"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:16
+#: src/components/map/contextbox/ImportSoundingresults.vue:18
 msgid "Please select a bottleneck"
 msgstr ""
 
+#: src/components/admin/usermanagement/Userdetail.vue:41
+#: src/components/admin/usermanagement/Userdetail.vue:85
+msgid "Please select one"
+msgstr ""
+
 #: src/components/map/Pdftool.vue:15
 msgid "portrait"
 msgstr ""
 
+#: src/components/map/fairway/Profiles.vue:5
+msgid "Profiles"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:24
+msgid "Projection"
+msgstr ""
+
 #: src/components/admin/Importqueue.vue:51 src/components/admin/Logs.vue:32
 msgid "Refresh"
 msgstr ""
@@ -227,15 +275,36 @@
 msgid "Request password reset!"
 msgstr ""
 
+#: src/components/admin/usermanagement/Userdetail.vue:77
+msgid "Role"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:63
+msgid "Saved cross profiles"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:25
+#, fuzzy
+msgid "Select Bottleneck"
+msgstr "Engstellen"
+
 #: src/components/admin/Systemconfiguration.vue:14
 msgid "Send"
 msgstr ""
 
-#: src/components/map/Identify.vue:45
+#: src/components/admin/usermanagement/Userdetail.vue:132
+msgid "Send testmail"
+msgstr ""
+
+#: src/components/map/Identify.vue:50
 msgid "Some data"
 msgstr ""
 
-#: src/components/map/Identify.vue:41
+#: src/components/map/fairway/Profiles.vue:37
+msgid "Sounding Result"
+msgstr ""
+
+#: src/components/map/Identify.vue:45
 msgid "source-code"
 msgstr ""
 
@@ -243,42 +312,73 @@
 msgid "Staging area"
 msgstr ""
 
-#: src/components/map/contextbox/Staging.vue:3
+#: src/components/map/contextbox/Staging.vue:4
 msgid "Staging Area"
 msgstr ""
 
+#: src/components/map/fairway/Profiles.vue:116
+msgid "Start"
+msgstr ""
+
 #: src/components/admin/Importqueue.vue:38
 msgid "State"
 msgstr ""
 
+#: src/components/admin/usermanagement/Userdetail.vue:123
+msgid "Submit"
+msgstr ""
+
 #: src/components/admin/Importqueue.vue:25
 msgid "Successful"
 msgstr ""
 
-#: src/components/Sidebar.vue:38
+#: src/components/admin/usermanagement/Userdetail.vue:88
+msgid "Sysadmin"
+msgstr ""
+
+#: src/components/Sidebar.vue:39
 msgid "Systemadministration"
 msgstr ""
 
-#: src/components/Sidebar.vue:48 src/components/admin/Systemconfiguration.vue:3
+#: src/components/Sidebar.vue:50 src/components/admin/Systemconfiguration.vue:3
 msgid "Systemconfiguration"
 msgstr ""
 
-#: src/components/map/Identify.vue:36
+#: src/components/map/Identify.vue:37
 msgid "This app uses"
 msgstr ""
 
+#: src/components/map/contextbox/Staging.vue:13
+msgid "Type"
+msgstr ""
+
 #: src/components/admin/Importqueue.vue:37
 msgid "User"
 msgstr ""
 
-#: src/components/Sidebar.vue:42
+#: src/components/admin/usermanagement/Userdetail.vue:14
+#: src/components/map/contextbox/Staging.vue:22
+#, fuzzy
+msgid "Username"
+msgstr "Passphrase"
+
+#: src/components/Sidebar.vue:44
+#: src/components/admin/usermanagement/Usermanagement.vue:8
 msgid "Users"
 msgstr ""
 
-#: src/components/map/Identify.vue:36
+#: src/components/admin/usermanagement/Userdetail.vue:91
+msgid "Waterway Admin"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:94
+msgid "Waterway User"
+msgstr ""
+
+#: src/components/map/Identify.vue:39
 msgid "which is Free Software under"
 msgstr ""
 
-#: src/components/map/Identify.vue:39
+#: src/components/map/Identify.vue:41
 msgid "without warranty, see docs for details."
 msgstr ""
--- a/client/src/locale/en_GB/LC_MESSAGES/app.po	Thu Nov 29 11:02:51 2018 +0100
+++ b/client/src/locale/en_GB/LC_MESSAGES/app.po	Thu Nov 29 11:08:02 2018 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: wamosjs 0.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-11-28 17:09+0100\n"
+"POT-Creation-Date: 2018-11-29 10:54+0100\n"
 "PO-Revision-Date: 2018-07-03 17:18+0200\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -25,11 +25,15 @@
 msgid "Accesslog"
 msgstr ""
 
+#: src/components/admin/usermanagement/Usermanagement.vue:71
+msgid "Add User"
+msgstr ""
+
 #: src/components/Login.vue:59
 msgid "back to login"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:9
+#: src/components/map/contextbox/ImportSoundingresults.vue:11
 msgid "Bottleneck"
 msgstr ""
 
@@ -46,7 +50,7 @@
 msgid "Bottlenecks"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:87
+#: src/components/map/contextbox/ImportSoundingresults.vue:110
 msgid "Cancel Upload"
 msgstr ""
 
@@ -58,34 +62,54 @@
 msgid "Chose format:"
 msgstr ""
 
-#: src/components/map/contextbox/Staging.vue:54
+#: src/components/map/fairway/Profiles.vue:49
+msgid "Compare with"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:65
 msgid "Confirm"
 msgstr ""
 
-#: src/components/map/Identify.vue:47
+#: src/components/map/Identify.vue:52
 msgid "contributors."
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:22
+#: src/components/admin/usermanagement/Userdetail.vue:33
+msgid "Country"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:16
 msgid "Date"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:39
+#: src/components/map/contextbox/ImportSoundingresults.vue:42
 msgid "Depthreference"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:81
-msgid "Download"
+#: src/components/map/contextbox/ImportSoundingresults.vue:107
+msgid "Download Meta.json"
 msgstr ""
 
 #: src/components/map/Pdftool.vue:25
 msgid "Dvownload"
 msgstr ""
 
+#: src/components/admin/usermanagement/Userdetail.vue:58
+msgid "Email address"
+msgstr ""
+
 #: src/components/admin/Importqueue.vue:35
 msgid "Enqueued"
 msgstr ""
 
+#: src/components/map/fairway/Profiles.vue:96
+msgid "Enter coordinates manually"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:154
+msgid "Enter label for cross profile"
+msgstr ""
+
 #: src/components/Login.vue:141
 msgid "Enter passphrase"
 msgstr "Enter passphrase"
@@ -115,17 +139,19 @@
 msgid "Identified"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:3
-msgid ""
-"Import\n"
-"    Soundingresults"
-msgstr ""
-
 #: src/components/Sidebar.vue:28
 msgid "Import soundingresults"
 msgstr ""
 
-#: src/components/Sidebar.vue:56 src/components/admin/Importqueue.vue:5
+#: src/components/map/contextbox/ImportSoundingresults.vue:4
+msgid "Import Soundingresults"
+msgstr ""
+
+#: src/components/map/contextbox/Staging.vue:19
+msgid "Imported"
+msgstr ""
+
+#: src/components/Sidebar.vue:58 src/components/admin/Importqueue.vue:5
 msgid "Importqueue"
 msgstr ""
 
@@ -157,14 +183,18 @@
 msgid "Login failed"
 msgstr "Login failed"
 
-#: src/components/Sidebar.vue:62
+#: src/components/Sidebar.vue:64
 msgid "Logout"
 msgstr ""
 
-#: src/components/Sidebar.vue:52
+#: src/components/Sidebar.vue:54
 msgid "Logs"
 msgstr ""
 
+#: src/components/admin/usermanagement/Userdetail.vue:135
+msgid "Mail was sent"
+msgstr ""
+
 #: src/components/Sidebar.vue:11
 msgid "Map"
 msgstr ""
@@ -174,15 +204,16 @@
 msgstr ""
 
 #: src/components/map/contextbox/Bottlenecks.vue:7
+#: src/components/map/contextbox/Staging.vue:10
 msgid "Name"
 msgstr ""
 
-#: src/components/map/Identify.vue:32
+#: src/components/map/Identify.vue:33
 msgid "No features identified."
 msgstr ""
 
 #: src/components/map/contextbox/Bottlenecks.vue:63
-#: src/components/map/contextbox/Staging.vue:49
+#: src/components/map/contextbox/Staging.vue:58
 msgid "No results."
 msgstr ""
 
@@ -198,22 +229,39 @@
 msgid "Pending"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:35
+#: src/components/map/contextbox/ImportSoundingresults.vue:69
 msgid "Please enter a date"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:46
+#: src/components/map/contextbox/ImportSoundingresults.vue:34
+msgid "Please enter a projection"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:52
 msgid "Please enter a reference"
 msgstr ""
 
-#: src/components/map/contextbox/ImportSoundingresults.vue:16
+#: src/components/map/contextbox/ImportSoundingresults.vue:18
 msgid "Please select a bottleneck"
 msgstr ""
 
+#: src/components/admin/usermanagement/Userdetail.vue:41
+#: src/components/admin/usermanagement/Userdetail.vue:85
+msgid "Please select one"
+msgstr ""
+
 #: src/components/map/Pdftool.vue:15
 msgid "portrait"
 msgstr ""
 
+#: src/components/map/fairway/Profiles.vue:5
+msgid "Profiles"
+msgstr ""
+
+#: src/components/map/contextbox/ImportSoundingresults.vue:24
+msgid "Projection"
+msgstr ""
+
 #: src/components/admin/Importqueue.vue:51 src/components/admin/Logs.vue:32
 msgid "Refresh"
 msgstr ""
@@ -226,15 +274,35 @@
 msgid "Request password reset!"
 msgstr ""
 
+#: src/components/admin/usermanagement/Userdetail.vue:77
+msgid "Role"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:63
+msgid "Saved cross profiles"
+msgstr ""
+
+#: src/components/map/fairway/Profiles.vue:25
+msgid "Select Bottleneck"
+msgstr ""
+
 #: src/components/admin/Systemconfiguration.vue:14
 msgid "Send"
 msgstr ""
 
-#: src/components/map/Identify.vue:45
+#: src/components/admin/usermanagement/Userdetail.vue:132
+msgid "Send testmail"
+msgstr ""
+
+#: src/components/map/Identify.vue:50
 msgid "Some data"
 msgstr ""
 
-#: src/components/map/Identify.vue:41
+#: src/components/map/fairway/Profiles.vue:37
+msgid "Sounding Result"
+msgstr ""
+
+#: src/components/map/Identify.vue:45
 msgid "source-code"
 msgstr ""
 
@@ -242,42 +310,73 @@
 msgid "Staging area"
 msgstr ""
 
-#: src/components/map/contextbox/Staging.vue:3
+#: src/components/map/contextbox/Staging.vue:4
 msgid "Staging Area"
 msgstr ""
 
+#: src/components/map/fairway/Profiles.vue:116
+msgid "Start"
+msgstr ""
+
 #: src/components/admin/Importqueue.vue:38
 msgid "State"
 msgstr ""
 
+#: src/components/admin/usermanagement/Userdetail.vue:123
+msgid "Submit"
+msgstr ""
+
 #: src/components/admin/Importqueue.vue:25
 msgid "Successful"
 msgstr ""
 
-#: src/components/Sidebar.vue:38
+#: src/components/admin/usermanagement/Userdetail.vue:88
+msgid "Sysadmin"
+msgstr ""
+
+#: src/components/Sidebar.vue:39
 msgid "Systemadministration"
 msgstr ""
 
-#: src/components/Sidebar.vue:48 src/components/admin/Systemconfiguration.vue:3
+#: src/components/Sidebar.vue:50 src/components/admin/Systemconfiguration.vue:3
 msgid "Systemconfiguration"
 msgstr ""
 
-#: src/components/map/Identify.vue:36
+#: src/components/map/Identify.vue:37
 msgid "This app uses"
 msgstr ""
 
+#: src/components/map/contextbox/Staging.vue:13
+msgid "Type"
+msgstr ""
+
 #: src/components/admin/Importqueue.vue:37
 msgid "User"
 msgstr ""
 
-#: src/components/Sidebar.vue:42
+#: src/components/admin/usermanagement/Userdetail.vue:14
+#: src/components/map/contextbox/Staging.vue:22
+#, fuzzy
+msgid "Username"
+msgstr "Enter passphrase"
+
+#: src/components/Sidebar.vue:44
+#: src/components/admin/usermanagement/Usermanagement.vue:8
 msgid "Users"
 msgstr ""
 
-#: src/components/map/Identify.vue:36
+#: src/components/admin/usermanagement/Userdetail.vue:91
+msgid "Waterway Admin"
+msgstr ""
+
+#: src/components/admin/usermanagement/Userdetail.vue:94
+msgid "Waterway User"
+msgstr ""
+
+#: src/components/map/Identify.vue:39
 msgid "which is Free Software under"
 msgstr ""
 
-#: src/components/map/Identify.vue:39
+#: src/components/map/Identify.vue:41
 msgid "without warranty, see docs for details."
 msgstr ""