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

riemer pushed a commit to branch improve-layout-default-colors
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit b558d0044baa6860cb51aa9f837ab7da86385c0d
Author: Dominik Riemer <[email protected]>
AuthorDate: Tue Sep 30 22:19:32 2025 +0200

    Add german translations to pipeline editor
---
 ui/deployment/i18n/de.json                         | 116 ++++++++++++++++-----
 ui/deployment/i18n/en.json                         | 116 ++++++++++++++++-----
 .../input-schema-panel.component.html              |   4 +-
 .../custom-output-strategy.component.html          |   8 +-
 .../output-strategy/output-strategy.component.html |   2 +-
 .../user-defined-output.component.html             |  10 +-
 ...-assembly-options-pipeline-cache.component.html |  18 ++--
 ...-assembly-options-pipeline-cache.component.scss |   4 +
 .../pipeline-assembly-options.component.html       |  28 ++---
 .../pipeline-element-icon-stand.component.html     |  10 +-
 .../pipeline-element-options.component.html        |  10 +-
 .../pipeline-element-preview.component.html        |   4 +-
 .../components/pipeline/pipeline.component.html    |   2 +-
 .../add-template-dialog.component.html             |   4 +-
 .../compatible-elements.component.html             |   2 +-
 .../dialog/customize/customize.component.html      |  17 +--
 .../matching-error/matching-error.component.html   |  18 ++--
 .../missing-elements-for-tutorial.component.html   |  14 ++-
 ui/src/app/editor/editor.component.html            |   2 +-
 ui/src/app/editor/editor.module.ts                 |   2 +
 20 files changed, 278 insertions(+), 113 deletions(-)

diff --git a/ui/deployment/i18n/de.json b/ui/deployment/i18n/de.json
index 40a7b24452..afd3c49ebb 100644
--- a/ui/deployment/i18n/de.json
+++ b/ui/deployment/i18n/de.json
@@ -50,6 +50,46 @@
   "Stop Pipeline": "Pipeline stoppen",
   "Modify Pipeline": "Pipeline bearbeiten",
   "Delete Pipeline": "Pipeline löschen",
+  "Preparing pipeline editor...": "Pipeline-Editor vorbereiten...",
+  "The tutorial requires pipeline elements that are not yet installed.": "Für 
das Lernprogramm werden Pipeline-Elemente benötigt, die noch nicht installiert 
sind.",
+  "Install the following pipeline elements and start the tutorial again:": 
"Installieren Sie die folgenden Pipeline-Elemente und starten Sie das 
Lernprogramm erneut:",
+  "The input data stream does not satisfy the requirements specified by the 
data processor.": "Der Eingabedatenstrom erfüllt nicht die vom Datenprozessor 
festgelegten Anforderungen.",
+  "Show Details": "Details anzeigen",
+  "Hide Details": "Details ausblenden",
+  "Use template": "Vorlage verwenden",
+  "Show documentation": "Dokumentation anzeigen",
+  "Show only recommended settings": "Nur empfohlene Einstellungen anzeigen",
+  "Save": "Speichern",
+  "Create template": "Vorlage erstellen",
+  "Save template": "Vorlage speichern",
+  "Next": "Weiter",
+  "Waiting for live data": "Warten auf Live-Daten",
+  "Configure Element": "Element konfigurieren",
+  "Delete Element": "Element löschen",
+  "Compatible Elements": "Kompatible Elemente",
+  "Help": "Hilfe",
+  "Find element": "Element finden",
+  "Create new source": "Neue Quelle erstellen",
+  "Sort": "Sortieren",
+  "Group": "Gruppe",
+  "Save Pipeline": "Pipeline speichern",
+  "Save pipeline": "Pipeline speichern",
+  "Auto Layout": "Automatisches Layout",
+  "Add pipeline element": "Pipeline-Element hinzufügen",
+  "Add element": "Element hinzufügen",
+  "Add from template": "Aus Vorlage hinzufügen",
+  "Clear Assembly Area": "Pipeline-Bereich leeren",
+  "Saving pipeline modifications": "Änderungen werden gespeichert",
+  "All pipeline modifications saved.": "Alle Änderungen gespeichert.",
+  "View Topics": "Topics anzeigen",
+  "Select output fields": "Ausgabefelder auswählen",
+  "Use input schema": "Eingabeschema verwenden",
+  "Runtime name": "Laufzeitname",
+  "Runtime type": "Laufzeittyp",
+  "Semantic type": "Semantischer Typ",
+  "Add field": "Feld hinzufügen",
+  "Select all": "Alle auswählen",
+  "Select none": "Keine auswählen",
   "Field": "Feld",
   "Settings": "Einstellungen",
   "Resolution": "Auflösung",
@@ -104,8 +144,11 @@
   "Visual Map Max": "Visuelle Heatmap Minimum",
   "Min": "Min",
   "Max": "Max",
+  "Display Name": "Anzeigename",
   "X": "X",
+  "X Label": "X-Label",
   "Y": "Y",
+  "Y Label": "Y-Label",
   "Warning": "Warnung",
   "This chart tries to load too much data (#Events:": "Dieses Diagramm 
