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

riemer pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/streampipes.git


The following commit(s) were added to refs/heads/dev by this push:
     new f532080c7f feat: Add translations to the Connect view (#3868)
f532080c7f is described below

commit f532080c7f49a84ed76179e7d624741027f32c49
Author: Dominik Riemer <[email protected]>
AuthorDate: Tue Oct 21 15:43:50 2025 +0200

    feat: Add translations to the Connect view (#3868)
---
 ui/deployment/i18n/de.json                         | 88 ++++++++++++++++------
 ui/deployment/i18n/en.json                         | 81 +++++++++++++++-----
 .../datalake-configuration.component.html          |  7 +-
 .../adapter-configuration.component.html           | 22 +++---
 .../adapter-configuration.component.ts             |  6 ++
 .../adapter-deployment-settings.component.html     |  6 +-
 .../adapter-settings.component.html                | 10 +--
 .../error-message/error-message.component.html     |  6 +-
 .../event-property-row.component.html              | 18 +++--
 .../adapter-details-code.component.html            |  2 +-
 .../adapter-details-data.component.html            |  4 +-
 .../adapter-details-logs.component.html            |  2 +-
 .../adapter-details-metrics.component.html         |  6 +-
 .../adapter-description.component.html             |  8 +-
 .../data-marketplace.component.html                |  4 +-
 .../existing-adapters.component.html               |  6 +-
 .../filter-toolbar/filter-toolbar.component.html   |  2 +-
 .../login/components/login/login.component.html    | 36 +++++----
 .../components/register/register.component.html    | 22 +++---
 .../restore-password.component.html                | 26 ++++---
 .../login/components/terms/terms.component.html    |  4 +-
 ui/src/app/login/login.module.ts                   |  2 +
 22 files changed, 246 insertions(+), 122 deletions(-)

diff --git a/ui/deployment/i18n/de.json b/ui/deployment/i18n/de.json
index 441185ec7b..ebabde119c 100644
--- a/ui/deployment/i18n/de.json
+++ b/ui/deployment/i18n/de.json
@@ -52,6 +52,28 @@
   "Modify Pipeline": "Pipeline bearbeiten",
   "Modify pipeline": "Pipeline ändern",
   "Delete Pipeline": "Pipeline löschen",
+  "Accept": "Akzeptieren",
+  "Reject": "Ablehnen",
+  "Restore password": "Passwort wiederherstellen",
+  "Email": "E-Mail",
+  "Reset password": "Passwort zurücksetzen",
+  "Unknown error - contact your administrator to check the mail settings.": 
"Unbekannter Fehler - Administrator kontaktieren, um die E-Mail-Einstellungen 
zu überprüfen.",
+  "In case this account exists, you'll receive a mail with instructions to 
restore your password shortly.": "In dem Fall, dass dieses Konto existiert, 
erhalten Sie in Kürze eine E-Mail mit Anweisungen zur Wiederherstellung Ihres 
Passworts.",
+  "Go to login page": "Zur Anmeldeseite gehen",
+  "Register": "Registrieren",
+  "Initial password": "Ursprüngliches Passwort",
+  "Repeat password": "Passwort wiederholen",
+  "Passwords do not match.": "Die Passwörter stimmen nicht überein.",
+  "Login": "Anmelden",
+  "Email ": "E-Mail",
+  "Password": "Passwort",
+  "Logging in": "Anmelden...",
+  "User not found or incorrect password provided.": "Benutzer nicht gefunden 
oder falsches Passwort angegeben.",
+  "Please try again": "Bitte erneut versuchen",
+  "Forgot password?": "Passwort vergessen?",
+  "Create new account": "Neuen Account erstellen",
+  "or": "oder",
+  "Login with": "Anmelden mit",
   "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:",
@@ -197,6 +219,8 @@
   "Clone chart": "Diagramm kopieren",
   "Delete chart": "Diagramm löschen",
   "Chart Name": "Diagrammname",
+  "Add to Asset": "Zu Asset hinzufügen",
+  "Add To Asset": "Zu Asset hinzufügen",
   "Discard": "Verwerfen",
   "Data": "Daten",
   "Visualization": "Visualisierung",
@@ -257,6 +281,8 @@
   "Grid columns": "Gitternetz-Spalten",
   "Time settings": "Zeiteinstellungen",
   "Use global time settings instead of chart time settings": "Einheitliche 
Zeiteinstellungen anstelle von Diagramm-Zeiteinstellungen verwenden",
+  "Add Dashboard to Assets": "Dashboard zu Assets hinzufügen",
+  "Add the current dashboard to an existing asset": "Das aktuelle Dashboard zu 
einem bestehenden Asset hinzufügen",
   "New dashboard title": "Neuer Dashboard-Titel",
   "Clone options": "Optionen zum Klonen",
   "Deep clone (also clone widgets)": "Tiefes Klonen (auch Widgets klonen)",
@@ -327,12 +353,23 @@
   "Allow anonymous access through public link": "Anonymen Zugang über einen 
öffentlichen Link ermöglichen",
   "URL": "URL",
   "(no log messages available)": "(keine Protokollmeldungen verfügbar)",
+  "Adapters": "Adapter",
   "New adapter": "Neuer Adapter",
   "Start all adapters": "Alle Adapter starten",
   "Stop all adapters": "Alle Adapter anhalten",
+  "Refresh adapters": "Adapter neu laden",
   "Messages": "Nachrichten",
   "Last message": "Letzte Nachricht",
-  "Add to Asset": "Zu Asset hinzufügen",
+  "Select Adapter": "Adapter auswählen",
+  "Create adapter": "Adapter erstellen",
+  "Docs": "Doku",
+  "Refresh": "Neu laden",
+  "Last published message": "Zuletzt veröffentlichte Nachricht",
+  "Published messages": "Nachrichten",
+  "Adapter running": "Adapter läuft",
+  "Adapter stopped": "Adapter gestoppt",
+  "Configure fields": "Felder konfigurieren",
+  "Start adapter": "Adapter starten",
   "Add Adapter to an existing Asset": "Adapter zu einem bestehenden Asset 
hinzufügen",
   "Remove Duplicates": "Duplikate entfernen",
   "Avoid duplicated events within a certain time interval": "Vermeidung von 
doppelten Datenpunkte innerhalb eines bestimmten Zeitintervalls",
@@ -348,6 +385,17 @@
   "Show code to programmatically deploy this adapter over the API": "Code 
anzeigen, um diesen Adapter programmatisch über die API einzusetzen",
   "Start Adapter": "Start Adapter",
   "Update Adapter": "Adapter aktualisieren",
+  "Measurement": "Messwert",
+  "Dimension": "Dimension",
+  "Header": "Header",
+  "Add a Nested Property": "Geschachteltes Feld hinzufügen",
+  "Edit field": "Feld bearbeiten",
+  "There was an error while guessing the schema of your configured data 
stream": "Beim Erkennen des Schemas der Datenquelle ist ein Fehler aufgetreten",
+  "Service Selection": "Serviceauswahl",
+  "Basic Settings": "Basiseinstellungen",
+  "Save as template": "Als Vorlage speichern",
+  "Any available service": "Jeder verfügbare Service",
+  "Restrict to service tags": "Auf Service-Tags beschränken",
   "Sites & Areas": "Standorte & Bereiche",
   "Manage your organization's sites and production areas": "Verwaltung der 
Standorte und Produktionsbereiche",
   "New site": "Neuer Standort",
@@ -361,9 +409,9 @@
   "User Accounts": "Benutzerkonten",
   "Add and edit user accounts": "Benutzerkonten hinzufügen und bearbeiten",
   "Existing user accounts": "Bestehende Benutzerkonten",
-  "Service Accounts": "Service-Konten",
-  "Add and edit service accounts": "Service-Konten hinzufügen und bearbeiten",
-  "Existing service accounts": "Bestehende Service-Konten",
+  "Service Accounts": "Servicekonten",
+  "Add and edit service accounts": "Servicekonten hinzufügen und bearbeiten",
+  "Existing service accounts": "Bestehende Servicekonten",
   "Manage user groups": "Benutzergruppen verwalten",
   "Existing groups": "Bestehende Gruppen",
   "Roles": "Rollen",
@@ -378,11 +426,10 @@
   "Edit user": "Benutzer bearbeiten",
   "Delete service": "Service löschen",
   "New User": "Neuer Benutzer",
-  "Email": "E-Mail",
   "Full Name": "Vor- und Nachname",
   "Last Login": "Letzte Anmeldung",
   "Delete user": "Benutzer löschen",
-  "New Service Account": "Neues Service-Konto",
+  "New Service Account": "Neues Servicekonto",
   "Username": "Benutzername",
   "New Role": "Neue Rolle",
   "Role name": "Rollenbezeichnung",
@@ -390,11 +437,7 @@
   "Settings of externally-managed users cannot be changed.": "Die 
Einstellungen von extern verwalteten Benutzern können nicht geändert werden.",
   "Must be a valid email address.": "Muss eine gültige E-Mail-Adresse sein.",
   "Changing the current user's email will require a re-login.": "Änderung der 
E-Mail-Adresse erfordert eine erneute Anmeldung.",
-  "Password": "Passwort",
   "Auto-create password and send to user": "Passwort automatisch generieren 
und an den Benutzer versenden",
-  "Initial password": "Ursprüngliches Passwort",
-  "Repeat password": "Passwort wiederholen",
-  "Passwords do not match.": "Die Passwörter stimmen nicht überein.",
   "Client Secret": "Client-Schlüssel",
   "Minimum length 35 characters.": "Mindestens 35 Zeichen.",
   "Account": "Konto",
@@ -454,8 +497,8 @@
   "Show documentation link in user menu": "Link zur Dokumentation im 
Benutzermenü anzeigen",
   "API Documentation Link": "Link zur API-Dokumentation",
   "Show API documentation link on login page": "Link zur API-Dokumentation auf 
der Login-Seite anzeigen",
-  "Support Link": "Link unterstützen",
-  "Support URL": "URL unterstützen",
+  "Support Link": "Support-Link",
+  "Support URL": "Support-URL",
   "Show support link on login page": "Support-Link auf der Anmeldeseite 
anzeigen",
   "Files": "Dateien",
   "Upload and manage files that are used by adapters or pipeline elements.": 
"Hochladen und Verwalten von Dateien, die von Adaptern oder Pipeline-Elementen 
verwendet werden.",
@@ -472,20 +515,17 @@
   "Configure trusted and rejected OPC-UA certificates": "Konfiguration der 
vertrauenswürdigen und abgelehnten OPC-UA Zertifikate",
   "Service Group": "Service-Gruppe",
   "Service ID": "Service-ID",
-  "Refresh": "Neu laden",
   "View service details": "Service-Details anzeigen",
   "Service Name": "Service-Name",
   "Issuer": "Aussteller",
   "Expires": "Läuft aus",
   "Certificate Details": "Zertifikat-Details",
   "Details": "Einzelheiten",
-  "Reject": "Ablehnen",
   "Trust": "Vertrauen",
   "Delete certificate": "Zertifikat löschen",
   "Install selected": "Ausgewählte installieren",
   "Uninstall selected": "Ausgewählte deinstallieren",
   "All": "Alle",
-  "Adapters": "Adapter",
   "Data Streams": "Datenströme",
   "Data Processors": "Datenprozessoren",
   "Data Sinks": "Datensenken",
@@ -571,7 +611,7 @@
   "install": "installieren",
   "uninstall": "deinstallieren",
   "Press 'Next' to start the process.": "Auf \"Weiter\" drücken, um den 
Vorgang zu starten.",
-  "{{action}} {{ current }} of {{ total }} ({{ name }})...{{ status }}": 
"{{Aktion}} {{ current }} von {{ total }} ({{ Name }})...{{ Status }}",
+  "{{action}} {{ current }} of {{ total }} ({{ name }})...{{ status }}": 
"{{action}} {{ current }} von {{ total }} ({{name}})...{{ status }}",
   "Installing": "Installation von",
   "Uninstalling": "Deinstallation von",
   "More Details:": "Mehr Details:",
@@ -588,9 +628,11 @@
   "Bucket": "Bucket",
   "Enter Bucket Name": "Bucketnamen eingeben",
   "Region": "Region",
-  "Select Region": "Region auswählen",
-  "Truncate Data": "Daten leeren",
+  "Enter Region Name": "Name der Region eingeben",
+  "Do you really want to delete the export provider?": "Exportprovider 
wirklich löschen?",
+  "This operation cannot be undone. Please ensure that the data provider is 
not used in a datalake retention.": "Dieser Vorgang kann nicht rückgängig 
gemacht werden. Bitte stellen Sie sicher, dass der Provider in keiner 
Speicherrichtlinie verwendet wird.",
   "Delete Data": "Daten löschen",
+  "Truncate Data": "Daten leeren",
   "Start Sync": "Synchronisierung starten",
   "Delete Sync": "Sync löschen",
   "Data Retention Action": "Aktion",
@@ -666,6 +708,8 @@
   "to": "zu",
   "Are you sure you want to delete this chart?": "Sind Sie sicher, dass Sie 
dieses Diagramm löschen wollen?",
   "The chart will be removed from all dashboards as well. This action cannot 
be undone!": "Das Diagramm wird auch aus allen Dashboards entfernt. Diese 
Aktion kann nicht rückgängig gemacht werden!",
+  "Do you want to link the chart to an Asset?": "Diagramm mit einem Asset 
verknüpfen?",
+  "Update asset links or close.": "Asset-Links aktualisieren oder schließen.",
   "Save changes?": "Änderungen speichern?",
   "Update all changes to chart or discard current changes.": "Aktualisieren 
Sie alle Änderungen im Diagramm oder verwerfen Sie die aktuellen Änderungen.",
   "Discard changes": "Änderungen verwerfen",
@@ -694,7 +738,10 @@
   "Updating adapter {{adapterName}}": "Aktualisieren des Adapters 
{{AdapterName}}",
   "Creating adapter {{adapterName}}": "Adapter erstellen {{adapterName}}",
   "Starting adapter {{adapterName}}": "Adapter starten {{AdapterName}}",
-  "Your {{assetTypes}} were successfully added to {{assetIds}}.": "Ihre 
{{assetTypes}} wurden erfolgreich zu {{assetIds}} hinzugefügt.",
+  "Your Assets were successfully added.": "Assets erfolgreich hinzugefügt.",
+  "Your Assets were successfully deleted.": "Assets erfolgreich gelöscht.",
+  "Edit adapter: ": "Adapter bearbeiten:",
+  "New adapter: ": "Neuer Adapter:",
   "General": "Allgemein",
   "Data Lake": "Data Lake",
   "Export/Import": "Export/Import",
@@ -819,6 +866,5 @@
   "Documentation": "Dokumentation",
   "Error Details": "Fehler-Details",
   "All {{allResourcesAlias}}": "Alle {{allResourcesAlias}}",
-  "{{ widgetTitle }} Clone": "{{ widgetTitle }} Kopie",
-  "{{action}} {{ current }} of {{ total }} ({{ name }})...{{ status }}": 
"{{action}} {{ current }} von {{ total }} ({{name}})...{{ status }}"
+  "{{ widgetTitle }} Clone": "{{ widgetTitle }} Kopie"
 }
diff --git a/ui/deployment/i18n/en.json b/ui/deployment/i18n/en.json
index aa7fe2af2f..080c8c6bb3 100644
--- a/ui/deployment/i18n/en.json
+++ b/ui/deployment/i18n/en.json
@@ -52,6 +52,28 @@
   "Modify Pipeline": null,
   "Modify pipeline": null,
   "Delete Pipeline": null,
+  "Accept": null,
+  "Reject": null,
+  "Restore password": null,
+  "Email": null,
+  "Reset password": null,
+  "Unknown error - contact your administrator to check the mail settings.": 
null,
+  "In case this account exists, you'll receive a mail with instructions to 
restore your password shortly.": null,
+  "Go to login page": null,
+  "Register": null,
+  "Initial password": null,
+  "Repeat password": null,
+  "Passwords do not match.": null,
+  "Login": null,
+  "Email ": null,
+  "Password": null,
+  "Logging in": null,
+  "User not found or incorrect password provided.": null,
+  "Please try again": null,
+  "Forgot password?": null,
+  "Create new account": null,
+  "or": null,
+  "Login with": 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,
@@ -197,6 +219,8 @@
   "Clone chart": null,
   "Delete chart": null,
   "Chart Name": null,
+  "Add to Asset": null,
+  "Add To Asset": null,
   "Discard": null,
   "Data": null,
   "Visualization": null,
@@ -257,6 +281,8 @@
   "Grid columns": null,
   "Time settings": null,
   "Use global time settings instead of chart time settings": null,
+  "Add Dashboard to Assets": null,
+  "Add the current dashboard to an existing asset": null,
   "New dashboard title": null,
   "Clone options": null,
   "Deep clone (also clone widgets)": null,
@@ -327,12 +353,23 @@
   "Allow anonymous access through public link": null,
   "URL": null,
   "(no log messages available)": null,
+  "Adapters": null,
   "New adapter": null,
   "Start all adapters": null,
   "Stop all adapters": null,
+  "Refresh adapters": null,
   "Messages": null,
   "Last message": null,
-  "Add to Asset": null,
+  "Select Adapter": null,
+  "Create adapter": null,
+  "Docs": null,
+  "Refresh": null,
+  "Last published message": null,
+  "Published messages": null,
+  "Adapter running": null,
+  "Adapter stopped": null,
+  "Configure fields": null,
+  "Start adapter": null,
   "Add Adapter to an existing Asset": null,
   "Remove Duplicates": null,
   "Avoid duplicated events within a certain time interval": null,
@@ -348,6 +385,17 @@
   "Show code to programmatically deploy this adapter over the API": null,
   "Start Adapter": null,
   "Update Adapter": null,
+  "Measurement": null,
+  "Dimension": null,
+  "Header": null,
+  "Add a Nested Property": null,
+  "Edit field": null,
+  "There was an error while guessing the schema of your configured data 
stream": null,
+  "Service Selection": null,
+  "Basic Settings": null,
+  "Save as template": null,
+  "Any available service": null,
+  "Restrict to service tags": null,
   "Sites & Areas": null,
   "Manage your organization's sites and production areas": null,
   "New site": null,
@@ -378,7 +426,6 @@
   "Edit user": null,
   "Delete service": null,
   "New User": null,
-  "Email": null,
   "Full Name": null,
   "Last Login": null,
   "Delete user": null,
@@ -390,11 +437,7 @@
   "Settings of externally-managed users cannot be changed.": null,
   "Must be a valid email address.": null,
   "Changing the current user's email will require a re-login.": null,
-  "Password": null,
   "Auto-create password and send to user": null,
-  "Initial password": null,
-  "Repeat password": null,
-  "Passwords do not match.": null,
   "Client Secret": null,
   "Minimum length 35 characters.": null,
   "Account": null,
@@ -472,20 +515,17 @@
   "Configure trusted and rejected OPC-UA certificates": null,
   "Service Group": null,
   "Service ID": null,
-  "Refresh": null,
   "View service details": null,
   "Service Name": null,
   "Issuer": null,
   "Expires": null,
   "Certificate Details": null,
   "Details": null,
-  "Reject": null,
   "Trust": null,
   "Delete certificate": null,
   "Install selected": null,
   "Uninstall selected": null,
   "All": null,
-  "Adapters": null,
   "Data Streams": null,
   "Data Processors": null,
   "Data Sinks": null,
@@ -571,7 +611,7 @@
   "install": null,
   "uninstall": null,
   "Press 'Next' to start the process.": null,
-  "{{action}} {{ current }} of {{ total }} ({{ name }})...{{ status }}": null,
+  "{{action}} {{ current }} of {{ total }} ({{ name }})...{{ status }}": 
"{{action}} {{ current }} of {{ total }} ({{name}})...{{ status }}",
   "Installing": null,
   "Uninstalling": null,
   "More Details:": null,
@@ -588,9 +628,11 @@
   "Bucket": null,
   "Enter Bucket Name": null,
   "Region": null,
-  "Select Region": null,
-  "Truncate Data": null,
+  "Enter Region Name": null,
+  "Do you really want to delete the export provider?": null,
+  "This operation cannot be undone. Please ensure that the data provider is 
not used in a datalake retention.": null,
   "Delete Data": null,
+  "Truncate Data": null,
   "Start Sync": null,
   "Delete Sync": null,
   "Data Retention Action": null,
@@ -666,6 +708,8 @@
   "to": null,
   "Are you sure you want to delete this chart?": null,
   "The chart will be removed from all dashboards as well. This action cannot 
be undone!": null,
+  "Do you want to link the chart to an Asset?": null,
+  "Update asset links or close.": null,
   "Save changes?": null,
   "Update all changes to chart or discard current changes.": null,
   "Discard changes": null,
@@ -694,7 +738,10 @@
   "Updating adapter {{adapterName}}": "Updating adapter {{adapterName}}",
   "Creating adapter {{adapterName}}": "Creating adapter {{adapterName}}",
   "Starting adapter {{adapterName}}": "Starting adapter {{adapterName}}",
-  "Your {{assetTypes}} were successfully added to {{assetIds}}.": "Your 
{{assetTypes}} were successfully added to {{assetIds}}.",
+  "Your Assets were successfully added.": null,
+  "Your Assets were successfully deleted.": null,
+  "Edit adapter: ": null,
+  "New adapter: ": null,
   "General": null,
   "Data Lake": null,
   "Export/Import": null,
@@ -819,11 +866,5 @@
   "Documentation": null,
   "Error Details": null,
   "All {{allResourcesAlias}}": "All {{allResourcesAlias}}",
-  "{{ widgetTitle }} Clone": "{{ widgetTitle }} Clone",
-  "Your {{assetTypes}} were successfully added to {{assetIds}}.": "Your 
{{assetTypes}} were successfully added to {{assetIds}}.",
-  "Your {{assetTypes}} were successfully deleted from {{assetIds}}.": "Your 
{{assetTypes}} were successfully deleted from {{assetIds}}.",
-  "Starting adapter {{adapterName}}": "Starting adapter {{adapterName}}",
-  "Creating adapter {{adapterName}}": "Creating adapter {{adapterName}}",
-  "Updating adapter {{adapterName}}": "Updating adapter {{adapterName}}",
-  "{{action}} {{ current }} of {{ total }} ({{ name }})...{{ status }}": 
"{{action}} {{ current }} of {{ total }} ({{name}})...{{ status }}"
+  "{{ widgetTitle }} Clone": "{{ widgetTitle }} Clone"
 }
