From 358b4c8b8439cda224c4d520e1fc2bf3b78181d7 Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Tue, 18 Jan 2022 17:01:08 +0100 Subject: [PATCH] BE translations for de-DE --- zero.Backoffice/Endpoints/UI/UIController.cs | 8 +- .../Resources/Localization/zero.de-de.json | 804 ++++++++++++++++++ zero.Core/Identity/Services/UserService.cs | 12 + 3 files changed, 822 insertions(+), 2 deletions(-) create mode 100644 zero.Backoffice/Resources/Localization/zero.de-de.json diff --git a/zero.Backoffice/Endpoints/UI/UIController.cs b/zero.Backoffice/Endpoints/UI/UIController.cs index dbe572a5..704cc09b 100644 --- a/zero.Backoffice/Endpoints/UI/UIController.cs +++ b/zero.Backoffice/Endpoints/UI/UIController.cs @@ -16,9 +16,11 @@ public class UIController : ZeroBackofficeController readonly IZeroOptions Options; readonly IMediaManagement Media; readonly ICultureService CultureService; + readonly IUserService UserService; - public UIController(IIconService iconService, IResourceService resourceService, ISectionService sectionService, IZeroOptions options, IMediaManagement media, ICultureService cultureService) + public UIController(IUserService userService, IIconService iconService, IResourceService resourceService, ISectionService sectionService, IZeroOptions options, IMediaManagement media, ICultureService cultureService) { + UserService = userService; IconService = iconService; ResourceService = resourceService; SectionService = sectionService; @@ -47,7 +49,9 @@ public class UIController : ZeroBackofficeController [ZeroAuthorize(false)] public async Task>> GetTranslations() { - return Ok(await ResourceService.GetTranslations("en-us")); + ZeroUser user = await UserService.GetCurrentUser(); + string cultureCode = user?.LanguageId.Or("en-us"); + return Ok(await ResourceService.GetTranslations(cultureCode)); } diff --git a/zero.Backoffice/Resources/Localization/zero.de-de.json b/zero.Backoffice/Resources/Localization/zero.de-de.json new file mode 100644 index 00000000..f02c58d9 --- /dev/null +++ b/zero.Backoffice/Resources/Localization/zero.de-de.json @@ -0,0 +1,804 @@ +{ + "zero": { + "name": "zero", + + "config": { + "linkareas": { + "pages": "Seiten", + "media": "Medien", + "url": "Url" + } + } + }, + + "ui": { + "yes": "Ja", + "no": "Nein", + "required": "Erforderlich", + "more": "Mehr", + "add": "Hinzufügen", + "actions": "Aktionen", + "back": "Zurück", + "close": "Schließen", + "cancel": "Abbrechen", + "confirm": "Bestätigen", + "save": "Speichern", + "create": "Erstellen", + "update": "Aktualisieren", + "createdDate": "Erstellt", + "modifiedDate": "Zuletzt bearbeitet", + "id": "ID", + "disabled": "Deaktiviert", + "enabled": "Aktiviert", + "disable": "Deaktivieren", + "enable": "Aktivieren", + "active": "Aktiv", + "inactive": "Inaktiv", + "delete": "Löschen", + "deleteQ": "Löschen?", + "default": "Standard", + "remove": "Entfernen", + "alias": "Alias", + "link": "Link", + "item": "Element", + "pagination": { + "xofy": "Seite {x} von {y}", + "next": "Nächste Seite", + "previous": "Vorherige Seite" + }, + "search": { + "placeholder": "Suchen ...", + "button": "Suchen" + }, + "name": "Name", + "select": "Auswählen", + "selection": { + "select": "Auswählen", + "deselect": "Abwählen" + }, + "icon": "Symbol", + "icon_select": "Wähle ein Symbol", + "tab_general": "Generell", + "tab_content": "Inhalte", + "tab_options": "Optionen", + "tab_infos": "Infos", + "pick": { + "title": "Auswähle eines aus", + "title_multiple": "Auswählen", + "title_autocomplete": "Wert eingeben", + "max": "max. {count}" + }, + "date": { + "set": "Datum setzen", + "select": "Datum wählen...", + "xtoy": "{x} bis {y}", + "x": "ab {x}", + "y": "bis {y}", + "range_header": "Datumsbereich wählen", + "range_from": "Datum von", + "range_to": "Datum bis" + }, + "price": { + "free": "Gratis", + "xtoy": "von {x} bis {y}", + "x": "ab {x}", + "y": "bis {y}", + "range_from": "Preis von", + "range_to": "Preis bis" + }, + "sort": { + "title": "Sortieren", + "text": "Verschiebe die Elemente hoch oder runter, bis du sie korrekt geordnet hast." + }, + "move": { + "title": "Verschieben", + "action": "Verschieben", + "text": "Wähle in der Baumstruktur ein neues Überelement für {name}." + }, + "copy": { + "title": "Kopieren", + "action": "Kopieren", + "text": "Kopiere {name} in der Baumstruktur an ein neues Ziel.", + "includeDescendants": "Unterelemente inkludieren" + }, + "open": { + "title": "Öffnen" + }, + "rename": { + "title": "Umbennenen" + }, + "edit": { + "title": "Bearbeiten" + }, + "export": { + "action": "Exportieren" + }, + "parsedinput": { + "placeholder": "Wert eingeben", + "placeholder_output": "ID" + }, + "entityfields": { + "key": "Key", + "alias": "Alias", + "sort": "Sortierung", + "hash": "Hash", + "name": "Name", + "isActive": "Aktiv" + } + }, + + "gender": { + "undisclosed": "Ungenannt", + "male": "Männlich", + "female": "Weiblich", + "nonbinary": "Nicht-binär" + }, + + "revisions": { + "label": "Revisionen", + "actions": { + "updated": "Aktualisiert", + "created": "Erstellt", + "deleted": "Gelöscht" + }, + "view": "Ansehen" + }, + + "rte": { + "undo": "Rückgängig machen", + "redo": "Nochmals machen", + "bold": "Fett", + "italic": "Kursiv", + "underline": "Unterstrichen", + "strikethrough": "Durchgestrichen", + "heading": "Überschrift", + "heading1": "Überschrift 1", + "heading2": "Überschrift 2", + "heading3": "Überschrift 3", + "heading4": "Überschrift 4", + "heading5": "Überschrift 5", + "heading6": "Überschrift 6", + "paragraph": "Absatz", + "quote": "Zitat", + "list": "Liste", + "olist": "Geordnete Liste", + "ulist": "Ungeordnete Liste", + "code": "Code", + "line": "Linie", + "link": "Link", + "image": "Bild", + "video": "Video", + "accept": "OK", + "cancel": "Abbrechen", + "raw": "HTML bearbeiten" + }, + + "links": { + "overlay": { + "title": "Link auswählen" + }, + "providers": { + "page": "Seiten", + "media": "Medien" + }, + "target": { + "default": "Standard", + "self": "Self (gleicher Tab)", + "blank": "Blank (neuer Tab)" + }, + "fields": { + "target": "Ziel", + "title": "Titel", + "title_text": "Wird angezeigt, wenn man über den Link fährt", + "url": { + "url": "URL" + } + } + }, + + "flavors": { + "default": { + "name": "Standard", + "text": "Standard-Element erstellen" + } + }, + + "errors": { + "idnotfound": "Could not find an entity for the given ID", + "childnotallowed": "Not allowed as a child entity", + "onsave": { + "notallowed": "You are not allowed to edit this resource", + "empty": "You need to pass a model", + "noidmatch": "Do not fill out the Id field when creating a resource", + "flavornotfound": "Could not find a registration for this resource flavor" + }, + "ondelete": { + "idnotfound": "Could not find an entity for the given ID" + }, + "onupdate": { + "noidmatch": "The Id as part of the URL does not match the Id of the model", + "changetokenmismatch": "The change token is not valid anymore" + }, + "onmove": { + "title": "Could not move entity" + }, + "oncopy": { + "title": "Could not copy entity" + }, + "onsort": { + "title": "Could not sort entities" + }, + "http": { + "403": "Unauthorized", + "403_text": "You are not allowed to view this resource", + "404": "Not found", + "404_text": "The requested resource could not be found
({path})", + "409": "Conflict", + "409_text": "The operation could not be completed as it is not valid anymore. Please reload the page", + "4xx": "Client error", + "4xx_text": "There was an internal client error (code: {code})", + "504": "Timed out", + "504_text": "The backoffice did not receive a timely response from the server", + "5xx": "Server error", + "5xx_text": "There was an internal server error (code: {code})" + }, + "role": { + "emptyclaim": "A permission needs both a key and a value", + "nosection": "You have to select at least one section to give users access to" + }, + "changepassword": { + "emptyfields": "Please fill out all fields", + "nouser": "User is invalid", + "newpasswordsnotmatching": "The new password does not match the confirmation", + "passwordincorrect": "The current password for this user is wrong" + }, + "preview": { + "notfound": "Not found", + "notfound_text": "Could not find entity with ID \"{id}\"" + }, + "page": { + "parentnotallowed": "The page is not allowed as a children of the selected parent", + "sortingmultipleparents": "Sorting pages is only allowed for a specific parent page" + }, + "treeentity": { + "parentnotallowed": "This entity is not allowed as a children of the selected parent", + "sortingmultipleparents": "The selected entities have multiple parents, which is not allowed" + }, + "forms": { + "email_invalid": "The email address is not valid", + "emails_invalid": "The email address(es) is/are not valid", + "hex_format": "The input is not in a valid HEX #aabbcc format", + "url_format": "The input is no well-formed URL", + "not_unique": "The property must be unique in this collection", + "not_unique_alone": "There must be at least one entity in this collection which fulfills this condition", + "culture": "Could not find a culture for the given ISO code", + "reference_notfound": "The reference could not be found" + } + }, + + "unsavedchanges": { + "title": "Ungespeicherte Änderungen vorhanden", + "text": "Bist du sicher, dass du diese Seite verlassen möchtest ohne die Änderungen zu speichern?", + "close": "Änderungen verwerfen", + "confirm": "Auf der Seite bleiben" + }, + + "deleteoverlay": { + "close": "Abbrechen", + "confirm": "Löschen", + "title": "Element löschen", + "text": "Bist du sicher, dass du dieses Element löschen möchtest?", + "success": "Gelöscht", + "success_text": "Du hast das Element erfolgreich gelöscht", + "page_text": "Mit dieser Aktion löscht du die Seite inklusive aller Unterseiten. Bist du sicher?", + "page_success_text": "Die Seite wurde erfolgreich gelöscht" + }, + + "changepasswordoverlay": { + "title": "Passwort ändern", + "confirm": "Passwort ändern", + "fields": { + "currentPassword": "Aktuelles Passwort", + "newPassword": "Neues Passwort", + "confirmNewPassword": "Neues Passwort bestätigen" + } + }, + + "addoverlay": { + "title": "Element erstellen", + "gotoeditor": "Weiter" + }, + + "sections": { + "item": { + "dashboard": "Dashboard", + "spaces": "Räume", + "media": "Medien", + "pages": "Seiten", + "settings": "Einstellungen" + } + }, + + "settings": { + "groups": { + "system": "System", + "application": "Applikation", + "integrations": "Integrationen" + }, + "system": { + "updates": { + "name": "Updates", + "text": "Version {zero_version}", + "text_default": "Die zero Version aktualisieren" + }, + "applications": { + "name": "Applicationen", + "text": "Website Applikationen bearbeiten" + }, + "users": { + "name": "Benutzer & Berechtigungen", + "text": "Administration der Backoffice-Benutzer" + }, + "logs": { + "name": "Logs", + "text": "Logs ansehen und debuggen" + }, + "plugins": { + "name": "Plugins", + "text": "{plugin_count} installierte Plugin(s)", + "text_default": "Verwalten und Installieren von Plugins" + }, + "create": { + "name": "Plugin erstellen", + "text": "Von bestehendem Code erstellen" + } + }, + "application": { + "languages": { + "name": "Sprachen", + "text": "Für das Frontend" + }, + "translations": { + "name": "Übersetzungen", + "text": "Frontend-Texte und Übersetzungen" + }, + "countries": { + "name": "Länder", + "text": "Liste an Ländern verwalten" + }, + "mails": { + "name": "Mails", + "text": "Bearbeiten von Mail-Vorlagen" + }, + "integrations": { + "name": "Integrationen", + "text": "Verfügbare Integration verwalten" + } + } + }, + + "user": { + "name": "Benutzer", + "users": "Benutzer", + "add_user": "Benutzer hinzufügen", + "add_role": "Benutzerrolle hinzufügen", + "title": "Benutzer & Berechtigungen", + "count_permissions": "{count} Berechtigungen", + "one_permission": "1 Berechtigung", + "tab_permissions": "Berechtigungen", + "changePassword": "Passwort ändern", + "fields": { + "name_placeholder": "Gib deinen echten Name oder einen Benutzernamen ein", + "email": "Email", + "email_text": "Wird auch als Benutzername für den Login verwendet", + "email_placeholder": "E-Mail Adresse eingeben", + "passwordHash": "Passwort", + "passwordHash_text": "Login Passwort", + "avatarId": "Benutzerbild", + "avatarId_text": "Bild hochladen", + "languageId": "Sprache", + "languageId_text": "Lege die Backoffice-Sprache für diesen Benutzer fest", + "roles": "Benutzerrollen", + "roles_text": "Berechtigungen der Rollen hinzufügen", + "sections": "Bereiche", + "sections_text": "Lege die freigegebenen Bereiche fest", + "isActive": "Aktiv", + "isDisabled": "Deaktivieren", + "isLockedOut": "Ausgesperrt", + "isLockedOut_warning": "Der Benutzer ist ausgesperrt bis", + "isDisabled_warning": "Dieser Benutzer ist deaktiviert und kann sich nicht bei zero anmelden. Der Status kann unter Aktionen geändert werden" + } + }, + + "role": { + "name": "Benutzerrolle", + "roles": "Benutzerrollen", + "tab_permissions": "Berechtigungen", + "fields": { + "description": "Beschreibung", + "icon": "Symbol" + } + }, + + "permission": { + "states": { + "create": "Erstellen", + "read": "Lesen", + "update": "Aktualisieren", + "delete": "Löschen", + "write": "Bearbeiten", + "createdelete": "Erstellen/Löschen", + "none": "Nichts" + }, + "collections": { + "sections": "Sections", + "sections_description": "Allow access to the following sections", + "settings": "Settings", + "settings_description": "Define read and write access for settings areas", + "spaces": "Spaces", + "spaces_description": "Granular control of spaces", + "modules": "Modules", + "modules_description": "Availability of composing block modules" + } + }, + + "login": { + "headline": "Hallo und Willkommen", + "button": "Anmelden", + "button_forgot": "Passwort vergessen?", + "fields": { + "email": "Email", + "email_placeholder": "Gib deine Email-Adresse oder den Benutzernamen ein", + "password": "Passwort", + "password_placeholder": "Passwort eingeben" + }, + "errors": { + "unknown": "Ein unbekannter Login-Fehler ist aufgetreten", + "wrongcredentials": "Email oder Passwort ist falsch", + "lockedout": "Der Benutzer wurde aufgrund zu vieler Fehlversuche gesperrt", + "disabled": "Der Benutzer wurde deaktiviert", + "notallowed": "Der Benutzer kann sich nicht anmelden", + "requirestwofactor": "Zwei-Faktor-Authentifizierung ist für den Login erforderlich" + }, + "rejectReasons": { + "logout": "Erfolgreich abgemeldet", + "inactive": "Du warst zu lange inaktiv. Bitte erneut anmelden.", + "terminated": "Deine Session wurde beendet. Bitte erneut anmelden.", + "userchanged": "Die Benutzerdaten haben sich geändert. Bitte erneut anmelden.", + "passwordchanged": "Dein Password wurde erfolgreich geändert. Bitte erneut anmelden." + } + }, + + "modules": { + "add": { + "title": "Hinzufügen", + "text": "Füge Module zu einer Seite zusammen" + }, + "default_group": "Standard", + "notfound": "Es konnte kein Modul [{alias}] im Code gefunden werden.", + "noneavailable": "Es sind keine Module verfügbar" + }, + + "page": { + "name": "Seite", + "type": "Seitentyp", + "root": "Ursprung", + "info_tab": "Info", + + "folder": { + "name": "Ordner", + "description": "Seiten gruppieren", + "fields": { + "isPartOfRoute": "Ist Teil der URL", + "isPartOfRoute_text": "Wenn ja, dann wird dieser Ordner als Teil der URL angezeigt", + "urlAlias": "URL alias", + "urlAlias_text": "Dieses Feld anstatt des Namens für die URL-Generierung verwenden" + } + }, + + "overview": { + "actions": { + "continue": "Weitermachen", + "continue_text": "Du hast zuletzt \"{page}\" bearbeitet", + "new": "Neue Seite", + "new_text": "Erstelle eine neue Seite im obersten Ordner", + "history": "Verlauf", + "history_text": "Änderungsverlauf der Seiten anzeigen" + } + }, + "schedule": { + "label": "Planen", + "header": "Veröffentlichung planen", + "publish": "Veröffentlichen", + "unpublish": "Veröffentlichung zurückziehen", + "scheduled": "Geplant" + }, + + "actions": { + "emptyrecyclebin": "Papierkorb leeren" + }, + + "create": { + "title": "Seite erstellen", + "parent": "Seite darüber", + "nonavailable": "Hier sind keine Unterseiten erlaubt" + }, + + "preview": { + "title": "Vorschau" + }, + + "picker": { + "headline": "Seite auswählen", + "urlnotfound": "URL nicht gefunden" + }, + + "infotab": { + "links": "Link", + "revisions": "Revisionen" + }, + + "deleteoverlay": { + "title": "Seite löschen", + "text": "Mit dieser Aktion löscht du die Seite inklusive aller Unterseiten. Bist du sicher?", + "warning": "Es werden {pages} Seite(n) gelöscht.", + "success_text": "Die Seite wurde erfolgreich gelöscht" + } + }, + + "recyclebin": { + "name": "Papierkorb", + "description": "Zuletzt gelöscht Seiten anzeigen", + "purge": "Leeren", + "fields": { + "originalId": "Seiten ID", + "createdDate": "Gelöscht" + }, + "overlay": { + "title": "Aktionen" + } + }, + + "country": { + "list": "Länder", + "name": "Land", + "fields": { + "name": "Name", + "code": "Code", + "code_text": "Code im ISO 3166-1 Format (wird zur Anzeige der Flagge benötigt)", + "isPreferred": "Oben anzeigen" + } + }, + + "integration": { + "list": "Integrationen", + "name": "Integration", + "activeWarning": "Diese Integration ist nicht aktiv und wird somit unter keinen Umständen laufen.", + "errors": { + "typenotfound": "Der Integrationstyp existiert nicht", + "multiplenotallowed": "Es kann nur eine Integration je Typ angelegt werden", + "alreadycreated": "Es wurde bereits eine Integration für diesen Typ angelegt", + "notfound": "Integration konnte nicht gefunden werden", + "couldnotupdatestate": "Nicht aktualisiert", + "noaliasmatch": "Der Typ in der URL stimmt nicht mit dem Typ in den Daten überein" + }, + "fields": { + } + }, + + "language": { + "list": "Sprachen", + "name": "Sprache", + "fields": { + "name": "Name", + "locale": "Locale", + "code": "ISO Code", + "code_text": "Code im ISO 3166-1 Format", + "isDefault": "Standard", + "isDefault_text": "Als Standard-Sprache verwenden", + "isOptional": "Optional", + "isOptional_text": "Werte für eine optionale Sprache müssen nicht zwangsweise eingegeben werden", + "inheritedLanguageId": "Ersatz", + "inheritedLanguageId_text": "Wenn ein Inhalt in dieser Sprache nicht verfügbar ist, kann auf die ausgewhälte Sprache zurückgegriffen werden" + }, + "errors": { + "fallback_invalid": "Wähle eine andere Sprache als Ersatz", + "default_unique": "Es wurde bereits eine Standard-Sprache angelegt", + "default_not_optional": "Die Standard-Sprache kann nicht optional sein", + "default_no_fallback": "Die Standard-Sprache darf keinen Ersatz haben", + "needs_default": "Zumindest eine Sprache muss als Standard gesetzt werden" + } + }, + + "translation": { + "list": "Übersetzungen", + "name": "Übersetzung", + "display": { + "text": "Text", + "html": "HTML" + }, + "fields": { + "key": "Schlüssel", + "value": "Wert", + "display": "Anzeigetyp" + } + }, + + "iconpicker": { + "title": "Symbol auswählen", + "notfound": { + "title": "Symbol-Set nicht gefunden", + "text": "Das Symbol-Set (\"{name}\") konnte nicht gefunden werden" + } + }, + + "colorpicker": { + "placeholder": "Wähle eine Farbe aus (#aabbcc)" + }, + + "mediapicker": { + "select_text": "Medien hinzufügen", + "select_description": "Hochladen oder auswählen", + "upload_text": "Hochladen", + "upload_description": "Eine neue Datei hochladen" + }, + + "videopicker": { + "headline": "Video auswählen", + "providers": { + "html": "Datei hochladen", + "youtube": "YouTube", + "vimeo": "Vimeo" + } + }, + + "application": { + "list": "Applikationen", + "name": "Applikation", + "tab_features": "Features", + "tab_domains": "Domains", + "fields": { + "name": "Name", + "name_text": "Kurzer lesbarer Name", + "fullName": "Vollständiger Name", + "fullName_text": "Firmen- oder Produktname", + "imageid": "Bild", + "imageid_text": "Bild der Applikation, used for all mails, PDFs, ...", + "iconid": "Icon", + "iconid_text": "Vereinfachtes Bild", + "email": "Email", + "email_text": "Kontakt-Email", + "domains": "Domains", + "domains_text": "Domains für diese Applikation auswählen", + "domains_help": "Gültige Werte sind: \"example.com\", \"www.example.com\", \"example.com:8080\", oder \"https://www.example.com\".", + "domains_add": "Domain hinzufügen", + "features": "Features", + "features_text": "Zusätzliche Features aktivieren" + } + }, + + "media": { + "list": "Medien", + "name": "Datei", + "addfolder": "Ordner hinzufügen", + "editfolder": "Ordner bearbeiten", + "untitledName": "[kein_name]", + "actions": { + "folderdropdown": "Ordner", + "addfolder": "Ordner erstellen", + "addfolder_text": "Einen neuen Unterordner im aktuellen Ordner erstellen", + "addfile": "Dateien hochladen", + "addfile_text": "Eine oder mehrere Dateien in den aktuellen Ordner hochladen" + }, + "notfound": "Datei konnte nicht gefunden werden ({id})", + "selection": { + "clear": "Auswähl aufheben", + "selected": "{count} ausgewählt", + "selectaction": "Aktion" + }, + "fields": { + "foldername_placeholder": "Name eingeben ...", + "caption": "Untertitel", + "caption_text": "Zusätzlicher Untertitel", + "size": "Dateigröße", + "date": "Zuletzt bearbeitet am", + "filename": "Dateiname", + "source": "Datei", + "imageMeta": { + "alternativeText": "Alternativer Text", + "alternativeText_text": "Wird benutzt, wenn das Bild nicht geladen werden kann", + "dpi": "DPI", + "colorSpace": "Farbraum", + "hasTransparency": "Transparenz", + "frames": "Bilder/sec.", + "imageTakenDate": "Aufnahmedatum", + "dimension": "Dimension" + } + }, + "deleteoverlay": { + "title": "Medien löschen", + "folder_text": "Es werden dieser Ordner sowie alle Unterordner und darin enthaltene Dateien gelöscht.
Bist du sicher?", + "warning": "Löschen von {folders} Ordner und {files} Datei(en).", + "folder_success_text": "Der Ordner wurde erfolgreich gelöscht", + "start": { + "title": "Fortschritt", + "button": "Löschen starten" + } + }, + "child_count_1": "{count} Element", + "child_count_x": "{count} Elemente", + "upload": { + "headline": "Hochladen", + "multipleHeadline": "Es werden {count} Datei(en) hochgeladen...", + "singleHeadline": "Hochladen..." + } + }, + + "mailTemplate": { + "name": "Mailvorlage", + "list": "Mailvorlagen", + "emailBox": "Email-Einstellungen", + "tabs": { + "sender": "Absender", + "recipient": "Empfänger" + }, + "fields": { + "name": "Name", + "key": "Schlüssel", + "key_text": "Wird benötigt, um im Code auf die Vorlage zugreifen zu können", + "subject": "Betreff", + "body": "Inhalt", + "body_text": "Zusätzlicher Text, der in der Email ausgegeben wird", + "preheader": "Preheader", + "preheader_text": "Dieser Text wird in der Vorschau des Mailprogramms angezeigt", + "senderEmail": "Absender Email", + "senderEmail_text": "Wenn leer, dann wird die Email der Applikation verwendet", + "senderName": "Absendername", + "senderName_text": "Wenn leer, dann wird der Name der Applikation verwendet", + "recipientEmail": "Empfänger Email", + "recipientEmail_text": "Wird nur für Mails benützt, die keinen dynamischen Empfänger haben (z.B. Reporte)", + "cc": "Kopie an (CC)", + "cc_text": "E-Mails mit Komma trennen", + "bcc": "Unsichtbare Kopie an (BCC)", + "bcc_text": "E-Mails mit Komma trennen" + }, + "errors": { + "senderNotAllowed": "Die Absender E-Mail wird vom Mailservice nicht unterstützt. Bitte kontaktiere den Administrator für zusätzliche Hilfe." + } + }, + + "space": { + "list": "Räume", + "name": "Raum" + }, + + "preview": { + "name": "Vorschau" + }, + + "search": { + "permissions": { + "search_group": "Suche", + "search": "Suchen" + }, + "collection": { + "page": "Seite", + "mediaFolder": "Medien" + } + }, + + "blueprint": { + "hint": { + "childText": "This entity is a child of a blueprint. Its properties are automatically updated.", + "parentText": "This blueprint will automatically pass changes to its children.", + "parentCreateText": "This blueprint will create children in all registered apps and automatically pass changes to them.", + "goToBlueprint": "Blueprint", + "goToChild": "View child", + "settingsButton": "Settings", + "xUnlocked": "{count} unlocked" + }, + "errors": { + "cannotDeleteChild": "Entities which are synchronized with a blueprint cannot be deleted" + } + } +} \ No newline at end of file diff --git a/zero.Core/Identity/Services/UserService.cs b/zero.Core/Identity/Services/UserService.cs index efc7f163..9656c4be 100644 --- a/zero.Core/Identity/Services/UserService.cs +++ b/zero.Core/Identity/Services/UserService.cs @@ -20,6 +20,13 @@ public class UserService : IUserService } + /// + public async Task GetCurrentUser() + { + return await UserManager.GetUserAsync(Context.BackofficeUser); + } + + /// public async Task GetUserById(string id) { @@ -246,6 +253,11 @@ public class UserService : IUserService public interface IUserService { + /// + /// Get currently logged-in backoffice user + /// + Task GetCurrentUser(); + /// /// Find user by id ///