This is an automated email from the ASF dual-hosted git repository.

mfholz pushed a commit to branch translate-data-download
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit 6eed0f9f2b41e662c545577c4808becb41e0ebd1
Author: Marcelfrueh <[email protected]>
AuthorDate: Wed Mar 5 13:19:55 2025 +0100

    Add translation to "Data download" Module
---
 ui/deployment/i18n/de.json                         |  36 +-
 ui/deployment/i18n/en.json                         |  36 +-
 ui/package-lock.json                               | 462 ++++-----------------
 ui/package.json                                    |   2 +-
 .../components/download/download.component.html    |   6 +-
 .../select-data-missing-values.component.html      |   8 +-
 .../select-data-range.component.html               |  12 +-
 .../select-format/select-format.component.html     |  32 +-
 .../data-download-dialog.component.html            |  12 +-
 .../shared-ui/src/lib/shared-ui.module.ts          |   2 +
 10 files changed, 178 insertions(+), 430 deletions(-)

diff --git a/ui/deployment/i18n/de.json b/ui/deployment/i18n/de.json
index ceb9bbc46c..9ce4e9e0b1 100644
--- a/ui/deployment/i18n/de.json
+++ b/ui/deployment/i18n/de.json
@@ -80,10 +80,6 @@
   "False": "Falsch",
   "Rounding": "Rundung",
   "Inner Radius": "Innerer Radius",
-  "Add custom color mapping": "Benutzerdefiniertes Mapping hinzufügen",
-  "Add Mapping": "Mapping hinzufügen",
-  "Value": "Wert",
-  "Remove Mapping": "Mapping entfernen",
   "Fields": "Felder",
   "Latitude": "Breitengrad",
   "Longitude": "Längengrad",
@@ -145,6 +141,10 @@
   "Active": "Aktiv",
   "Wheel": "Rad",
   "Slider": "Slider",
+  "Add custom color mapping": "Benutzerdefiniertes Mapping hinzufügen",
+  "Add Mapping": "Mapping hinzufügen",
+  "Value": "Wert",
+  "Remove Mapping": "Mapping entfernen",
   "Charts": "Diagramme",
   "New chart": "Neues Diagramm",
   "Chart": "Diagramm",
@@ -233,5 +233,31 @@
   "Minute": "Minute",
   "Hour": "Stunde",
   "Day": "Tag",
-  "Week": "Woche"
+  "Week": "Woche",
+  "Select Data": "Daten auswählen",
+  "Previous": "Zurück",
+  "Download": "Download",
+  "Select Format": "Format auswählen",
+  "Download Format": "Download-Format",
+  "JSON": "JSON",
+  "CSV": "CSV",
+  "EXCEL (XLSX)": "EXCEL (XLSX)",
+  "Delimiter": "Trennzeichen",
+  "Excel template": "Excel Vorlage",
+  "Use uploaded file template": "Hochgeladene Vorlage verwenden",
+  "Choose template": "Vorlage auswählen",
+  "First row index to append data": "Erster Zeilenindex an denen Daten 
angehängt werden sollen",
+  "Header column name": "Spaltenname",
+  "Use field key (runtime name) as header column": "Laufzeitname als 
Spaltenname verwenden",
+  "Use field label as header column if available": "Label als Spaltenname 
verwenden (falls vorhanden)",
+  "Data Range": "Datumsbereich",
+  "Currently configured query": "Aktuell konfigurierte Anfrage",
+  "All data in database": "Alle Daten in der Datenbank",
+  "All data in custom time interval": "Alle Daten im vorgegebenen 
Zeitintervall",
+  "From": "Von",
+  "To": "Bis",
+  "Behaviour in case of missing values": "Verhalten im Falle von fehlenden 
Daten",
+  "Ignore lines with missing value": "Zeilen ohne Daten ignorieren",
+  "Leave entry empty": "Leer lassen",
+  "Download successful": "Download erfolgreich"
 }
diff --git a/ui/deployment/i18n/en.json b/ui/deployment/i18n/en.json
index 90499c0a0e..d5a1bf2d4b 100644
--- a/ui/deployment/i18n/en.json
+++ b/ui/deployment/i18n/en.json
@@ -80,10 +80,6 @@
   "False": null,
   "Rounding": null,
   "Inner Radius": null,