diff --git 
a/ui/src/app/configuration/datalake-configuration/datalake-configuration.component.html
 
b/ui/src/app/configuration/datalake-configuration/datalake-configuration.component.html
index 52fa1c9191..60c557f1ee 100644
--- 
a/ui/src/app/configuration/datalake-configuration/datalake-configuration.component.html
+++ 
b/ui/src/app/configuration/datalake-configuration/datalake-configuration.component.html
@@ -472,7 +472,12 @@
                     </table>
                 </div>
 
-                <div *ngIf="availableExportProvider.length === 0">
+                <div
+                    *ngIf="
+                        !availableExportProvider ||
+                        availableExportProvider.length === 0
+                    "
+                >
                     <h5>{{ 'no stored export providers' | translate }}</h5>
                 </div>
             </sp-split-section>
diff --git 
a/ui/src/app/connect/components/adapter-configuration/adapter-configuration.component.html
 
b/ui/src/app/connect/components/adapter-configuration/adapter-configuration.component.html
index ab9892eaff..bdd4381ea0 100644
--- 
a/ui/src/app/connect/components/adapter-configuration/adapter-configuration.component.html
+++ 
b/ui/src/app/connect/components/adapter-configuration/adapter-configuration.component.html
@@ -22,7 +22,7 @@
             mat-icon-button
             color="accent"
             (click)="openDocumentation()"