versucht, zu viele Daten zu laden (#Events:",
   "Please change the chart settings or decrease the time range": "Bitte ändern 
Sie die Diagramm-Einstellungen oder ändern Sie die Zeitintervall",
@@ -117,11 +160,9 @@
   "More options": "Weitere Optionen",
   "Download data": "Daten herunterladen",
   "Edit Chart": "Diagramm bearbeiten",
-  "Options": "Optionen",
   "Reset": "Zurücksetzen",
   "Delete Chart": "Diagramm löschen",
   "The current data selection can't be displayed by this chart.": "Die 
aktuelle Auswahl kann in diesem Diagramm nicht angezeigt werden.",
-  "Select all": "Alle auswählen",
   "Deselect all": "Alle abwählen",
   "Field settings": "Feldeinstellungen",
   "Color": "Farbe",
@@ -154,15 +195,13 @@
   "Show chart": "Diagramm anzeigen",
   "Edit chart": "Diagramm bearbeiten",
   "Manage permissions": "Berechtigungen verwalten",
-  "Delete chart": "Diagramm löschen",
   "Clone chart": "Diagramm kopieren",
+  "Delete chart": "Diagramm löschen",
   "Chart Name": "Diagrammname",
-  "Save": "Speichern",
   "Discard": "Verwerfen",
   "Data": "Daten",
   "Visualization": "Visualisierung",
   "Appearance": "Darstellung",
-  "Next": "Weiter",
   "Back": "Zurück",
   "Create": "Erstellen",
   "Chart Type": "Diagrammtyp",
@@ -207,6 +246,7 @@
   "Spread": "Spanne",
   "Unit": "Einheit",
   "Background": "Hintergrund",
+  "Default": "Standard",
   "Text": "Text",
   "Dashboard title": "Dashboardtitel",
   "Title must not be empty": "Titel darf nicht leer sein!",
@@ -220,6 +260,7 @@
   "View mode": "Ansicht",
   "Grid": "Raster",
   "Slides": "Folien",
+  "Options": "Optionen",
   "Edit dashboard": "Dashboard bearbeiten",
   "Show time range selector": "Zeiteinstellungen anzeigen",
   "Hide time range selector": "Zeiteinstellungen ausblenden",
@@ -230,6 +271,7 @@
   "New dashboard": "Neues Dashboard",
   "Dashboards": "Dashboards",
   "Show dashboard": "Dashboard anzeigen",
+  "Kiosk mode": "Kiosk-Modus",
   "Dashboard settings": "Dashboard-Einstellungen",
   "ID": "ID",
   "Output Topics": "Output-Topics",
@@ -248,7 +290,6 @@
   "Show details": "Details anzeigen",
   "Add all direct children": "Alle direkten Unterknoten hinzufügen",
   "(waiting for input)": "(warten auf Input)",
-  "Select none": "Keine auswählen",
   "Possible placeholders:": "Mögliche Platzhalter:",
   "Choose existing file": "Vorhandene Datei auswählen",
   "Upload new file": "Neue Datei hochladen",
@@ -268,28 +309,34 @@
   "Existing templates": "Vorhandene Vorlagen",
   "(no templates available)": "(keine Vorlagen verfügbar)",
   "Store as template": "Als Vorlage speichern",
-  "Here is a preview of your data:": "Vorschau Ihrer Daten:",
-  "Runtime Name": "Laufzeitname",
-  "Field Name": "Feldname",
-  "no data": "keine Daten",
-  "Gathering data for live preview...": "Sammeln von Daten für die 
Live-Vorschau...",
-  "Preview is currently unavailable.": "Die Vorschau ist derzeit nicht 
verfügbar.",
-  "(no documentation available)": "(keine Dokumentation verfügbar)",
   "You can perform a forced stop, which will stop and reset the pipeline 
status.": "Sie können einen erzwungenen Stopp durchführen, der die Pipeline 
anhält und zurücksetzt.",
-  "Show Details": "Details anzeigen",
-  "Hide Details": "Details ausblenden",
   "Force stop": "Stopp erzwingen",
   "Owner": "Eigentümer",
   "Public Element": "Öffentliches Element",
+  "visible to registered users": "sichtbar für registrierte Benutzer",
   "Users": "Nutzer",
   "Authorized Users": "Autorisierte Nutzer",
   "User selection": "Auswahl der Nutzer",
   "Groups": "Gruppen",
   "Authorized Groups": "Autorisierte Gruppen",
   "Group selection": "Auswahl der Gruppe",
+  "Public Link": "Öffentlicher Link",
+  "Allow anonymous access through public link": "Anonymen Zugang über einen 
öffentlichen Link ermöglichen",
+  "URL": "URL",
   "(no log messages available)": "(keine Protokollmeldungen verfügbar)",
   "Site label is required": "Standort-Label ist erforderlich",
   "This site already exists": "Standort existiert bereits",
+  "Start Sync": "Sync starten",
+  "Data Retention Action": "Datenaufbewahrungsaktion",
+  "delete": "löschen",
+  "save": "speichern",
+  "save and delete": "speichern und löschen",
+  "Data Retention Intervals": "Datenaufbewahrungsintervalle",
+  "Export Settings": "Einstellungen exportieren",
+  "Download Format": "Download-Format",
+  "Delimiter": "Trennzeichen",
+  "Select Provider": "Anbieter auswählen",
+  "local": "lokal",
   "success": "Erfolg",
   "error": "Fehler",
   "waiting": "Warten",
@@ -297,17 +344,32 @@
   "Deleting pipeline...": "Löschen der Pipeline...",
   "Stopping pipeline...": "Pipeline stoppen...",
   "Gauge": "Gauge",
+  "The current value displayed in a gauge": "Der aktuelle Wert, der im 
Gauge-Chart angezeigt wird",
   "Table": "Tabelle",
+  "A table displaying the data in rows and columns": "Eine Tabelle, die Daten 
in Zeilen und Spalten anzeigt",
   "Traffic Light": "Ampel",
+  "A traffic light that shows if a value is above/below a threshold": "Eine 
Ampel, die anzeigt, ob ein Wert über/unter einem Schwellenwert liegt",
+  "A simple red/green status light": "Eine einfache rot/grüne Statuslampe",
   "Map": "Karte",
+  "A map visualization for spatial coordinates": "Eine Kartenvisualisierung 
für räumliche Koordinaten",
   "Time-Series Heatmap": "Zeitreihen-Heatmap",
+  "A heatmap that shows values mapped to a color range": "Eine Heatmap, die 
einem Farbbereich zugeordnete Werte anzeigt",
+  "A heatmap that lets you map specific values to a color": "Eine Heatmap, mit 
der Sie bestimmte Werte einer Farbe zuordnen können",
   "Time Series Chart": "Zeitreihen-Diagramm",
+  "A simple chart that shows values on a value/time graph": "Ein einfaches 
Diagramm, das Werte in einem Wert/Zeit-Diagramm anzeigt",
   "Image": "Bild",
+  "Display an image": "Ein Bild anzeigen",
   "Indicator": "Indikator",
+  "The current value displayed as a number": "Der aktuelle Wert wird als Zahl 
angezeigt",
+  "Display points on an x/y plane": "Punkte in einer x/y-Ebene anzeigen",
   "Histogram": "Histogramm",
+  "Shows the distribution of numerical data": "Zeigt die Verteilung der 
numerischen Daten",
   "Pie": "Kreisdiagramm",
+  "A pie chart that shows the frequency of specific values": "Ein 
Kreisdiagramm, das die Häufigkeit bestimmter Werte anzeigt",
   "Value Distribution Heatmap": "Wertverteilung-Heatmap",
+  "A chart that shows the distribution of numerical data as a heatmap": "Ein 
Diagramm, das die Verteilung von numerischen Daten als Heatmap darstellt",
   "2D Density Contour": "2D-Dichteverteilung",
+  "A chart that shows data points as dots on an x/y plane and highlights 
similar points": "Ein Diagramm, das Datenpunkte als Punkte auf einer x/y-Ebene 
darstellt und ähnliche Punkte hervorhebt",
   "No Warning Range defined": "Kein Warnbereich definiert",
   "Current Warning Range: ": "Aktueller Warnbereich: ",
   "to": "zu",
@@ -338,19 +400,10 @@
   "This is a test": "Dies ist ein Test",
   "Error in line {{rowNumber}}. Value for \"{{property}}\" is not supported.": 
"Fehler in Zeile {{Zeilennummer}}. Wert für \"{{Eigenschaft}}\" wird nicht 
unterstützt.",
   "Error in line {{rowNumber}}. Value for \"{{property}}\" is not set.": 
"Fehler in Zeile {{Zeilennummer}}. Wert für \"{{Eigenschaft}}\" ist nicht 
gesetzt.",
-  "Timestamp": "Zeitstempel",
-  "Number": "Nummer",
-  "Boolean": "Boolean",
-  "List": "Liste",
-  "Nested": "Verschachtelt",
-  "TOPICS": "TOPICS",
-  "CODE": "CODE",
   "Select Data": "Daten auswählen",
   "Previous": "Zurück",
   "Download": "Download",
   "Select Format": "Format auswählen",
-  "Download Format": "Download-Format",
-  "Delimiter": "Trennzeichen",
   "Excel template": "Excel Vorlage",
   "Use uploaded file template": "Hochgeladene Vorlage verwenden",
   "Choose template": "Vorlage auswählen",
@@ -378,6 +431,14 @@
   "No more information": "Keine weiteren Informationen",
   "Full details": "Alle Einzelheiten",
   "Full stack trace": "Vollständiger Stack-Trace",
+  "Here is a preview of your data:": "Vorschau Ihrer Daten:",
+  "Runtime Name": "Laufzeitname",
+  "Field Name": "Feldname",
+  "no data": "keine Daten",
+  "Gathering data for live preview...": "Sammeln von Daten für die 
Live-Vorschau...",
+  "Preview is currently unavailable.": "Die Vorschau ist derzeit nicht 
verfügbar.",
+  "(no documentation available)": "(keine Dokumentation verfügbar)",
+  "Show input fields": "Eingabefelder anzeigen",
   "No assets found - use assets to better organize resources!": "Keine Assets 
gefunden - verwenden Sie Assets, um Ressourcen besser zu organisieren!",
   "Manage assets": "Assets verwalten",
   "Asset Browser": "Asset-Browser",
@@ -411,6 +472,13 @@
   "1 min": "1 Minute",
   "5 min": "5 Minuten",
   "30 min": "30 Minuten",
+  "Timestamp": "Zeitstempel",
+  "Number": "Nummer",
+  "Boolean": "Boolean",
+  "List": "Liste",
+  "Nested": "Verschachtelt",
+  "Preview": "Vorschau",
+  "Documentation": "Dokumentation",
   "Error Details": "Fehler-Details",
   "Resources": "Ressourcen",
   "All {{allResourcesAlias}}": "Alle {{allResourcesAlias}}",
diff --git a/ui/deployment/i18n/en.json b/ui/deployment/i18n/en.json
index 78e13a4db4..ec3ee1c10a 100644
--- a/ui/deployment/i18n/en.json
+++ b/ui/deployment/i18n/en.json
@@ -50,6 +50,46 @@
   "Stop Pipeline": null,
   "Modify Pipeline": null,
   "Delete Pipeline": null,
+  "Preparing pipeline editor...": null,
+  "The tutorial requires pipeline elements that are not yet installed.": null,
+  "Install the following pipeline elements and start the tutorial again:": 
null,
+  "The input data stream does not satisfy the requirements specified by the 
data processor.": null,
+  "Show Details": null,
+  "Hide Details": null,
+  "Use template": null,
+  "Show documentation": null,
+  "Show only recommended settings": null,
+  "Save": null,
+  "Create template": null,
+  "Save template": null,
+  "Next": null,
+  "Waiting for live data": null,
+  "Configure Element": null,
+  "Delete Element": null,
+  "Compatible Elements": null,
+  "Help": null,
+  "Find element": null,
+  "Create new source": null,
+  "Sort": null,
+  "Group": null,
+  "Save Pipeline": null,
+  "Save pipeline": null,
+  "Auto Layout": null,
+  "Add pipeline element": null,
+  "Add element": null,
+  "Add from template": null,
+  "Clear Assembly Area": null,
+  "Saving pipeline modifications": null,
+  "All pipeline modifications saved.": null,
+  "View Topics": null,
+  "Select output fields": null,
+  "Use input schema": null,
+  "Runtime name": null,
+  "Runtime type": null,
+  "Semantic type": null,
+  "Add field": null,
+  "Select all": null,
+  "Select none": null,
   "Field": null,
   "Settings": null,
   "Resolution": null,
@@ -104,8 +144,11 @@
   "Visual Map Max": null,
   "Min": null,
   "Max": null,
+  "Display Name": null,
   "X": null,
+  "X Label": null,
   "Y": null,
+  "Y Label": null,
   "Warning": null,
   "This chart tries to load too much data (#Events:": null,
   "Please change the chart settings or decrease the time range": null,
@@ -117,11 +160,9 @@
   "More options": null,
   "Download data": null,
   "Edit Chart": null,
-  "Options": null,
   "Reset": null,
   "Delete Chart": null,
   "The current data selection can't be displayed by this chart.": null,
-  "Select all": null,
   "Deselect all": null,
   "Field settings": null,
   "Color": null,
@@ -154,15 +195,13 @@
   "Show chart": null,
   "Edit chart": null,
   "Manage permissions": null,
-  "Delete chart": null,
   "Clone chart": null,
+  "Delete chart": null,
   "Chart Name": null,
-  "Save": null,
   "Discard": null,
   "Data": null,
   "Visualization": null,
   "Appearance": null,
-  "Next": null,
   "Back": null,
   "Create": null,
   "Chart Type": null,
@@ -207,6 +246,7 @@
   "Spread": null,
   "Unit": null,
   "Background": null,
+  "Default": null,
   "Text": null,
   "Dashboard title": null,
   "Title must not be empty": null,
@@ -220,6 +260,7 @@
   "View mode": null,
   "Grid": null,
   "Slides": null,
+  "Options": null,
   "Edit dashboard": null,
   "Show time range selector": null,
   "Hide time range selector": null,
@@ -230,6 +271,7 @@
   "New dashboard": null,
   "Dashboards": null,
   "Show dashboard": null,
+  "Kiosk mode": null,
   "Dashboard settings": null,
   "ID": null,
   "Output Topics": null,
@@ -248,7 +290,6 @@
   "Show details": null,
   "Add all direct children": null,
   "(waiting for input)": null,
-  "Select none": null,
   "Possible placeholders:": null,
   "Choose existing file": null,
   "Upload new file": null,
@@ -268,28 +309,34 @@
   "Existing templates": null,
   "(no templates available)": null,
   "Store as template": null,
-  "Here is a preview of your data:": null,
-  "Runtime Name": null,
-  "Field Name": null,
-  "no data": null,
-  "Gathering data for live preview...": null,
-  "Preview is currently unavailable.": null,
-  "(no documentation available)": null,
   "You can perform a forced stop, which will stop and reset the pipeline 
status.": null,
-  "Show Details": null,
-  "Hide Details": null,
   "Force stop": null,
   "Owner": null,
   "Public Element": null,
+  "visible to registered users": null,
   "Users": null,
   "Authorized Users": null,
   "User selection": null,
   "Groups": null,
   "Authorized Groups": null,
   "Group selection": null,
+  "Public Link": null,
+  "Allow anonymous access through public link": null,
+  "URL": null,
   "(no log messages available)": null,
   "Site label is required": null,
   "This site already exists": null,
+  "Start Sync": null,
+  "Data Retention Action": null,
+  "delete": null,
+  "save": null,
+  "save and delete": null,
+  "Data Retention Intervals": null,
+  "Export Settings": null,
+  "Download Format": null,
+  "Delimiter": null,
+  "Select Provider": null,
+  "local": null,
   "success": null,
   "error": null,
   "waiting": null,
@@ -297,17 +344,32 @@
   "Deleting pipeline...": null,
   "Stopping pipeline...": null,
   "Gauge": null,
+  "The current value displayed in a gauge": null,
   "Table": null,
+  "A table displaying the data in rows and columns": null,
   "Traffic Light": null,
+  "A traffic light that shows if a value is above/below a threshold": null,
+  "A simple red/green status light": null,
   "Map": null,
+  "A map visualization for spatial coordinates": null,
   "Time-Series Heatmap": null,
+  "A heatmap that shows values mapped to a color range": null,
+  "A heatmap that lets you map specific values to a color": null,
   "Time Series Chart": null,
+  "A simple chart that shows values on a value/time graph": null,
   "Image": null,
+  "Display an image": null,
   "Indicator": null,
+  "The current value displayed as a number": null,
+  "Display points on an x/y plane": null,
   "Histogram": null,
+  "Shows the distribution of numerical data": null,
   "Pie": null,
+  "A pie chart that shows the frequency of specific values": null,
   "Value Distribution Heatmap": null,
+  "A chart that shows the distribution of numerical data as a heatmap": null,
   "2D Density Contour": null,
+  "A chart that shows data points as dots on an x/y plane and highlights 
similar points": null,
   "No Warning Range defined": null,
   "Current Warning Range: ": null,
   "to": null,
@@ -338,19 +400,10 @@
   "This is a test": null,
   "Error in line {{rowNumber}}. Value for \"{{property}}\" is not supported.": 
"Error in line {{rowNumber}}. Value for \"{{property}}\" is not supported.",
   "Error in line {{rowNumber}}. Value for \"{{property}}\" is not set.": 
"Error in line {{rowNumber}}. Value for \"{{property}}\" is not set.",
-  "Timestamp": null,
-  "Number": null,
-  "Boolean": null,
-  "List": null,
-  "Nested": null,
-  "TOPICS": null,
-  "CODE": null,
   "Select Data": null,
   "Previous": null,
   "Download": null,
   "Select Format": null,
-  "Download Format": null,
-  "Delimiter": null,
   "Excel template": null,
   "Use uploaded file template": null,
   "Choose template": null,
@@ -378,6 +431,14 @@
   "No more information": null,
   "Full details": null,
   "Full stack trace": null,
+  "Here is a preview of your data:": null,
+  "Runtime Name": null,
+  "Field Name": null,
+  "no data": null,
+  "Gathering data for live preview...": null,
+  "Preview is currently unavailable.": null,
+  "(no documentation available)": null,
+  "Show input fields": null,
   "No assets found - use assets to better organize resources!": null,
   "Manage assets": null,
   "Asset Browser": null,
@@ -411,6 +472,13 @@
   "1 min": null,
   "5 min": null,
   "30 min": null,
+  "Timestamp": null,
+  "Number": null,
+  "Boolean": null,
+  "List": null,
+  "Nested": null,
+  "Preview": null,
+  "Documentation": null,
   "Error Details": null,
   "Resources": null,
   "All {{allResourcesAlias}}": "All {{allResourcesAlias}}",
diff --git 
a/ui/projects/streampipes/shared-ui/src/lib/components/input-schema-panel/input-schema-panel.component.html
 
b/ui/projects/streampipes/shared-ui/src/lib/components/input-schema-panel/input-schema-panel.component.html
index e6ed4c98b3..f013606dbf 100644
--- 
a/ui/projects/streampipes/shared-ui/src/lib/components/input-schema-panel/input-schema-panel.component.html
+++ 
b/ui/projects/streampipes/shared-ui/src/lib/components/input-schema-panel/input-schema-panel.component.html
@@ -22,7 +22,9 @@
             <mat-expansion-panel-header>
                 <mat-panel-title
                     ><mat-icon color="accent">list</mat-icon
-                    ><b>&nbsp;Show input fields</b></mat-panel-title
+                    ><b
+                        >&nbsp;{{ 'Show input fields' | translate }}</b
+                    ></mat-panel-title
                 >
             </mat-expansion-panel-header>
             @for (inputStream of inputStreams; track $index) {
diff --git 
a/ui/src/app/editor/components/output-strategy/custom-output/custom-output-strategy.component.html
 
b/ui/src/app/editor/components/output-strategy/custom-output/custom-output-strategy.component.html
index 4ee0c5678c..c87e3ee42c 100644
--- 
a/ui/src/app/editor/components/output-strategy/custom-output/custom-output-strategy.component.html
+++ 
b/ui/src/app/editor/components/output-strategy/custom-output/custom-output-strategy.component.html
@@ -16,7 +16,7 @@
   ~
   -->
 <div fxFlex="100" fxLayout="column">
-    <div fxFlex="100" fxLayout="row" fxLayoutAlign="start center">
+    <div fxFlex="100" fxLayout="row" fxLayoutAlign="start center" 
class="mb-10">
         <h5 style="margin-right: 10px">
             {{ selectedElement.inputStreams[0].name || '' }}
         </h5>
@@ -25,10 +25,10 @@
             mat-flat-button
             class="small-button"
             (click)="selectAll(collectedPropertiesFirstStream)"
-            style="margin-right: 10px; margin-left: 10px"
+            style="margin-right: 10px"
             [disabled]="restrictedEditMode"
         >
-            Select all
+            {{ 'Select all' | translate }}
         </button>
         <button
             mat-flat-button
@@ -36,7 +36,7 @@
             (click)="deselectAll(collectedPropertiesFirstStream)"
             [disabled]="restrictedEditMode"
         >
-            Select none
+            {{ 'Select none' | translate }}
         </button>
     </div>
     <div *ngFor="let property of collectedPropertiesFirstStream; let i = 
index">
diff --git 
a/ui/src/app/editor/components/output-strategy/output-strategy.component.html 
b/ui/src/app/editor/components/output-strategy/output-strategy.component.html
index ce736ced76..515d9da71a 100644
--- 
a/ui/src/app/editor/components/output-strategy/output-strategy.component.html
+++ 
b/ui/src/app/editor/components/output-strategy/output-strategy.component.html
@@ -19,7 +19,7 @@
 <div fxFlex="100" fxLayout="column" *ngIf="customizableOutputStrategy">
     <div fxFlex="100" fxLayout="column" class="static-property-panel">
         <div fxFlex="100" fxLayout="column">
-            <b>Select output</b>
+            <b>{{ 'Select output fields' | translate }}</b>
         </div>
         <div fxFlex="100">
             <div
diff --git 
a/ui/src/app/editor/components/output-strategy/user-defined-output/user-defined-output.component.html
 
b/ui/src/app/editor/components/output-strategy/user-defined-output/user-defined-output.component.html
index 9ae453b2fd..5b459a3def 100644
--- 
a/ui/src/app/editor/components/output-strategy/user-defined-output/user-defined-output.component.html
+++ 
b/ui/src/app/editor/components/output-strategy/user-defined-output/user-defined-output.component.html
@@ -33,7 +33,7 @@
             [disabled]="restrictedEditMode"
             data-cy="use-input-schema"
         >
-            Use input schema
+            {{ 'Use input schema' | translate }}
         </button>
     </div>
 
@@ -45,7 +45,7 @@
     >
         <div fxLayout="column" fxFlex="30">
             <mat-form-field fxFlex color="accent">
-                <mat-label>Runtime name</mat-label>
+                <mat-label>{{ 'Runtime name' | translate }}</mat-label>
                 <input
                     [(ngModel)]="ep.runtimeName"
                     data-cy="runtime-name"
@@ -56,7 +56,7 @@
         </div>
         <div fxLayout="column" fxFlex="30">
             <mat-form-field class="example-full-width" color="accent">
-                <mat-label>Runtime type</mat-label>
+                <mat-label>{{ 'Runtime type' | translate }}</mat-label>
                 <mat-select
                     [(ngModel)]="ep.runtimeType"
                     [disabled]="restrictedEditMode"
@@ -73,7 +73,7 @@
         </div>
         <div fxLayout="column" fxFlex="30">
             <mat-form-field fxFlex color="accent">
-                <mat-label>Semantic type</mat-label>
+                <mat-label>{{ 'Semantic type' | translate }}</mat-label>
                 <input
                     [(ngModel)]="ep.semanticType"
                     [disabled]="restrictedEditMode"
@@ -103,7 +103,7 @@
             data-cy="add-field"
         >
             <mat-icon class="icon">add</mat-icon>
-            <span>Add field</span>
+            <span>{{ 'Add field' | translate }}</span>
         </button>
     </div>
 </div>
diff --git 
a/ui/src/app/editor/components/pipeline-assembly/pipeline-assembly-options/pipeline-assembly-options-pipeline-cache/pipeline-assembly-options-pipeline-cache.component.html
 
b/ui/src/app/editor/components/pipeline-assembly/pipeline-assembly-options/pipeline-assembly-options-pipeline-cache/pipeline-assembly-options-pipeline-cache.component.html
index 7a450fafce..f5f1ce844a 100644
--- 
a/ui/src/app/editor/components/pipeline-assembly/pipeline-assembly-options/pipeline-assembly-options-pipeline-cache/pipeline-assembly-options-pipeline-cache.component.html
+++ 
b/ui/src/app/editor/components/pipeline-assembly/pipeline-assembly-options/pipeline-assembly-options-pipeline-cache/pipeline-assembly-options-pipeline-cache.component.html
@@ -34,13 +34,17 @@
                 [diameter]="15"
                 *ngIf="pipelineCacheRunning"
             ></mat-spinner>
-            <span
-                >&nbsp;{{
-                    pipelineCacheRunning
-                        ? '&nbsp;Saving pipeline modifications'
-                        : 'All pipeline modifications saved.'
-                }}</span
-            >
+            @if (pipelineCacheRunning) {
+                <span class="modification-status"
+                    >'&nbsp;{{
+                        'Saving pipeline modifications' | translate
+                    }}</span
+                >
+            } @else {
+                <span class="modification-status">{{
+                    'All pipeline modifications saved.' | translate
+                }}</span>
+            }
         </div>
     </div>
 </div>