-  "Add custom color mapping": null,
-  "Add Mapping": null,
-  "Value": null,
-  "Remove Mapping": null,
   "Fields": null,
   "Latitude": null,
   "Longitude": null,
@@ -145,6 +141,10 @@
   "Active": null,
   "Wheel": null,
   "Slider": null,
+  "Add custom color mapping": null,
+  "Add Mapping": null,
+  "Value": null,
+  "Remove Mapping": null,
   "Charts": null,
   "New chart": null,
   "Chart": null,
@@ -233,5 +233,31 @@
   "Minute": null,
   "Hour": null,
   "Day": null,
-  "Week": null
+  "Week": null,
+  "Select Data": null,
+  "Previous": null,
+  "Download": null,
+  "Select Format": null,
+  "Download Format": null,
+  "JSON": null,
+  "CSV": null,
+  "EXCEL (XLSX)": null,
+  "Delimiter": null,
+  "Excel template": null,
+  "Use uploaded file template": null,
+  "Choose template": null,
+  "First row index to append data": null,
+  "Header column name": null,
+  "Use field key (runtime name) as header column": null,
+  "Use field label as header column if available": null,
+  "Data Range": null,
+  "Currently configured query": null,
+  "All data in database": null,
+  "All data in custom time interval": null,
+  "From": null,
+  "To": null,
+  "Behaviour in case of missing values": null,
+  "Ignore lines with missing value": null,
+  "Leave entry empty": null,
+  "Download successful": null
 }
diff --git a/ui/package-lock.json b/ui/package-lock.json
index d4dbd860be..fe113ad40b 100644
--- a/ui/package-lock.json
+++ b/ui/package-lock.json
@@ -1704,6 +1704,36 @@
         "semver": "bin/semver.js"
       }
     },
+    "node_modules/@angular/compiler-cli/node_modules/chokidar": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz";,
+      "integrity": 
"sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "readdirp": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 14.16.0"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/";
+      }
+    },
+    "node_modules/@angular/compiler-cli/node_modules/readdirp": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz";,
+      "integrity": 
"sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 14.18.0"
+      },
+      "funding": {
+        "type": "individual",
+        "url": "https://paulmillr.com/funding/";
+      }
+    },
     "node_modules/@angular/core": {
       "version": "18.2.13",
       "resolved": 
"https://registry.npmjs.org/@angular/core/-/core-18.2.13.tgz";,
@@ -6290,66 +6320,6 @@
         "chokidar": "^3.0.0"
       }
     },
-    "node_modules/@types/browser-sync/node_modules/chokidar": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz";,
-      "integrity": 
"sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-      "license": "MIT",
-      "dependencies": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
-      },
-      "engines": {
-        "node": ">= 8.10.0"
-      },
-      "funding": {
-        "url": "https://paulmillr.com/funding/";
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/@types/browser-sync/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": 
"https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz";,
-      "integrity": 
"sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@types/browser-sync/node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz";,
-      "integrity": 
"sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert";
-      }
-    },
-    "node_modules/@types/browser-sync/node_modules/readdirp": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz";,
-      "integrity": 
"sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "license": "MIT",
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
     "node_modules/@types/codemirror": {
       "version": "5.60.15",
       "resolved": 
"https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz";,
@@ -8678,66 +8648,6 @@
         "stream-throttle": "^0.1.3"
       }
     },
-    "node_modules/browser-sync/node_modules/chokidar": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz";,
-      "integrity": 
"sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-      "license": "MIT",
-      "dependencies": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
-      },
-      "engines": {
-        "node": ">= 8.10.0"
-      },
-      "funding": {
-        "url": "https://paulmillr.com/funding/";
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/browser-sync/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": 
"https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz";,
-      "integrity": 
"sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/browser-sync/node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz";,
-      "integrity": 
"sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert";
-      }
-    },
-    "node_modules/browser-sync/node_modules/readdirp": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz";,
-      "integrity": 
"sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "license": "MIT",
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
     "node_modules/browserslist": {
       "version": "4.24.4",
       "resolved": 
"https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz";,
@@ -9033,19 +8943,39 @@
       }
     },
     "node_modules/chokidar": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz";,