-            matTooltip="Show documentation"
+            [matTooltip]="'Show documentation' | translate"
         >
             <i class="material-icons">menu_book</i>
         </button>
@@ -30,18 +30,14 @@
             mat-icon-button
             color="accent"
             (click)="removeSelection()"
-            matTooltip="Cancel"
+            [matTooltip]="'Cancel' | translate"
         >
             <i class="material-icons">close</i>
         </button>
     </div>
     <div fxLayout="column" fxLayoutAlign="center stretch" *ngIf="adapter">
         <sp-basic-header-title-component
-            [title]="
-                isEditMode
-                    ? 'Edit adapter: ' + displayName
-                    : 'New adapter: ' + displayName
-            "
+            [title]="pageTitle"
         ></sp-basic-header-title-component>
 
         <mat-horizontal-stepper
@@ -51,7 +47,9 @@
             class="stepper"
         >
             <mat-step>
-                <ng-template matStepLabel>Settings</ng-template>
+                <ng-template matStepLabel>{{
+                    'Settings' | translate
+                }}</ng-template>
                 <sp-adapter-settings
                     [adapterDescription]="adapter"
                     (updateAdapterDescriptionEmitter)="adapter = $event"
@@ -62,7 +60,9 @@
             </mat-step>
 
             <mat-step>