diff --git 
a/ui/src/app/editor/components/pipeline-assembly/pipeline-assembly-options/pipeline-assembly-options-pipeline-cache/pipeline-assembly-options-pipeline-cache.component.scss
 
b/ui/src/app/editor/components/pipeline-assembly/pipeline-assembly-options/pipeline-assembly-options-pipeline-cache/pipeline-assembly-options-pipeline-cache.component.scss
index 28eafec0a9..706ee88f21 100644
--- 
a/ui/src/app/editor/components/pipeline-assembly/pipeline-assembly-options/pipeline-assembly-options-pipeline-cache/pipeline-assembly-options-pipeline-cache.component.scss
+++ 
b/ui/src/app/editor/components/pipeline-assembly/pipeline-assembly-options/pipeline-assembly-options-pipeline-cache/pipeline-assembly-options-pipeline-cache.component.scss
@@ -24,3 +24,7 @@
     height: 100%;
     margin-left: 15px;
 }
+
+.modification-status {
+    font-size: var(--mat-sys-body-medium-size);
+}
diff --git 
a/ui/src/app/editor/components/pipeline-assembly/pipeline-assembly-options/pipeline-assembly-options.component.html
 
b/ui/src/app/editor/components/pipeline-assembly/pipeline-assembly-options/pipeline-assembly-options.component.html
index 7e555b4488..aee6656d67 100644
--- 
a/ui/src/app/editor/components/pipeline-assembly/pipeline-assembly-options/pipeline-assembly-options.component.html
+++ 
b/ui/src/app/editor/components/pipeline-assembly/pipeline-assembly-options/pipeline-assembly-options.component.html
@@ -19,7 +19,7 @@
 <div fxFlex="100" fxLayout="row" fxLayoutAlign="start center">
     <button
         mat-flat-button