-      "integrity": 
"sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
-      "dev": true,
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz";,
+      "integrity": 
"sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
       "license": "MIT",
       "dependencies": {
-        "readdirp": "^4.0.1"
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
       },
       "engines": {
-        "node": ">= 14.16.0"
+        "node": ">= 8.10.0"
       },
       "funding": {
         "url": "https://paulmillr.com/funding/";
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/chokidar/node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": 
"https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz";,
+      "integrity": 
"sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
       }
     },
     "node_modules/chownr": {
@@ -14726,31 +14656,6 @@
         "concat-map": "0.0.1"
       }
     },
-    "node_modules/karma/node_modules/chokidar": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz";,
-      "integrity": 
"sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
-      },
-      "engines": {
-        "node": ">= 8.10.0"
-      },
-      "funding": {
-        "url": "https://paulmillr.com/funding/";
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
     "node_modules/karma/node_modules/cliui": {
       "version": "7.0.4",
       "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz";,
@@ -14830,19 +14735,6 @@
         "url": "https://github.com/sponsors/isaacs";
       }
     },
-    "node_modules/karma/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": 
"https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz";,
-      "integrity": 
"sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
     "node_modules/karma/node_modules/minimatch": {
       "version": "3.1.2",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz";,
@@ -14863,32 +14755,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/karma/node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz";,
-      "integrity": 
"sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert";
-      }
-    },
-    "node_modules/karma/node_modules/readdirp": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz";,
-      "integrity": 
"sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
     "node_modules/karma/node_modules/source-map": {
       "version": "0.6.1",
       "resolved": 
"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";,
@@ -17238,31 +17104,6 @@
         "node": ">=18"
       }
     },
-    "node_modules/ng-packagr/node_modules/chokidar": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz";,
-      "integrity": 
"sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
-      },
-      "engines": {
-        "node": ">= 8.10.0"
-      },
-      "funding": {
-        "url": "https://paulmillr.com/funding/";
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
     "node_modules/ng-packagr/node_modules/commander": {
       "version": "12.1.0",
       "resolved": 
"https://registry.npmjs.org/commander/-/commander-12.1.0.tgz";,
@@ -17352,19 +17193,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/ng-packagr/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": 
"https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz";,
-      "integrity": 
"sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
     "node_modules/ng-packagr/node_modules/locate-path": {
       "version": "5.0.0",
       "resolved": 
"https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz";,
@@ -17423,19 +17251,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/ng-packagr/node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz";,
-      "integrity": 
"sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert";
-      }
-    },
     "node_modules/ng-packagr/node_modules/pkg-dir": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz";,
@@ -17449,19 +17264,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/ng-packagr/node_modules/readdirp": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz";,
-      "integrity": 
"sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
     "node_modules/ng-packagr/node_modules/semver": {
       "version": "6.3.1",
       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz";,
@@ -19142,17 +18944,27 @@
       }
     },
     "node_modules/readdirp": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz";,
-      "integrity": 
"sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
-      "dev": true,
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz";,
+      "integrity": 
"sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "license": "MIT",
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/readdirp/node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz";,
+      "integrity": 
"sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
       "license": "MIT",
       "engines": {
-        "node": ">= 14.18.0"
+        "node": ">=8.6"
       },
       "funding": {
-        "type": "individual",
-        "url": "https://paulmillr.com/funding/";
+        "url": "https://github.com/sponsors/jonschlinkert";
       }
     },
     "node_modules/reflect-metadata": {
@@ -19761,44 +19573,6 @@
         }
       }
     },
-    "node_modules/sass/node_modules/chokidar": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz";,
-      "integrity": 
"sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
-      },
-      "engines": {
-        "node": ">= 8.10.0"
-      },
-      "funding": {
-        "url": "https://paulmillr.com/funding/";
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/sass/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": 
"https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz";,
-      "integrity": 
"sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
     "node_modules/sass/node_modules/immutable": {
       "version": "4.3.7",
       "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz";,
@@ -19806,32 +19580,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/sass/node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz";,
-      "integrity": 
"sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert";
-      }
-    },
-    "node_modules/sass/node_modules/readdirp": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz";,
-      "integrity": 
"sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
     "node_modules/sax": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz";,
@@ -22568,31 +22316,6 @@
         }
       }
     },