-                <ng-template matStepLabel>Configure fields</ng-template>
+                <ng-template matStepLabel>{{
+                    'Configure fields' | translate
+                }}</ng-template>
                 <sp-event-schema
                     fxLayout="column"
                     fxFlex="100"
@@ -76,7 +76,9 @@
             </mat-step>
 
             <mat-step>
-                <ng-template matStepLabel>Start Adapter</ng-template>
+                <ng-template matStepLabel>{{
+                    'Start adapter' | translate
+                }}</ng-template>
                 <sp-start-adapter-configuration
                     [adapterDescription]="adapter"
                     [eventSchema]="adapter.dataStream.eventSchema"
diff --git 
a/ui/src/app/connect/components/adapter-configuration/adapter-configuration.component.ts
 
b/ui/src/app/connect/components/adapter-configuration/adapter-configuration.component.ts
index 3f99e7a373..0d3be4d5a6 100644
--- 
a/ui/src/app/connect/components/adapter-configuration/adapter-configuration.component.ts
+++ 
b/ui/src/app/connect/components/adapter-configuration/adapter-configuration.component.ts
@@ -29,6 +29,7 @@ import { TransformationRuleService } from 
'../../services/transformation-rule.se
 import { Router } from '@angular/router';
 import { DialogService, PanelType } from '@streampipes/shared-ui';
 import { SpAdapterDocumentationDialogComponent } from 