-        matTooltip="Save Pipeline"
+        [matTooltip]="'Save Pipeline' | translate"
         [matTooltipPosition]="'above'"
         [disabled]="!pipelineValidationService.pipelineValid"
         (click)="savePipelineEmitter.emit()"
@@ -28,57 +28,61 @@
     >
         <div fxLayoutAlign="start center" fxLayout="row">
             <i class="material-icons">save</i>
-            <span>&nbsp;Save pipeline</span>
+            <span>&nbsp;{{ 'Save pipeline' | translate }}</span>
         </div>
     </button>
     <span class="assembly-options-divider"></span>
     <button
         mat-flat-button
         class="mat-basic"
-        matTooltip="Data Preview"
+        [matTooltip]="'Data Preview' | translate"
         matTooltipPosition="above"
         (click)="togglePreviewEmitter.emit()"
         [disabled]="isPipelineAssemblyEmpty()"
     >
         <div fxLayoutAlign="start center" fxLayout="row">
             <i class="material-icons">visibility</i>
-            <span *ngIf="!previewModeActive">&nbsp;Enable live preview</span>
-            <span *ngIf="previewModeActive">&nbsp;Disable live preview</span>
+            <span *ngIf="!previewModeActive"
+                >&nbsp;{{ 'Enable live preview' | translate }}</span
+            >
+            <span *ngIf="previewModeActive"
+                >&nbsp;{{ 'Disable live preview' | translate }}</span
+            >
         </div>
     </button>
     <span class="assembly-options-divider"></span>
     <button
         mat-flat-button
         class="mat-basic"