-    "node_modules/webpack-dev-server/node_modules/chokidar": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz";,
-      "integrity": 
"sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
-      },
-      "engines": {
-        "node": ">= 8.10.0"
-      },
-      "funding": {
-        "url": "https://paulmillr.com/funding/";
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
     
"node_modules/webpack-dev-server/node_modules/connect-history-api-fallback": {
       "version": "2.0.0",
       "resolved": 
"https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz";,
@@ -22603,19 +22326,6 @@
         "node": ">=0.8"
       }
     },
-    "node_modules/webpack-dev-server/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": 
"https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz";,
-      "integrity": 
"sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
     "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": {
       "version": "2.0.7",
       "resolved": 
"https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz";,
@@ -22641,32 +22351,6 @@
         }
       }
     },
-    "node_modules/webpack-dev-server/node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz";,
-      "integrity": 
"sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert";
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/readdirp": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz";,
-      "integrity": 
"sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
     "node_modules/webpack-dev-server/node_modules/rimraf": {
       "version": "5.0.10",
       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz";,
diff --git a/ui/package.json b/ui/package.json
index 66cd84d0db..caf1ba5d1f 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -27,7 +27,7 @@
     "test-cypress-smoke": "npx cypress run --spec 
'cypress/tests/**/*.smoke.spec.ts' --config baseUrl=http://localhost:8082";,
     "test-cypress-all": "npx cypress run --spec 'cypress/tests/**/*.spec.ts' 
--config baseUrl=http://localhost:8082";,
     "prepare": "cd ../ && husky install ./ui/.husky",
-    "i18n:extract": "ngx-translate-extract --input ./src --output 
./deployment/i18n/{en,de}.json -n --clean --format json",
+    "i18n:extract": "ngx-translate-extract --input ./src --input ./projects 
--output ./deployment/i18n/{en,de}.json -n --clean --format json",
     "i18n:translate": "node ./deployment/i18n-translate.js"
   },
   "dependencies": {
diff --git 
a/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/download/download.component.html
 
b/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/download/download.component.html
index 2e1f30dc39..235bda06b9 100644
--- 
a/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/download/download.component.html
+++ 
b/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/download/download.component.html
@@ -16,7 +16,7 @@
   ~
   -->
 <div fxFlex="100">
-    <ng-template matStepLabel>Download</ng-template>
+    <ng-template matStepLabel>{{ 'Download' | translate }}</ng-template>
     <div
         fxLayout="column"
         fxLayoutAlign="center center"
@@ -28,7 +28,7 @@
             >{{ downloadProgress.downloadedMBs | number: '1.0-2' }} Mb</label
         >
         <button mat-button color="warn" (click)="cancelDownload()">
-            Cancel
+            {{ 'Cancel' | translate }}
         </button>
     </div>
     <div
@@ -37,6 +37,6 @@
         *ngIf="downloadProgress.finished"
     >
         <mat-icon class="icon-check">check</mat-icon>
-        <h5>Download successful</h5>
+        <h5>{{ 'Download successful' | translate }}</h5>
     </div>
 </div>
diff --git 
a/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/select-data/select-data-missing-values/select-data-missing-values.component.html
 
b/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/select-data/select-data-missing-values/select-data-missing-values.component.html
index c507310bd5..aa4a966f02 100644
--- 
a/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/select-data/select-data-missing-values/select-data-missing-values.component.html
+++ 
b/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/select-data/select-data-missing-values/select-data-missing-values.component.html
@@ -16,7 +16,9 @@
   ~
   -->
 
-<sp-configuration-box title="Behaviour in case of missing values">
+<sp-configuration-box
+    [title]="'Behaviour in case of missing values' | translate"
+>
     <mat-radio-group
         class="sp-radio-group"
         [(ngModel)]="dataExportConfig.missingValueBehaviour"
@@ -26,14 +28,14 @@
             class="sp-radio-button"
             data-cy="download-configuration-ignore"
         >
-            Ignore lines with missing value
+            {{ 'Ignore lines with missing value' | translate }}
         </mat-radio-button>
         <mat-radio-button
             value="empty"
             class="sp-radio-button"
             data-cy="download-configuration-empty"
         >
-            Leave entry empty
+            {{ 'Leave entry empty' | translate }}
         </mat-radio-button>
     </mat-radio-group>
 </sp-configuration-box>
diff --git 
a/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/select-data/select-data-range/select-data-range.component.html
 
b/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/select-data/select-data-range/select-data-range.component.html
index eeef53fca5..908be2ae17 100644
--- 
a/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/select-data/select-data-range/select-data-range.component.html
+++ 
b/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/select-data/select-data-range/select-data-range.component.html
@@ -16,7 +16,7 @@
   ~
   -->
 
-<sp-configuration-box title="Data Range">
+<sp-configuration-box [title]="'Data Range' | translate">
     <mat-radio-group
         class="sp-radio-group"
         [(ngModel)]="dataExportConfig.dataRangeConfiguration"
@@ -27,21 +27,21 @@
             data-cy="download-configuration-visible"
             *ngIf="dataExplorerDataConfig"
         >
-            Currently configured query
+            {{ 'Currently configured query' | translate }}
         </mat-radio-button>
         <mat-radio-button
             value="all"
             class="sp-radio-button"
             data-cy="download-configuration-all"
         >
-            All data in database
+            {{ 'All data in database' | translate }}
         </mat-radio-button>
         <mat-radio-button
             value="customInterval"
             class="sp-radio-button"
             data-cy="download-configuration-customInterval"
         >
-            All data in custom time interval
+            {{ 'All data in custom time interval' | translate }}
         </mat-radio-button>
 
         <div
@@ -51,12 +51,12 @@
             *ngIf="dataExportConfig.dataRangeConfiguration === 
'customInterval'"
         >
             <div>
-                <h5>From&nbsp;</h5>
+                <h5>{{ 'From' | translate }}&nbsp;</h5>
                 <sp-date-input [(date)]="dataExportConfig.dateRange.startDate">
                 </sp-date-input>
             </div>
             <div>
-                <h5>To&nbsp;</h5>
+                <h5>{{ 'To' | translate }}</h5>
                 <sp-date-input [(date)]="dataExportConfig.dateRange.endDate">
                 </sp-date-input>
             </div>
diff --git 
a/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/select-format/select-format.component.html
 
b/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/select-format/select-format.component.html
index ba5fe2b074..07655760b2 100644
--- 
a/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/select-format/select-format.component.html
+++ 
b/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/components/select-format/select-format.component.html
@@ -16,9 +16,9 @@
   ~
   -->
 
-<ng-template matStepLabel>Select Format</ng-template>
+<ng-template matStepLabel>{{ 'Select Format' | translate }}</ng-template>
 <div>
-    <sp-configuration-box title="Download Format">
+    <sp-configuration-box [title]="'Download Format' | translate">
         <mat-radio-group
             class="sp-radio-group"
             [(ngModel)]="formatExportConfig.format"
@@ -28,27 +28,27 @@
                 class="sp-radio-button"
                 data-cy="download-configuration-json"
             >
-                JSON
+                {{ 'JSON' | translate }}
             </mat-radio-button>
             <mat-radio-button
                 value="csv"
                 class="sp-radio-button"
                 data-cy="download-configuration-csv"
             >
-                CSV
+                {{ 'CSV' | translate }}
             </mat-radio-button>
             <mat-radio-button
                 value="xlsx"
                 class="sp-radio-button"
                 data-cy="download-configuration-xlsx"
             >
-                Excel (XLSX)
+                {{ 'EXCEL (XLSX)' | translate }}
             </mat-radio-button>
         </mat-radio-group>
     </sp-configuration-box>
 </div>
 <div *ngIf="formatExportConfig.format === 'csv'" class="mt-10">
-    <sp-configuration-box title="Delimiter">
+    <sp-configuration-box [title]="'Delimiter' | translate">
         <mat-radio-group
             [(ngModel)]="formatExportConfig.delimiter"
             class="sp-radio-group"
@@ -72,19 +72,19 @@
     *ngIf="formatExportConfig.format === 'xlsx' && hasReadFilePrivilege"
     fxLayout="column"
 >
-    <sp-configuration-box title="Excel template">
+    <sp-configuration-box [title]="'Excel template' | translate">
         <div fxLayout="column">
             <mat-checkbox
                 [(ngModel)]="formatExportConfig.useTemplate"
                 [disabled]="excelTemplates.length === 0"
             >
-                Use uploaded file template
+                {{ 'Use uploaded file template' | translate }}
             </mat-checkbox>
             @if (formatExportConfig.useTemplate && excelTemplates.length > 0) {
                 <mat-form-field class="mt-10" color="accent">
                     <mat-select
                         [(ngModel)]="formatExportConfig.templateId"
-                        placeholder="Choose template"
+                        [placeholder]="'Choose template' | translate"
                     >
                         <mat-option
                             *ngFor="let template of excelTemplates"
@@ -95,7 +95,9 @@
                     </mat-select>
                 </mat-form-field>
                 <mat-form-field color="accent">
-                    <mat-label>First row index to append data</mat-label>
+                    <mat-label>{{
+                        'First row index to append data' | translate
+                    }}</mat-label>
                     <input
                         matInput
                         [(ngModel)]="formatExportConfig.startRow"
@@ -112,7 +114,7 @@
         formatExportConfig.format === 'csv'
     "
 >
-    <sp-configuration-box title="Header column name">
+    <sp-configuration-box [title]="'Header column name' | translate">
         <mat-radio-group
             [(ngModel)]="formatExportConfig.headerColumnName"
             class="sp-radio-group"
@@ -121,13 +123,17 @@
                 value="key"
                 class="sp-radio-button"
                 data-cy="download-configuration-column-name-key"
-                >Use field key (runtime name) as header column
+                >{{
+                    'Use field key (runtime name) as header column' | translate
+                }}
             </mat-radio-button>
             <mat-radio-button
                 value="label"
                 class="sp-radio-button"
                 data-cy="download-configuration-column-name-label"
-                >Use field label as header column if available
+                >{{
+                    'Use field label as header column if available' | translate
+                }}
             </mat-radio-button>
         </mat-radio-group>
     </sp-configuration-box>
diff --git 
a/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/data-download-dialog.component.html
 
b/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/data-download-dialog.component.html
index 852a3769e1..6f74f131df 100644
--- 
a/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/data-download-dialog.component.html
+++ 
b/ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/data-download-dialog.component.html
@@ -28,7 +28,9 @@
                         [dataExportConfig]="exportConfig.dataExportConfig"
                     >
                     </sp-select-data>
-                    <ng-template matStepLabel>Select Data</ng-template>
+                    <ng-template matStepLabel>{{
+                        'Select Data' | translate
+                    }}</ng-template>
                 </mat-step>
 
                 <mat-step>
@@ -53,7 +55,7 @@
             style="margin-right: 10px"
             (click)="exitDialog()"
         >
-            Close
+            {{ 'Close' | translate }}
         </button>
         <button
             mat-button
@@ -63,7 +65,7 @@
             *ngIf="downloadDialogStepper.selectedIndex === 1"
             (click)="previousStep()"
         >
-            Previous
+            {{ 'Previous' | translate }}
         </button>
         <button
             mat-button
@@ -73,7 +75,7 @@
             (click)="nextStep()"
             data-cy="download-configuration-next-btn"
         >
-            Next
+            {{ 'Next' | translate }}
         </button>
         <button
             mat-button
@@ -83,7 +85,7 @@
             (click)="downloadData()"
             data-cy="download-configuration-download-btn"
         >
-            Download
+            {{ 'Download' | translate }}
         </button>
     </div>
 </div>
diff --git a/ui/projects/streampipes/shared-ui/src/lib/shared-ui.module.ts 
b/ui/projects/streampipes/shared-ui/src/lib/shared-ui.module.ts
index 131f813f35..e4eeca1d76 100644
--- a/ui/projects/streampipes/shared-ui/src/lib/shared-ui.module.ts
+++ b/ui/projects/streampipes/shared-ui/src/lib/shared-ui.module.ts
@@ -82,6 +82,7 @@ import { SpConfigurationBoxComponent } from 
'./components/configuration-box/conf
 import { DateInputComponent } from 
'./components/date-input/date-input.component';
 import { MatCheckboxModule } from '@angular/material/checkbox';
 import { MatInputModule } from '@angular/material/input';
+import { TranslateModule } from '@ngx-translate/core';
 
 @NgModule({
     declarations: [
@@ -148,6 +149,7 @@ import { MatInputModule } from '@angular/material/input';
         MatPaginator,
         MatRadioModule,
         MatSort,
+        TranslateModule.forChild({}),
     ],
     providers: [DefaultMatCalendarRangeStrategy, MatRangeDateSelectionModel],
     exports: [


Reply via email to