'../../dialog/adapter-documentation/adapter-documentation-dialog.component';
+import { TranslateService } from '@ngx-translate/core';
 
 @Component({
     selector: 'sp-adapter-configuration',
@@ -47,6 +48,7 @@ export class AdapterConfigurationComponent implements OnInit {
     linkageData: LinkageData[];
     myStepper: MatStepper;
     parentForm: UntypedFormGroup;
+    pageTitle = '';
 
     private eventSchemaComponent: EventSchemaComponent;
 
@@ -56,10 +58,14 @@ export class AdapterConfigurationComponent implements 
OnInit {
         private shepherdService: ShepherdService,
         private _formBuilder: UntypedFormBuilder,
         private router: Router,
+        private translate: TranslateService,
     ) {}
 
     ngOnInit() {
         this.parentForm = this._formBuilder.group({});
+        this.pageTitle = this.isEditMode
+            ? this.translate.instant('Edit adapter: ') + this.displayName
+            : this.translate.instant('New adapter: ') + this.displayName;
     }
 
     removeSelection() {
diff --git 
a/ui/src/app/connect/components/adapter-configuration/adapter-settings/adapter-deployment-settings/adapter-deployment-settings.component.html
 
b/ui/src/app/connect/components/adapter-configuration/adapter-settings/adapter-deployment-settings/adapter-deployment-settings.component.html
index 45e0cdcc87..6ca9deab21 100644
--- 
a/ui/src/app/connect/components/adapter-configuration/adapter-settings/adapter-deployment-settings/adapter-deployment-settings.component.html
+++ 
b/ui/src/app/connect/components/adapter-configuration/adapter-settings/adapter-deployment-settings/adapter-deployment-settings.component.html
@@ -21,14 +21,16 @@
         [(ngModel)]="deploymentMode"
         (change)="handleSelectionChange($event)"
     >
-        <mat-radio-button value="all">Any available service</mat-radio-button>
+        <mat-radio-button value="all">{{
+            'Any available service' | translate
+        }}</mat-radio-button>
         <mat-radio-button
             value="filter"
             [disabled]="
                 deploymentMode === 'all' && availableServiceTags.length === 0
             "
         >
-            Restrict to service tags
+            {{ 'Restrict to service tags' | translate }}
         </mat-radio-button>
     </mat-radio-group>
 
diff --git 
a/ui/src/app/connect/components/adapter-configuration/adapter-settings/adapter-settings.component.html
 
b/ui/src/app/connect/components/adapter-configuration/adapter-settings/adapter-settings.component.html
index 2df9bf7345..eddabccb37 100644
--- 
a/ui/src/app/connect/components/adapter-configuration/adapter-settings/adapter-settings.component.html
+++ 
b/ui/src/app/connect/components/adapter-configuration/adapter-settings/adapter-settings.component.html
@@ -19,7 +19,7 @@
 <div fxFlex="100" fxLayout="column">
     <div fxFlex="100" fxLayout="column">
         <sp-basic-inner-panel
-            panelTitle="Service Selection"
+            [panelTitle]="'Service Selection' | translate"
             outerMargin="20px 0px"
         >
             <sp-adapter-deployment-settings
@@ -30,7 +30,7 @@
             </sp-adapter-deployment-settings>
         </sp-basic-inner-panel>
         <sp-basic-inner-panel
-            panelTitle="Basic Settings"
+            [panelTitle]="'Basic Settings' | translate"
             outerMargin="20px 0px"
         >
             <div
@@ -86,7 +86,7 @@
             (click)="removeSelection()"
             data-cy="connect-new-adapter-cancel"
         >
-            Cancel
+            {{ 'Cancel' | translate }}
         </button>
         <button
             mat-button
@@ -95,7 +95,7 @@
             data-cy="create-template"
             (click)="openTemplateDialog()"
         >
-            Store config as template
+            {{ 'Save as template' | translate }}
         </button>
         <div id="specific-settings-next-button">
             <button
@@ -106,7 +106,7 @@
                 color="accent"
                 mat-flat-button
             >
-                Next
+                {{ 'Next' | translate }}
             </button>
         </div>
     </div>
diff --git 
a/ui/src/app/connect/components/adapter-configuration/schema-editor/error-message/error-message.component.html
 
b/ui/src/app/connect/components/adapter-configuration/schema-editor/error-message/error-message.component.html
index bdd48b8862..70f5c17c8c 100644
--- 
a/ui/src/app/connect/components/adapter-configuration/schema-editor/error-message/error-message.component.html
+++ 
b/ui/src/app/connect/components/adapter-configuration/schema-editor/error-message/error-message.component.html
@@ -19,8 +19,10 @@
 <div fxLayout="column" fxFlex="100">
     <div fxLayout="row" fxLayoutAlign="center center" fxFlex="100">
         <div fxLayoutAlign="start center" class="error-text">
-            &nbsp;There was an error while guessing the schema of your
-            configured data stream:
+            &nbsp;{{
+                'There was an error while guessing the schema of your 
configured data stream'
+                    | translate
+            }}:
         </div>
     </div>
     <div fxLayout="row" fxLayoutAlign="center center" class="mt-10">
diff --git 
a/ui/src/app/connect/components/adapter-configuration/schema-editor/event-property-row/event-property-row.component.html
 
b/ui/src/app/connect/components/adapter-configuration/schema-editor/event-property-row/event-property-row.component.html
index 23abf9e86c..56e697d9b3 100644
--- 
a/ui/src/app/connect/components/adapter-configuration/schema-editor/event-property-row/event-property-row.component.html
+++ 
b/ui/src/app/connect/components/adapter-configuration/schema-editor/event-property-row/event-property-row.component.html
@@ -124,15 +124,17 @@
                     class="small-select"
                     [attr.data-cy]="'property-scope-' + label"
                 >
-                    <mat-option value="MEASUREMENT_PROPERTY"
-                        >Measurement</mat-option
-                    >
+                    <mat-option value="MEASUREMENT_PROPERTY">{{
+                        'Measurement' | translate
+                    }}</mat-option>
                     <mat-option
                         *ngIf="runtimeType !== 'FLOAT'"
                         value="DIMENSION_PROPERTY"
-                        >Dimension</mat-option
+                        >{{ 'Dimension' | translate }}</mat-option
                     >
-                    <mat-option value="HEADER_PROPERTY">Header</mat-option>
+                    <mat-option value="HEADER_PROPERTY">{{
+                        'Header' | translate
+                    }}</mat-option>
                 </mat-select>
             </mat-form-field>
         </div>
@@ -144,7 +146,9 @@
                 mat-button
                 (click)="addNestedProperty(node.data)"
             >
-                <mat-icon matTooltip="Add a Nested Property">queue</mat-icon>
+                <mat-icon [matTooltip]="'Add a Nested Property' | translate"
+                    >queue</mat-icon
+                >
             </button>
         </div>
         <div
@@ -159,7 +163,7 @@
                 (click)="openEditDialog(node.data)"
                 [attr.data-cy]="'edit-' + label.toLowerCase()"
             >
-                <mat-icon>edit</mat-icon>&nbsp;Edit field
+                <mat-icon>edit</mat-icon>&nbsp;{{ 'Edit field' | translate }}
             </button>
         </div>
         <div fxLayoutAlign="end center">
diff --git 
a/ui/src/app/connect/components/adapter-details/adapter-details-code/adapter-details-code.component.html
 
b/ui/src/app/connect/components/adapter-details/adapter-details-code/adapter-details-code.component.html
index 6a93d34e7f..19d6644f36 100644
--- 
a/ui/src/app/connect/components/adapter-details/adapter-details-code/adapter-details-code.component.html
+++ 
b/ui/src/app/connect/components/adapter-details/adapter-details-code/adapter-details-code.component.html
@@ -26,7 +26,7 @@
         @if (adapter) {
             <div fxLayout="column">
                 <sp-basic-header-title-component
-                    [title]="adapter.name + ' - Data'"
+                    [title]="adapter.name + ' - ' + 'Data' | translate"
                 ></sp-basic-header-title-component>
                 <sp-adapter-code-panel
                     [adapterDescription]="adapter"
diff --git 
a/ui/src/app/connect/components/adapter-details/adapter-details-data/adapter-details-data.component.html
 
b/ui/src/app/connect/components/adapter-details/adapter-details-data/adapter-details-data.component.html
index 62e5d66e13..ae3a3a1b6d 100644
--- 
a/ui/src/app/connect/components/adapter-details/adapter-details-data/adapter-details-data.component.html
+++ 
b/ui/src/app/connect/components/adapter-details/adapter-details-data/adapter-details-data.component.html
@@ -31,11 +31,11 @@
                 <div fxFlex fxLayoutAlign="end center">
                     @if (adapter.running) {
                         <div class="adapter-status status-running">
-                            Adapter running
+                            {{ 'Adapter running' | translate }}
                         </div>
                     } @else {
                         <div class="adapter-status status-stopped">
-                            Adapter stopped
+                            {{ 'Adapter stopped' | translate }}
                         </div>
                     }
                 </div>
diff --git 
a/ui/src/app/connect/components/adapter-details/adapter-details-logs/adapter-details-logs.component.html
 
b/ui/src/app/connect/components/adapter-details/adapter-details-logs/adapter-details-logs.component.html
index 9de320af3b..9010b685dd 100644
--- 
a/ui/src/app/connect/components/adapter-details/adapter-details-logs/adapter-details-logs.component.html
+++ 
b/ui/src/app/connect/components/adapter-details/adapter-details-logs/adapter-details-logs.component.html
@@ -27,7 +27,7 @@
             mat-icon-button
             color="accent"
             class="mr-10"
-            matTooltip="Refresh"
+            [matTooltip]="'Refresh' | translate"
             (click)="triggerUpdate()"
         >
             <i class="material-icons">refresh</i>
diff --git 
a/ui/src/app/connect/components/adapter-details/adapter-details-metrics/adapter-details-metrics.component.html
 
b/ui/src/app/connect/components/adapter-details/adapter-details-metrics/adapter-details-metrics.component.html
index 8f6ae096f8..a247b52eb1 100644
--- 
a/ui/src/app/connect/components/adapter-details/adapter-details-metrics/adapter-details-metrics.component.html
+++ 
b/ui/src/app/connect/components/adapter-details/adapter-details-metrics/adapter-details-metrics.component.html
@@ -27,7 +27,7 @@
             mat-icon-button
             color="accent"
             class="mr-10"
-            matTooltip="Refresh"
+            [matTooltip]="'Refresh' | translate"
             (click)="triggerUpdate()"
         >
             <i class="material-icons">refresh</i>
@@ -36,8 +36,8 @@
     <div fxFlex="100" fxLayout="column" *ngIf="adapter && adapterMetrics">
         <sp-simple-metrics
             [elementName]="adapter.name"
-            lastPublishedLabel="Last published message"
-            statusValueLabel="Published messages"
+            [lastPublishedLabel]="'Last published message' | translate"
+            [statusValueLabel]="'Published messages' | translate"
             [lastTimestamp]="adapterMetrics.lastTimestamp"
             [statusValue]="adapterMetrics.messagesOut.counter"
         >
diff --git 
a/ui/src/app/connect/components/data-marketplace/adapter-description/adapter-description.component.html
 
b/ui/src/app/connect/components/data-marketplace/adapter-description/adapter-description.component.html
index 5a38642a5d..df28d5a7a7 100644
--- 
a/ui/src/app/connect/components/data-marketplace/adapter-description/adapter-description.component.html
+++ 
b/ui/src/app/connect/components/data-marketplace/adapter-description/adapter-description.component.html
@@ -46,18 +46,18 @@
                         fxFlex
                         mat-flat-button
                         (click)="createEmitter.emit(adapter.appId)"
-                        matTooltip="Create adapter"
+                        [matTooltip]="'Create adapter' | translate"
                     >
-                        <span>Create</span>
+                        <span>{{ 'Create' | translate }}</span>
                         <mat-icon>add</mat-icon>
                     </button>
                     <button
                         mat-flat-button
                         class="mat-basic"
                         (click)="openDocumentation($event)"
-                        matTooltip="Show documentation"
+                        [matTooltip]="'Show documentation' | translate"
                     >
-                        <span>Docs</span>
+                        <span>{{ 'Docs' | translate }}</span>
                         <mat-icon>menu_book</mat-icon>
                     </button>
                 </div>
diff --git 
a/ui/src/app/connect/components/data-marketplace/data-marketplace.component.html
 
b/ui/src/app/connect/components/data-marketplace/data-marketplace.component.html
index 838c9afbb6..c00a3cfb27 100644
--- 
a/ui/src/app/connect/components/data-marketplace/data-marketplace.component.html
+++ 
b/ui/src/app/connect/components/data-marketplace/data-marketplace.component.html
@@ -17,7 +17,7 @@
   -->
 
 <sp-basic-view
-    showBackLink="true"
+    [showBackLink]="true"
     [backLinkTarget]="['connect']"
     [padding]="true"
 >
@@ -30,7 +30,7 @@
     </div>
     <div fxLayout="column" fxFlex="100">
         <sp-basic-header-title-component
-            title="Select Adapter"
+            [title]="'Select Adapter' | translate"
         ></sp-basic-header-title-component>
         <div fxFlex="100" fxLayout="column" fxLayoutAlign="center start">
             <div
diff --git 
a/ui/src/app/connect/components/existing-adapters/existing-adapters.component.html
 
b/ui/src/app/connect/components/existing-adapters/existing-adapters.component.html
index abd0e5d7be..b91e06fa03 100644
--- 
a/ui/src/app/connect/components/existing-adapters/existing-adapters.component.html
+++ 
b/ui/src/app/connect/components/existing-adapters/existing-adapters.component.html
@@ -18,7 +18,7 @@
 
 <sp-asset-browser
     filteredAssetLinkType="adapter"
-    allResourcesAlias="Adapters"
+    [allResourcesAlias]="'Adapters' | translate"
     [resourceCount]="existingAdapters.length"
     (filterIdsEmitter)="applyAdapterFilters($event)"
 >
@@ -85,7 +85,7 @@
                 </div>
                 <button
                     mat-icon-button
-                    matTooltip="Refresh adapters"
+                    [matTooltip]="'Refresh adapters' | translate"
                     matTooltipPosition="below"
                     color="accent"
                     (click)="getAdaptersRunning()"
@@ -96,7 +96,7 @@
         </div>
         <div fxFlex="100" fxLayout="column">
             <sp-basic-header-title-component
-                title="Adapters"
+                [title]="'Adapters' | translate"
             ></sp-basic-header-title-component>
             <div fxFlex="100" fxLayout="row" fxLayoutAlign="center start">
                 <sp-table
diff --git 
a/ui/src/app/connect/components/filter-toolbar/filter-toolbar.component.html 
b/ui/src/app/connect/components/filter-toolbar/filter-toolbar.component.html
index 7f790adbdd..639661fe96 100644
--- a/ui/src/app/connect/components/filter-toolbar/filter-toolbar.component.html
+++ b/ui/src/app/connect/components/filter-toolbar/filter-toolbar.component.html
@@ -31,7 +31,7 @@
             >
                 <input
                     matInput
-                    placeholder="Find Element"
+                    [placeholder]="'Search' | translate"
                     value=""
                     (input)="updateFilterTerm($event.target.value)"
                     name="something"
diff --git a/ui/src/app/login/components/login/login.component.html 
b/ui/src/app/login/components/login/login.component.html
index d7f9463461..02ca813794 100644
--- a/ui/src/app/login/components/login/login.component.html
+++ b/ui/src/app/login/components/login/login.component.html
@@ -19,13 +19,13 @@
 @if (configReady) {
     <sp-auth-box [linkSettings]="loginSettings.linkSettings">
         <div fxFlex="100" fxLayout="column" fxLayoutAlign="center start">
-            <h1>Login</h1>
+            <h1>{{ 'Login' | translate }}</h1>
         </div>
         <div fxFlex="100" fxLayout="column" class="mt-10">
             <form [formGroup]="parentForm" fxFlex="100" fxLayout="column">
                 <div fxFlex="100" fxLayout="column">
                     <mat-form-field fxFlex color="accent">
-                        <mat-label>Email</mat-label>
+                        <mat-label>{{ 'Email ' | translate }}</mat-label>
                         <input
                             formControlName="username"
                             matInput
@@ -36,7 +36,7 @@
                         />
                     </mat-form-field>
                     <mat-form-field fxFlex color="accent">
-                        <mat-label>Password</mat-label>
+                        <mat-label>{{ 'Password' | translate }}</mat-label>
                         <input
                             formControlName="password"
                             matInput
@@ -55,8 +55,10 @@
                         (click)="doLogin()"
                         [disabled]="!parentForm.valid || loading"
                     >
-                        <span *ngIf="loading">Logging in...</span>
-                        <span *ngIf="!loading">Login</span>
+                        <span *ngIf="loading"
+                            >{{ 'Logging in' | translate }}...</span
+                        >
+                        <span *ngIf="!loading">{{ 'Login' | translate }}</span>
                     </button>
                     <mat-spinner
                         [mode]="'indeterminate'"
@@ -66,15 +68,18 @@
                     ></mat-spinner>
                     <div class="md-warn" *ngIf="authenticationFailed">
                         <h5 class="login-error">
-                            User not found or incorrect password provided.<br 
/>Please
-                            try again.
+                            {{
+                                'User not found or incorrect password 
provided.'
+                                    | translate
+                            }}<br />
+                            {{ 'Please try again' | translate }}
                         </h5>
                     </div>
                     <div fxLayout="row" class="mt-10">
                         <div *ngIf="loginSettings.allowPasswordRecovery">
-                            <a [routerLink]="['/restore-password']"
-                                >Forgot password?</a
-                            >
+                            <a [routerLink]="['/restore-password']">{{
+                                'Forgot password?' | translate
+                            }}</a>
                         </div>
                         <span
                             style="margin-left: 5px; margin-right: 5px"
@@ -86,9 +91,9 @@
                             |
                         </span>
                         <div *ngIf="loginSettings.allowSelfRegistration">
-                            <a [routerLink]="['/register']"
-                                >Create new account</a
-                            >
+                            <a [routerLink]="['/register']">{{
+                                'Create new account' | translate
+                            }}</a>
                         </div>
                     </div>
                     <div
@@ -97,7 +102,7 @@
                         *ngIf="loginSettings.oAuthSettings?.enabled"
                     >
                         <div class="separator">
-                            <span>or</span>
+                            <span>{{ 'or' | translate }}</span>
                         </div>
                         <div
                             fxLayout="column"
@@ -113,7 +118,8 @@
                                 (click)="doOAuthLogin(provider.registrationId)"
                             >
                                 <span *ngIf="!loading"
-                                    >Login with {{ provider.name }}</span
+                                    >{{ 'Login with' | translate }}
+                                    {{ provider.name }}</span
                                 >
                             </button>
                         </div>
diff --git a/ui/src/app/login/components/register/register.component.html 
b/ui/src/app/login/components/register/register.component.html
index b9080709c2..8268a73d63 100644
--- a/ui/src/app/login/components/register/register.component.html
+++ b/ui/src/app/login/components/register/register.component.html
@@ -18,20 +18,20 @@
 
 <sp-auth-box [linkSettings]="loginSettings.linkSettings" *ngIf="configReady">
     <div fxFlex="100" fxLayout="column" fxLayoutAlign="center start">
-        <h1>Register</h1>
+        <h1>{{ 'Register' | translate }}</h1>
     </div>
     <div fxLayout="column" fxFlex="100">
         <form [formGroup]="parentForm">
             <div fxLayout="column">
                 <mat-form-field color="accent">
-                    <mat-label>Email</mat-label>
+                    <mat-label>{{ 'Email' | translate }}</mat-label>
                     <input formControlName="username" fxFlex matInput />
                     <mat-error *ngIf="parentForm.controls.username.errors"
                         >Must be an email address.</mat-error
                     >
                 </mat-form-field>
                 <mat-form-field color="accent">
-                    <mat-label>Initial password</mat-label>
+                    <mat-label>{{ 'Initial password' | translate }}</mat-label>
                     <input
                         formControlName="password"
                         fxFlex
@@ -41,7 +41,7 @@
                     />
                 </mat-form-field>
                 <mat-form-field color="accent">
-                    <mat-label>Repeat password</mat-label>
+                    <mat-label>{{ 'Repeat password' | translate }}</mat-label>
                     <input
                         formControlName="repeatPassword"
                         fxFlex
@@ -50,9 +50,9 @@
                         required
                     />
                 </mat-form-field>
-                <mat-error *ngIf="parentForm.hasError('notMatching')"
-                    >Passwords do not match.</mat-error
-                >
+                <mat-error *ngIf="parentForm.hasError('notMatching')">{{
+                    'Passwords do not match.' | translate
+                }}</mat-error>
                 <div class="form-actions" style="margin-top: 20px">
                     <button
                         mat-button
@@ -62,7 +62,7 @@
                         [disabled]="!parentForm.valid"
                         *ngIf="!registrationSuccess"
                     >
-                        <span>Register</span>
+                        <span>{{ 'Register' | translate }}</span>
                     </button>
                     <mat-spinner
                         [mode]="'indeterminate'"
@@ -78,11 +78,13 @@
                     </div>
                     <div class="md-success" *ngIf="registrationSuccess">
                         <h5 class="info-box register-success">
-                            We've sent out a confirmation mail to this address.
+                            {{ 'We've sent out a confirmation mail to this 
address.' | translate }}
                         </h5>
                     </div>
                     <div class="mt-10">
-                        <a [routerLink]="['/login']">Go to login page</a>
+                        <a [routerLink]="['/login']">{{
+                            'Go to login page' | translate
+                        }}</a>
                     </div>
                 </div>
             </div>
diff --git 
a/ui/src/app/login/components/restore-password/restore-password.component.html 
b/ui/src/app/login/components/restore-password/restore-password.component.html
index ece5bf3b73..60c4ebeba7 100644
--- 
a/ui/src/app/login/components/restore-password/restore-password.component.html
+++ 
b/ui/src/app/login/components/restore-password/restore-password.component.html
@@ -18,17 +18,17 @@
 
 <sp-auth-box [linkSettings]="loginSettings.linkSettings" *ngIf="configReady">
     <div fxFlex="100" fxLayout="column" fxLayoutAlign="center start">
-        <h1>Restore password</h1>
+        <h1>{{ 'Restore password' | translate }}</h1>
         <h5>
-            Enter your mail address and we'll send you a link to restore your
-            password.
+            {{ 'Enter your mail address and we'll send you a link to restore 
your
+            password.' | translate }}
         </h5>
     </div>
     <div fxLayout="column" fxFlex="100">
         <form [formGroup]="parentForm">
             <div fxLayout="column">
                 <mat-form-field color="accent">
-                    <mat-label>Email</mat-label>
+                    <mat-label>{{ 'Email' | translate }}</mat-label>
                     <input formControlName="username" fxFlex matInput />
                 </mat-form-field>
                 <div class="form-actions" style="margin-top: 20px">
@@ -40,15 +40,17 @@
                         [disabled]="!parentForm.valid"
                         *ngIf="!restoreSuccess"
                     >
-                        <span>Reset password</span>
+                        <span>{{ 'Reset password' | translate }}</span>
                     </button>
                     <div
                         class="md-warn"
                         *ngIf="restoreCompleted && !restoreSuccess"
                     >
                         <h5 class="info-box register-error">
-                            Unknown error - contact your administrator to check
-                            the mail settings.
+                            {{
+                                'Unknown error - contact your administrator to 
check
+                            the mail settings.' | translate
+                            }}
                         </h5>
                     </div>
                     <div
@@ -56,12 +58,16 @@
                         *ngIf="restoreCompleted && restoreSuccess"
                     >
                         <h5 class="info-box register-success">
-                            In case this account exists, you'll receive a mail
-                            with instructions to restore your password shortly.
+                            {{
+                                "In case this account exists, you'll receive a 
mail with instructions to restore your password shortly."
+                                    | translate
+                            }}
                         </h5>
                     </div>
                     <div class="mt-10">
-                        <a [routerLink]="['/login']">Go to login page</a>
+                        <a [routerLink]="['/login']">{{
+                            'Go to login page' | translate
+                        }}</a>
                     </div>
                 </div>
             </div>
diff --git a/ui/src/app/login/components/terms/terms.component.html 
b/ui/src/app/login/components/terms/terms.component.html
index 0edc6acacb..150d9e74cd 100644
--- a/ui/src/app/login/components/terms/terms.component.html
+++ b/ui/src/app/login/components/terms/terms.component.html
@@ -31,14 +31,14 @@
             <mat-divider></mat-divider>
             <div fxLayout="row" fxLayoutGap="10px" fxFlex="none" class="mt-10">
                 <button mat-flat-button (click)="onTermsAcknowledged()">
-                    Accept
+                    {{ 'Accept' | translate }}
                 </button>
                 <button
                     mat-flat-button
                     class="mat-basic"
                     (click)="onTermsRejected()"
                 >
-                    Reject
+                    {{ 'Reject' | translate }}
                 </button>
             </div>
         </div>
diff --git a/ui/src/app/login/login.module.ts b/ui/src/app/login/login.module.ts
index 194c0f1151..0a8416e961 100644
--- a/ui/src/app/login/login.module.ts
+++ b/ui/src/app/login/login.module.ts
@@ -41,6 +41,7 @@ import { SetNewPasswordComponent } from 
'./components/set-new-password/set-new-p
 import { ActivateAccountComponent } from 
'./components/activate-account/activate-account.component';
 import { PlatformServicesModule } from '@streampipes/platform-services';
 import { TermsComponent } from './components/terms/terms.component';
+import { TranslatePipe } from '@ngx-translate/core';
 
 @NgModule({
     imports: [
@@ -60,6 +61,7 @@ import { TermsComponent } from 
'./components/terms/terms.component';
         ReactiveFormsModule,
         MatProgressBarModule,
         PlatformServicesModule,
+        TranslatePipe,
     ],
     declarations: [
         ActivateAccountComponent,

Reply via email to