-        matTooltip="Auto Layout"
+        [matTooltip]="'Auto Layout' | translate"
         [matTooltipPosition]="'above'"
         (click)="autoLayout()"
     >
         <i class="material-icons">settings_overscan</i>
-        <span>&nbsp;Auto Layout</span>
+        <span>&nbsp;{{ 'Auto Layout' | translate }}</span>
     </button>
     <span class="assembly-options-divider"></span>
     <button
         mat-flat-button
-        matTooltip="Add pipeline element"
+        [matTooltip]="'Add pipeline element' | translate"
         class="mat-basic mr-10"
         [matTooltipPosition]="'above'"
         (click)="openDiscoverDialog()"
         data-cy="sp-editor-add-pipeline-element"
     >
         <i class="material-icons">add</i>
-        <span>&nbsp;Add element</span>
+        <span>&nbsp;{{ 'Add element' | translate }}</span>
     </button>
     <button
         mat-flat-button
         class="mat-basic"
-        matTooltip="Add template"
+        [matTooltip]="'Add from template' | translate"
         [matTooltipPosition]="'above'"
         (click)="openAddTemplateDialog()"
         data-cy="sp-editor-add-template"
     >
         <i class="material-icons">add</i>
-        <span>&nbsp;Add template</span>
+        <span>&nbsp;{{ 'Add from template' | translate }}</span>
     </button>
     <sp-pipeline-assembly-options-pipeline-cache
         [rawPipelineModel]="rawPipelineModel"
@@ -89,7 +93,7 @@
     <span fxFlex></span>
     <button
         mat-icon-button
-        matTooltip="Clear Assembly Area"
+        [matTooltip]="'Clear Assembly Area' | translate"
         [matTooltipPosition]="'above'"
         [disabled]="editorService.pipelineAssemblyEmpty"
         (click)="showClearAssemblyConfirmDialog($event)"
diff --git 
a/ui/src/app/editor/components/pipeline-element-icon-stand/pipeline-element-icon-stand.component.html
 
b/ui/src/app/editor/components/pipeline-element-icon-stand/pipeline-element-icon-stand.component.html
index f0519002b6..8ac914d86f 100644
--- 
a/ui/src/app/editor/components/pipeline-element-icon-stand/pipeline-element-icon-stand.component.html
+++ 
b/ui/src/app/editor/components/pipeline-element-icon-stand/pipeline-element-icon-stand.component.html
@@ -40,7 +40,7 @@
                             matInput
                             type="text"
                             (keyup)="makeDraggable()"
-                            placeholder="Find element"
+                            [placeholder]="'Find element' | translate"
                             [(ngModel)]="elementFilter"
                         />
                         <mat-icon matPrefix color="accent">search</mat-icon>
@@ -79,7 +79,7 @@
                     <span fxFlex></span>
                     <button
                         mat-icon-button
-                        matTooltip="Create new source"
+                        [matTooltip]="'Create new source' | translate"
                         (click)="navigateToConnect()"
                         *ngIf="availableType.title === availableTypes[0].title"
                     >
@@ -112,7 +112,7 @@
                         class="panel-options"
                     >
                         <small
-                            >Sort:&nbsp;<a
+                            >{{ 'Sort' | translate }}:&nbsp;<a
                                 (click)="changeSorting(availableType, 'group')"
                                 class="sort-option"
                                 [ngClass]="
@@ -120,7 +120,7 @@
                                         ? 'sort-selected'
                                         : 'sort-unselected'
                                 "
-                                >Group</a
+                                >{{ 'Group' | translate }}</a
                             >&nbsp;|&nbsp;
                             <a
                                 (click)="changeSorting(availableType, 'name')"
@@ -130,7 +130,7 @@
                                         ? 'sort-selected'
                                         : 'sort-unselected'
                                 "
-                                >Name</a
+                                >{{ 'Name' | translate }}</a
                             ></small
                         >
                     </div>
diff --git 
a/ui/src/app/editor/components/pipeline-element-options/pipeline-element-options.component.html
 
b/ui/src/app/editor/components/pipeline-element-options/pipeline-element-options.component.html
index 5f01b2a65f..e01d71c7ba 100644
--- 
a/ui/src/app/editor/components/pipeline-element-options/pipeline-element-options.component.html
+++ 
b/ui/src/app/editor/components/pipeline-element-options/pipeline-element-options.component.html
@@ -33,7 +33,7 @@
                 <button
                     class="options-icon-button"
                     mat-icon-button
-                    matTooltip="Configure Element"
+                    [matTooltip]="'Configure Element' | translate"
                     [matTooltipPosition]="'above'"
                     (click)="customizeElement(pipelineElement)"
                     data-cy="settings-pipeline-element-button"
@@ -49,7 +49,7 @@
                 <button
                     class="options-icon-button"
                     mat-icon-button
-                    matTooltip="Configure Element"
+                    [matTooltip]="'Configure Element' | translate"
                     [matTooltipPosition]="'above'"
                     (click)="openCustomizeStreamDialog()"
                 >
@@ -60,7 +60,7 @@
                 <button
                     class="options-icon-button"
                     mat-icon-button
-                    matTooltip="Delete Element"
+                    [matTooltip]="'Delete Element' | translate"
                     [matTooltipPosition]="'above'"
                     (click)="removeElement(pipelineElement)"
                 >
@@ -75,7 +75,7 @@
                 <button
                     class="options-icon-button"
                     mat-icon-button
-                    matTooltip="Compatible Elements"
+                    [matTooltip]="'Compatible Elements' | translate"
                     [matTooltipPosition]="'below'"
                     [disabled]="
                         !possibleElements || possibleElements.length === 0
@@ -95,7 +95,7 @@
             <span class="options-button help-button" style="z-index: 10">
                 <button
                     class="options-icon-button"
-                    matTooltip="Help"
+                    [matTooltip]="'Help' | translate"
                     [matTooltipPosition]="'below'"
                     mat-icon-button
                     (click)="openHelpDialog()"
diff --git 
a/ui/src/app/editor/components/pipeline-element-preview/pipeline-element-preview.component.html
 
b/ui/src/app/editor/components/pipeline-element-preview/pipeline-element-preview.component.html
index a58235feaa..edb0adc689 100644
--- 
a/ui/src/app/editor/components/pipeline-element-preview/pipeline-element-preview.component.html
+++ 
b/ui/src/app/editor/components/pipeline-element-preview/pipeline-element-preview.component.html
@@ -24,7 +24,9 @@
         fxLayoutAlign="center center"
     >
         <mat-spinner [diameter]="20" color="accent"></mat-spinner>
-        <span class="preview-table mt-10">Waiting for live data...</span>
+        <span class="preview-table mt-10"
+            >{{ 'Waiting for live data' | translate }}...</span
+        >
     </div>
     <table class="row-border hover preview-table" *ngIf="runtimeData">
         <tbody id="preview-data-rows-id">
diff --git a/ui/src/app/editor/components/pipeline/pipeline.component.html 
b/ui/src/app/editor/components/pipeline/pipeline.component.html
index 8b77b5b017..63673beb9c 100644
--- a/ui/src/app/editor/components/pipeline/pipeline.component.html
+++ b/ui/src/app/editor/components/pipeline/pipeline.component.html
@@ -46,7 +46,7 @@
         <button
             class="topics-icon-button"
             mat-icon-button
-            matTooltip="View Topics"
+            [matTooltip]="'View Topics' | translate"
             [matTooltipPosition]="'above'"
             (click)="openTopicsDialog(pipelineElementConfig)"
         >
diff --git 
a/ui/src/app/editor/dialog/add-template-dialog/add-template-dialog.component.html
 
b/ui/src/app/editor/dialog/add-template-dialog/add-template-dialog.component.html
index 059742c958..d816cb849b 100644
--- 
a/ui/src/app/editor/dialog/add-template-dialog/add-template-dialog.component.html
+++ 
b/ui/src/app/editor/dialog/add-template-dialog/add-template-dialog.component.html
@@ -28,9 +28,9 @@
     </div>
     <mat-divider></mat-divider>
     <div class="sp-dialog-actions">
-        <button mat-flat-button color="accent">Next</button>
+        <button mat-flat-button color="accent">{{ 'Next' | translate 
}}</button>
         <button mat-button mat-flat-button class="mat-basic" (click)="close()">
-            Cancel
+            {{ 'Cancel' | translate }}
         </button>
     </div>
 </div>
diff --git 
a/ui/src/app/editor/dialog/compatible-elements/compatible-elements.component.html
 
b/ui/src/app/editor/dialog/compatible-elements/compatible-elements.component.html
index 548a071960..601414709c 100644
--- 
a/ui/src/app/editor/dialog/compatible-elements/compatible-elements.component.html
+++ 
b/ui/src/app/editor/dialog/compatible-elements/compatible-elements.component.html
@@ -61,7 +61,7 @@
     <mat-divider></mat-divider>
     <div class="sp-dialog-actions">
         <button mat-button mat-flat-button class="mat-basic" (click)="hide()">
-            Cancel
+            {{ 'Cancel' | translate }}
         </button>
     </div>
 </div>
diff --git a/ui/src/app/editor/dialog/customize/customize.component.html 
b/ui/src/app/editor/dialog/customize/customize.component.html
index 4a9e1452f1..8eef9babd3 100644
--- a/ui/src/app/editor/dialog/customize/customize.component.html
+++ b/ui/src/app/editor/dialog/customize/customize.component.html
@@ -34,7 +34,7 @@
                         color="accent"
                         appearance="outline"
                     >
-                        <mat-label>Use template</mat-label>
+                        <mat-label>{{ 'Use template' | translate }}</mat-label>
                         <mat-select
                             (selectionChange)="loadTemplate($event)"
                             [(value)]="selectedTemplate"
@@ -56,14 +56,14 @@
                         color="accent"
                         [disabled]="!pipelineElement.payload.includesAssets"
                     >
-                        Show documentation
+                        {{ 'Show documentation' | translate }}
                     </mat-slide-toggle>
                     <span>&nbsp;</span>
                     <mat-slide-toggle
                         [(ngModel)]="displayRecommended"
                         color="accent"
                     >
-                        Show only recommended settings
+                        {{ 'Show only recommended settings' | translate }}
                     </mat-slide-toggle>
                 </div>
             </div>
@@ -159,7 +159,8 @@
                 [disabled]="!formValid"
                 data-cy="sp-element-configuration-save"
             >
-                <i class="material-icons">save</i><span>&nbsp;Save</span>
+                <i class="material-icons">save</i
+                ><span>&nbsp;{{ 'Save' | translate }}</span>
             </button>
             <button
                 mat-button
@@ -168,7 +169,7 @@
                 (click)="close()"
                 data-cy="cancel-customize"
             >
-                Cancel
+                {{ 'Cancel' | translate }}
             </button>
             <div fxFlex></div>
             <button
@@ -180,7 +181,7 @@
                 (click)="triggerTemplateMode()"
             >
                 <i class="material-icons">add_circle_outline</i
-                ><span>&nbsp;Create template</span>
+                ><span>&nbsp;{{ 'Create template' | translate }}</span>
             </button>
         </div>
         <div fxLayout="row" *ngIf="templateMode">
@@ -194,7 +195,7 @@
                 data-cy="save-template"
             >
                 <i class="material-icons">save</i
-                ><span>&nbsp;Save template</span>
+                ><span>&nbsp;{{ 'Save template' | translate }}</span>
             </button>
             <button
                 mat-button
@@ -202,7 +203,7 @@
                 class="mat-basic"
                 (click)="cancelTemplateMode()"
             >
-                Cancel
+                {{ 'Cancel' | translate }}
             </button>
         </div>
     </div>
diff --git 
a/ui/src/app/editor/dialog/matching-error/matching-error.component.html 
b/ui/src/app/editor/dialog/matching-error/matching-error.component.html
index bd64a3fff0..0d4ed3be4d 100644
--- a/ui/src/app/editor/dialog/matching-error/matching-error.component.html
+++ b/ui/src/app/editor/dialog/matching-error/matching-error.component.html
@@ -19,10 +19,12 @@
 <div class="sp-dialog-container">
     <div class="sp-dialog-content p-15">
         <div>
-            <h4>These elements can't be connected.</h4>
+            <h4>{{ 'These elements can't be connected.' | translate }}</h4>
             <h4>
-                The input data stream does not satisfy the requirements
-                specified by the data processor.
+                {{
+                    'The input data stream does not satisfy the requirements
+                specified by the data processor.' | translate
+                }}
             </h4>
             <button
                 mat-button
@@ -30,8 +32,12 @@
                 type="button"
                 class="md-accent"
             >
-                <div *ngIf="!statusDetailsVisible">Show Details</div>
-                <div *ngIf="statusDetailsVisible">Hide Details</div>
+                <div *ngIf="!statusDetailsVisible">
+                    {{ 'Show Details' | translate }}
+                </div>
+                <div *ngIf="statusDetailsVisible">
+                    {{ 'Hide Details' | translate }}
+                </div>
             </button>
             <div *ngIf="statusDetailsVisible">
                 <div *ngFor="let entry of notifications">
@@ -54,7 +60,7 @@
     <mat-divider></mat-divider>
     <div class="sp-dialog-actions actions-align-right">
         <button mat-button mat-flat-button class="mat-basic" (click)="close()">
-            Close
+            {{ 'Close' | translate }}
         </button>
     </div>
 </div>
diff --git 
a/ui/src/app/editor/dialog/missing-elements-for-tutorial/missing-elements-for-tutorial.component.html
 
b/ui/src/app/editor/dialog/missing-elements-for-tutorial/missing-elements-for-tutorial.component.html
index 9f5f00b5f0..a15965fc66 100644
--- 
a/ui/src/app/editor/dialog/missing-elements-for-tutorial/missing-elements-for-tutorial.component.html
+++ 
b/ui/src/app/editor/dialog/missing-elements-for-tutorial/missing-elements-for-tutorial.component.html
@@ -21,12 +21,16 @@
         <div fxFlex="100" fxLayout="column">
             <div fxFlex="100" fxLayout="column">
                 <h4>
-                    The tutorial requires pipeline elements that are not yet
-                    installed.
+                    {{
+                        'The tutorial requires pipeline elements that are not 
yet installed.'
+                            | translate
+                    }}
                 </h4>
                 <h5>
-                    Install the following pipeline elements and start the
-                    tutorial again:
+                    {{
+                        'Install the following pipeline elements and start the 
tutorial again:'
+                            | translate
+                    }}
                 </h5>
                 <div *ngFor="let missingElement of missingElementsForTutorial">
                     <li>
@@ -40,7 +44,7 @@
     <mat-divider></mat-divider>
     <div class="sp-dialog-actions actions-align-right">
         <button mat-button mat-flat-button class="mat-basic" (click)="close()">
-            Close
+            {{ 'Close' | translate }}
         </button>
     </div>
 </div>
diff --git a/ui/src/app/editor/editor.component.html 
b/ui/src/app/editor/editor.component.html
index b334d81895..68bdb90284 100644
--- a/ui/src/app/editor/editor.component.html
+++ b/ui/src/app/editor/editor.component.html
@@ -28,7 +28,7 @@
             color="accent"
             mode="indeterminate"
         ></mat-spinner>
-        <p>Preparing pipeline editor...</p>
+        <p>{{ 'Preparing pipeline editor...' | translate }}</p>
     </div>
     <div
         *ngIf="allElementsLoaded"
diff --git a/ui/src/app/editor/editor.module.ts 
b/ui/src/app/editor/editor.module.ts
index 3e5e86eee4..f9c735cef7 100644
--- a/ui/src/app/editor/editor.module.ts
+++ b/ui/src/app/editor/editor.module.ts
@@ -83,6 +83,7 @@ import { DroppedPipelineElementComponent } from 
'./components/pipeline/dropped-p
 import { AddTemplateDialogComponent } from 
'./dialog/add-template-dialog/add-template-dialog.component';
 import { TemplateSelectionComponent } from 
'./dialog/add-template-dialog/template-selection/template-selection.component';
 import { SharedUiModule } from '@streampipes/shared-ui';
+import { TranslatePipe } from '@ngx-translate/core';
 
 @NgModule({
     imports: [
@@ -123,6 +124,7 @@ import { SharedUiModule } from '@streampipes/shared-ui';
         ReactiveFormsModule,
         PlatformServicesModule,
         SharedUiModule,
+        TranslatePipe,
     ],
     declarations: [
         AddTemplateDialogComponent,


Reply via email to