From f16ff4be79ffec6c5619b600776f9e4add20cc7a Mon Sep 17 00:00:00 2001 From: Bram Date: Tue, 5 May 2026 17:26:30 +0200 Subject: [PATCH 1/2] Latest translations (#5309) --- .../builder/locale/de/LC_MESSAGES/django.po | 36 +- .../database/locale/de/LC_MESSAGES/django.po | 441 +++-- .../core/locale/de/LC_MESSAGES/django.po | 480 ++++-- .../baserow/locale/de/LC_MESSAGES/django.po | 226 ++- .../locale/de/LC_MESSAGES/django.po | 342 +++- .../baserow_enterprise/locales/de.json | 779 ++++++--- .../baserow_enterprise/locales/es.json | 9 +- .../baserow_enterprise/locales/it.json | 44 +- .../baserow_enterprise/locales/ko.json | 11 +- .../locale/de/LC_MESSAGES/django.po | 53 +- .../modules/baserow_premium/locales/de.json | 361 ++-- web-frontend/locales/de.json | 423 +++-- web-frontend/locales/ko.json | 14 +- .../modules/automation/locales/de.json | 135 +- web-frontend/modules/builder/locales/de.json | 1468 +++++++++-------- web-frontend/modules/builder/locales/es.json | 3 +- web-frontend/modules/builder/locales/ko.json | 3 +- web-frontend/modules/core/locales/de.json | 1080 ++++++------ web-frontend/modules/core/locales/es.json | 5 +- web-frontend/modules/core/locales/ko.json | 5 +- .../modules/dashboard/locales/de.json | 2 +- web-frontend/modules/database/locales/de.json | 924 +++++++---- web-frontend/modules/database/locales/es.json | 4 + web-frontend/modules/database/locales/ko.json | 22 +- .../modules/integrations/locales/de.json | 270 ++- .../modules/integrations/locales/fr.json | 4 +- .../modules/integrations/locales/ko.json | 2 +- 27 files changed, 4690 insertions(+), 2456 deletions(-) diff --git a/backend/src/baserow/contrib/builder/locale/de/LC_MESSAGES/django.po b/backend/src/baserow/contrib/builder/locale/de/LC_MESSAGES/django.po index b7b567f5a2..5582e91a13 100644 --- a/backend/src/baserow/contrib/builder/locale/de/LC_MESSAGES/django.po +++ b/backend/src/baserow/contrib/builder/locale/de/LC_MESSAGES/django.po @@ -3,16 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-18 13:32+0000\n" +"POT-Creation-Date: 2025-11-25 13:02+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" -"Language: \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -20,39 +19,44 @@ msgstr "" #: src/baserow/contrib/builder/builder_beta_init_application.py:45 msgid "Homepage" -msgstr "" +msgstr "Startseite" #: src/baserow/contrib/builder/builder_beta_init_application.py:46 msgid "Examples" -msgstr "" +msgstr "Beispiele" #: src/baserow/contrib/builder/builder_beta_init_application.py:47 msgid "Customers" -msgstr "" +msgstr "Kunden" #: src/baserow/contrib/builder/builder_beta_init_application.py:48 msgid "List rows" -msgstr "" +msgstr "Zeilen auflisten" #: src/baserow/contrib/builder/builder_beta_init_application.py:49 msgid "Local Baserow" -msgstr "" +msgstr "Lokales Baserow" #: src/baserow/contrib/builder/builder_beta_init_application.py:50 msgid "Name" -msgstr "" +msgstr "Name" #: src/baserow/contrib/builder/builder_beta_init_application.py:51 msgid "Last name" -msgstr "" +msgstr "Nachname" + +#: src/baserow/contrib/builder/data_providers/data_provider_types.py:621 +#, python-format +msgid "%(user_source_name)s member" +msgstr "%(user_source_name)s-Mitglied" -#: src/baserow/contrib/builder/data_sources/service.py:128 +#: src/baserow/contrib/builder/data_sources/service.py:158 msgid "Data source" -msgstr "" +msgstr "Datenquelle" -#: src/baserow/contrib/builder/elements/element_types.py:184 -#: src/baserow/contrib/builder/elements/element_types.py:189 -#: src/baserow/contrib/builder/elements/element_types.py:194 +#: src/baserow/contrib/builder/elements/mixins.py:612 +#: src/baserow/contrib/builder/elements/mixins.py:617 +#: src/baserow/contrib/builder/elements/mixins.py:622 #, python-format msgid "Column %(count)s" -msgstr "" +msgstr "Spalte %(count)s" diff --git a/backend/src/baserow/contrib/database/locale/de/LC_MESSAGES/django.po b/backend/src/baserow/contrib/database/locale/de/LC_MESSAGES/django.po index 040337ed1d..2e1fd81e60 100644 --- a/backend/src/baserow/contrib/database/locale/de/LC_MESSAGES/django.po +++ b/backend/src/baserow/contrib/database/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-18 13:32+0000\n" +"POT-Creation-Date: 2026-03-16 21:52+0000\n" "PO-Revision-Date: 2024-01-31 13:43+0000\n" "Last-Translator: SWEETGOOD \n" "Language-Team: German \n" "Language-Team: German " +"Der Name des MCP-Endpunkts (%(endpoint_id)s) wurde von " +"\"%(original_endpoint_name)s\" in \"%(endpoint_name)s\" geändert" + +#: src/baserow/core/mcp/actions.py:108 +msgid "Delete MCP endpoint" +msgstr "MCP-Endpunkt löschen" + +#: src/baserow/core/mcp/actions.py:109 +#, python-format +msgid "" +"The MCP Endpoint \"%(endpoint_name)s\" (%(endpoint_id)s) has been deleted" +msgstr "" +"Der MCP-Endpunkt \"%(endpoint_name)s\" (%(endpoint_id)s) wurde gelöscht" + +#: src/baserow/core/notification_types.py:92 +#, python-format +msgid "%(user)s accepted your invitation to collaborate on %(workspace_name)s." +msgstr "" +"%(user)s hat Ihre Einladung, am Arbeitsbereich %(workspace_name)s " "mitzuarbeiten, angenommen." -#: src/baserow/core/notification_types.py:135 +#: src/baserow/core/notification_types.py:133 #, python-format -msgid "%(user)s rejected your invitation to collaborate to %(workspace_name)s." +msgid "%(user)s rejected your invitation to collaborate on %(workspace_name)s." msgstr "" "%(user)s hat Ihre Einladung, am Arbeitsbereich %(workspace_name)s " "mitzuarbeiten, abgelehnt." @@ -248,11 +330,11 @@ msgstr "" "Snapshot \"%(snapshot_name)s\" (%(snapshot_id)s) für Anwendung \"" "%(application_name)s\" (%(application_id)s) erstellt." -#: src/baserow/core/snapshots/actions.py:68 +#: src/baserow/core/snapshots/actions.py:72 msgid "Restore Snapshot" msgstr "Snapshot wiederherstellen" -#: src/baserow/core/snapshots/actions.py:70 +#: src/baserow/core/snapshots/actions.py:74 #, python-format msgid "" "Snapshot \"%(snapshot_name)s\" (%(snapshot_id)s) restored from application " @@ -263,11 +345,11 @@ msgstr "" "%(original_application_name)s\" (%(original_application_id)s) zu Anwendung \"" "%(application_name)s\" (%(application_id)s) wiederhergestellt." -#: src/baserow/core/snapshots/actions.py:124 +#: src/baserow/core/snapshots/actions.py:133 msgid "Delete Snapshot" msgstr "Snapshot löschen" -#: src/baserow/core/snapshots/actions.py:126 +#: src/baserow/core/snapshots/actions.py:135 #, python-format msgid "" "Snapshot \"%(snapshot_name)s\" (%(snapshot_id)s) deleted for application " @@ -276,101 +358,78 @@ msgstr "" "Snapshot \"%(snapshot_name)s\" (%(snapshot_id)s) für Anwendung \"" "%(application_name)s\" (%(application_id)s) gelöscht." -#: src/baserow/core/templates/baserow/core/group_invitation.html:144 -#: src/baserow/core/templates/baserow/core/workspace_invitation.html:144 -msgid "Invitation" -msgstr "Einladung" - -#: src/baserow/core/templates/baserow/core/group_invitation.html:149 -#, python-format -msgid "" -"%(first_name)s has invited you to collaborate on " -"%(group_name)s." -msgstr "" -"%(first_name)s hat Sie eingeladen, am Arbeitsbereich " -"%(group_name)s mitzuarbeiten." - -#: src/baserow/core/templates/baserow/core/group_invitation.html:163 -#: src/baserow/core/templates/baserow/core/workspace_invitation.html:167 -msgid "Accept invitation" -msgstr "Einladung annehmen" - -#: src/baserow/core/templates/baserow/core/group_invitation.html:177 -#: src/baserow/core/templates/baserow/core/notifications_summary.html:212 -#: src/baserow/core/templates/baserow/core/user/account_deleted.html:154 -#: src/baserow/core/templates/baserow/core/user/account_deletion_cancelled.html:154 -#: src/baserow/core/templates/baserow/core/user/account_deletion_scheduled.html:159 -#: src/baserow/core/templates/baserow/core/user/reset_password.html:177 -#: src/baserow/core/templates/baserow/core/workspace_invitation.html:181 -msgid "" -"Baserow is an open source no-code database tool which allows you to " -"collaborate on projects, customers and more. It gives you the powers of a " -"developer without leaving your browser." -msgstr "" -"Baserow ist eine Open Source No-Code-Datenbank, die Ihnen die Zusammenarbeit " -"an Projekten, Kunden und mehr ermöglicht. Sie gibt Ihnen direkt in Ihrem " -"Browser die Fähigkeiten eines Entwicklers." - -#: src/baserow/core/templates/baserow/core/notifications_summary.html:146 +#: src/baserow/core/templates/baserow/core/notifications_summary.html:173 #, python-format msgid "You have %(counter)s new notification" msgid_plural "You have %(counter)s new notifications" msgstr[0] "Sie haben %(counter)s neue Benachrichtigung" msgstr[1] "Sie haben %(counter)s neue Benachrichtigungen" -#: src/baserow/core/templates/baserow/core/notifications_summary.html:187 +#: src/baserow/core/templates/baserow/core/notifications_summary.html:214 #, python-format msgid "Plus %(counter)s more notification." msgid_plural "Plus %(counter)s more notifications." msgstr[0] "Plus %(counter)s weitere Benachrichtigung." msgstr[1] "Plus %(counter)s weitere Benachrichtigungen." -#: src/baserow/core/templates/baserow/core/notifications_summary.html:198 -msgid "View in Baserow" -msgstr "In Baserow anzeigen" +#: src/baserow/core/templates/baserow/core/notifications_summary.html:220 +#: src/baserow/core/templates/baserow/core/user/account_deleted.html:184 +#: src/baserow/core/templates/baserow/core/user/account_deletion_cancelled.html:184 +#: src/baserow/core/templates/baserow/core/user/account_deletion_scheduled.html:189 +#: src/baserow/core/templates/baserow/core/user/change_email_confirmation.html:207 +#: src/baserow/core/templates/baserow/core/user/reset_password.html:207 +#: src/baserow/core/templates/baserow/core/workspace_invitation.html:209 +msgid "" +"Baserow is an open source no-code database tool which allows you to " +"collaborate on projects, customers and more. It gives you the powers of a " +"developer without leaving your browser." +msgstr "" +"Baserow ist eine Open Source No-Code-Datenbank, die Ihnen die Zusammenarbeit " +"an Projekten, Kunden und mehr ermöglicht. Sie gibt Ihnen direkt in Ihrem " +"Browser die Fähigkeiten eines Entwicklers." -#: src/baserow/core/templates/baserow/core/user/account_deleted.html:144 +#: src/baserow/core/templates/baserow/core/user/account_deleted.html:173 msgid "Account permanently deleted" msgstr "Konto dauerhaft gelöscht" -#: src/baserow/core/templates/baserow/core/user/account_deleted.html:149 +#: src/baserow/core/templates/baserow/core/user/account_deleted.html:178 #, python-format msgid "" -"Your account (%(username)s) on Baserow (%(public_web_frontend_hostname)s) " +"Your account (%(username)s) on Baserow (%(baserow_embedded_share_hostname)s) " "has been permanently deleted." msgstr "" -"Ihr Konto (%(username)s) auf Baserow (%(public_web_frontend_hostname)s) " +"Ihr Konto (%(username)s) auf Baserow (%(baserow_embedded_share_hostname)s) " "wurde endgültig gelöscht." -#: src/baserow/core/templates/baserow/core/user/account_deletion_cancelled.html:144 +#: src/baserow/core/templates/baserow/core/user/account_deletion_cancelled.html:173 msgid "Account deletion cancelled" msgstr "Kontolöschung aufgehoben" -#: src/baserow/core/templates/baserow/core/user/account_deletion_cancelled.html:149 +#: src/baserow/core/templates/baserow/core/user/account_deletion_cancelled.html:178 #, python-format msgid "" -"Your account (%(username)s) on Baserow (%(public_web_frontend_hostname)s) " +"Your account (%(username)s) on Baserow (%(baserow_embedded_share_hostname)s) " "was pending deletion, but you've logged in so this operation has been " "cancelled." msgstr "" -"Ihr Konto (%(username)s) auf Baserow (%(public_web_frontend_hostname)s) war " -"zur Löschung vorgesehen, aber Sie haben sich angemeldet, so dass dieser " +"Ihr Konto (%(username)s) auf Baserow (%(baserow_embedded_share_hostname)s) " +"war zur Löschung vorgesehen, aber Sie haben sich angemeldet, so dass dieser " "Vorgang abgebrochen wurde." -#: src/baserow/core/templates/baserow/core/user/account_deletion_scheduled.html:144 +#: src/baserow/core/templates/baserow/core/user/account_deletion_scheduled.html:173 msgid "Account pending deletion" msgstr "Zur Löschung anstehendes Konto" -#: src/baserow/core/templates/baserow/core/user/account_deletion_scheduled.html:149 +#: src/baserow/core/templates/baserow/core/user/account_deletion_scheduled.html:178 #, python-format msgid "" -"Your account (%(username)s) on Baserow (%(public_web_frontend_hostname)s) " +"Your account (%(username)s) on Baserow (%(baserow_embedded_share_hostname)s) " "will be permanently deleted in %(days_left)s days." msgstr "" -"Ihr Konto (%(username)s) bei Baserow (%(public_web_frontend_hostname)s) wird " -"in %(days_left)s Tagen endgültig gelöscht." +"Ihr Konto (%(username)s) bei Baserow (%(baserow_embedded_share_hostname)s) " +"wird in %(days_left)s Tagen endgültig gelöscht." -#: src/baserow/core/templates/baserow/core/user/account_deletion_scheduled.html:154 +#: src/baserow/core/templates/baserow/core/user/account_deletion_scheduled.html:183 msgid "" "If you've changed your mind and want to cancel your account deletion, you " "just have to login again." @@ -378,23 +437,73 @@ msgstr "" "Wenn Sie es sich anders überlegt haben und die Löschung Ihres Kontos " "rückgängig machen wollen, müssen Sie sich einfach erneut anmelden." -#: src/baserow/core/templates/baserow/core/user/reset_password.html:144 -#: src/baserow/core/templates/baserow/core/user/reset_password.html:163 +#: src/baserow/core/templates/baserow/core/user/change_email_confirmation.html:173 +msgid "Confirm email address change" +msgstr "Änderung der E-Mail-Adresse bestätigen" + +#: src/baserow/core/templates/baserow/core/user/change_email_confirmation.html:178 +#, python-format +msgid "" +"A request was made to change the email address for your Baserow account from " +"%(old_email)s to %(new_email)s on Baserow " +"(%(baserow_embedded_share_hostname)s). If you did not authorize this, you " +"may simply ignore this email." +msgstr "" +"Es wurde eine Anfrage gestellt, die E-Mail-Adresse Ihres Baserow-Kontos von " +"%(old_email)s in %(new_email)s auf Baserow " +"(%(baserow_embedded_share_hostname)s) zu ändern. Wenn Sie dies nicht " +"autorisiert haben, können Sie diese E-Mail einfach ignorieren." + +#: src/baserow/core/templates/baserow/core/user/change_email_confirmation.html:183 +#, python-format +msgid "" +"To confirm your email address change, simply click the button below. This " +"link will expire in %(hours)s hours." +msgstr "" +"Um die Änderung Ihrer E-Mail-Adresse zu bestätigen, klicken Sie einfach auf " +"die unten stehende Schaltfläche. Dieser Link läuft in %(hours)s Stunden ab." + +#: src/baserow/core/templates/baserow/core/user/change_email_confirmation.html:192 +msgid "Confirm email change" +msgstr "E-Mail-Änderung bestätigen" + +#: src/baserow/core/templates/baserow/core/user/email_pending_verification.html:178 +msgid "Thank you for using Baserow" +msgstr "Vielen Dank, dass Sie Baserow nutzen" + +#: src/baserow/core/templates/baserow/core/user/email_pending_verification.html:183 +msgid "" +"To keep your account secure, please take a moment to verify your email by " +"clicking the button below. Your email address will be used to assist you in " +"changing your Baserow password should you ever need to in the future." +msgstr "" +"Um Ihr Konto zu schützen, nehmen Sie sich bitte einen Moment Zeit, um Ihre " +"E-Mail-Adresse zu verifizieren, indem Sie auf die unten stehende " +"Schaltfläche klicken. Ihre E-Mail-Adresse wird verwendet, um Sie zu " +"unterstützen, falls Sie Ihr Baserow-Passwort in Zukunft einmal ändern " +"müssen." + +#: src/baserow/core/templates/baserow/core/user/email_pending_verification.html:192 +msgid "Confirm" +msgstr "Bestätigen" + +#: src/baserow/core/templates/baserow/core/user/reset_password.html:173 +#: src/baserow/core/templates/baserow/core/user/reset_password.html:192 msgid "Reset password" msgstr "Passwort zurücksetzen" -#: src/baserow/core/templates/baserow/core/user/reset_password.html:149 +#: src/baserow/core/templates/baserow/core/user/reset_password.html:178 #, python-format msgid "" "A password reset was requested for your account (%(username)s) on Baserow " -"(%(public_web_frontend_hostname)s). If you did not authorize this, you may " -"simply ignore this email." +"(%(baserow_embedded_share_hostname)s). If you did not authorize this, you " +"may simply ignore this email." msgstr "" -"Ein Passwort-Reset wurde bei Baserow (%(public_web_frontend_hostname)s) für " -"Ihr Konto ( %(username)s) beantragt. Wenn Sie dies nicht angefordert haben, " -"können Sie diese E-Mail einfach ignorieren." +"Ein Passwort-Reset wurde bei Baserow (%(baserow_embedded_share_hostname)s) " +"für Ihr Konto (%(username)s) beantragt. Wenn Sie dies nicht angefordert " +"haben, können Sie diese E-Mail einfach ignorieren." -#: src/baserow/core/templates/baserow/core/user/reset_password.html:154 +#: src/baserow/core/templates/baserow/core/user/reset_password.html:183 #, python-format msgid "" "To continue with your password reset, simply click the button below, and you " @@ -405,20 +514,28 @@ msgstr "" "auf die unten stehende Schaltfläche um Ihr Passwort zu ändern. Dieser Link " "läuft in %(hours)s Stunden ab." -#: src/baserow/core/templates/baserow/core/workspace_invitation.html:149 +#: src/baserow/core/templates/baserow/core/workspace_invitation.html:173 +msgid "Invitation" +msgstr "Einladung" + +#: src/baserow/core/templates/baserow/core/workspace_invitation.html:178 #, python-format msgid "" -"%(first_name)s has invited you to collaborate on " -"%(workspace_name)s." +"%(first_name)s has invited you to collaborate on " +"%(workspace_name)s." msgstr "" "%(first_name)s hat Sie eingeladen, am Arbeitsbereich " "%(workspace_name)s mitzuarbeiten." -#: src/baserow/core/trash/actions.py:20 +#: src/baserow/core/templates/baserow/core/workspace_invitation.html:194 +msgid "Accept invitation" +msgstr "Einladung annehmen" + +#: src/baserow/core/trash/actions.py:21 msgid "Empty trash" msgstr "Papierkorb leeren" -#: src/baserow/core/trash/actions.py:22 +#: src/baserow/core/trash/actions.py:23 #, python-format msgid "" "Trash for application \"%(application_name)s\" (%(application_id)s) has been " @@ -427,7 +544,7 @@ msgstr "" "Der Papierkorb für die Anwendung \"%(application_name)s\" " "(%(application_id)s) wurde geleert" -#: src/baserow/core/trash/actions.py:79 +#: src/baserow/core/trash/actions.py:84 #, python-format msgid "" "Trash for workspace \"%(workspace_name)s\" (%(workspace_id)s) has been " @@ -436,11 +553,11 @@ msgstr "" "Der Papierkorb für den Arbeitsbereich \"%(workspace_name)s\" " "(%(workspace_id)s) wurde geleert." -#: src/baserow/core/trash/actions.py:90 +#: src/baserow/core/trash/actions.py:95 msgid "Restore from trash" msgstr "Aus dem Papierkorb wiederherstellen" -#: src/baserow/core/trash/actions.py:91 +#: src/baserow/core/trash/actions.py:96 #, python-format msgid "" "Item of type \"%(item_type)s\" (%(item_id)s) has been restored from trash" @@ -448,35 +565,59 @@ msgstr "" "Element des Typs \"%(item_type)s\" (%(item_id)s) wurde aus dem Papierkorb " "wiederhergestellt" -#: src/baserow/core/user/actions.py:23 +#: src/baserow/core/two_factor_auth/actions.py:19 +msgid "Configure two-factor authentication" +msgstr "Zwei-Faktor-Authentifizierung konfigurieren" + +#: src/baserow/core/two_factor_auth/actions.py:21 +#, python-format +msgid "" +"User \"%(user_email)s\" (%(user_id)s) configured %(provider_type)s (enabled " +"%(is_enabled)s) two-factor authentication." +msgstr "" +"Benutzer \"%(user_email)s\" (%(user_id)s) hat %(provider_type)s (aktiviert " +"%(is_enabled)s) Zwei-Faktor-Authentifizierung konfiguriert." + +#: src/baserow/core/two_factor_auth/actions.py:71 +msgid "Disable two-factor authentication" +msgstr "Zwei-Faktor-Authentifizierung deaktivieren" + +#: src/baserow/core/two_factor_auth/actions.py:72 +#, python-format +msgid "" +"User \"%(user_email)s\" (%(user_id)s) disabled two-factor authentication." +msgstr "" +"Benutzer \"%(user_email)s\" (%(user_id)s) hat die " +"Zwei-Faktor-Authentifizierung deaktiviert." + +#: src/baserow/core/user/actions.py:25 msgid "Create User" msgstr "Benutzer erstellen" -#: src/baserow/core/user/actions.py:25 +#: src/baserow/core/user/actions.py:27 #, python-format msgid "" -"User \"%(user_email)s\" (%(user_id)s) created via \"%(auth_provider_type)s" -"\" (%(auth_provider_id)s) auth provider (invitation: " -"%(with_invitation_token)s)" +"User \"%(user_email)s\" (%(user_id)s) created via \"%(auth_provider_type)s\" " +"(%(auth_provider_id)s) auth provider (invitation: %(with_invitation_token)s)" msgstr "" "Benutzer \"%(user_email)s\" (%(user_id)s) über \"%(auth_provider_type)s\" " "(%(auth_provider_id)s) auth provider (Einladung: %(with_invitation_token)s) " "erstellt" -#: src/baserow/core/user/actions.py:110 +#: src/baserow/core/user/actions.py:119 msgid "Update User" msgstr "Benutzer aktualisieren" -#: src/baserow/core/user/actions.py:111 +#: src/baserow/core/user/actions.py:120 #, python-format msgid "User \"%(user_email)s\" (%(user_id)s) updated" msgstr "Benutzer \"%(user_email)s\" (%(user_id)s) aktualisiert" -#: src/baserow/core/user/actions.py:163 +#: src/baserow/core/user/actions.py:184 msgid "Schedule user deletion" msgstr "Planen Sie die Löschung von Benutzern" -#: src/baserow/core/user/actions.py:165 +#: src/baserow/core/user/actions.py:186 #, python-format msgid "" "User \"%(user_email)s\" (%(user_id)s) scheduled to be deleted after grace " @@ -485,11 +626,11 @@ msgstr "" "Benutzer \"%(user_email)s\" (%(user_id)s) soll nach der Karenzzeit gelöscht " "werden" -#: src/baserow/core/user/actions.py:196 +#: src/baserow/core/user/actions.py:220 msgid "Cancel user deletion" msgstr "Benutzerlöschung abbrechen" -#: src/baserow/core/user/actions.py:198 +#: src/baserow/core/user/actions.py:222 #, python-format msgid "" "User \"%(user_email)s\" (%(user_id)s) logged in cancelling the deletion " @@ -498,48 +639,94 @@ msgstr "" "Benutzer \"%(user_email)s\" (%(user_id)s) hat sich angemeldet und den " "Löschvorgang abgebrochen" -#: src/baserow/core/user/actions.py:229 +#: src/baserow/core/user/actions.py:256 msgid "Sign In User" msgstr "Benutzer anmelden" -#: src/baserow/core/user/actions.py:231 +#: src/baserow/core/user/actions.py:258 #, python-format msgid "" -"User \"%(user_email)s\" (%(user_id)s) signed in via \"%(auth_provider_type)s" -"\" (%(auth_provider_id)s) auth provider" +"User \"%(user_email)s\" (%(user_id)s) signed in via " +"\"%(auth_provider_type)s\" (%(auth_provider_id)s) auth provider" msgstr "" "Benutzer \"%(user_email)s\" (%(user_id)s) über \"%(auth_provider_type)s\" " "(%(auth_provider_id)s) auth provider angemeldet" -#: src/baserow/core/user/actions.py:283 +#: src/baserow/core/user/actions.py:327 msgid "Send reset user password" msgstr "Zurückgesetztes Benutzerpasswort senden" -#: src/baserow/core/user/actions.py:284 +#: src/baserow/core/user/actions.py:328 #, python-format msgid "User \"%(user_email)s\" (%(user_id)s) requested to reset password" msgstr "" "Benutzer \"%(user_email)s\" (%(user_id)s) hat sein Passwort zurückgesetzt" -#: src/baserow/core/user/actions.py:314 +#: src/baserow/core/user/actions.py:361 msgid "Change user password" msgstr "Passwort zurücksetzen" -#: src/baserow/core/user/actions.py:315 +#: src/baserow/core/user/actions.py:362 #, python-format msgid "User \"%(user_email)s\" (%(user_id)s) changed password" msgstr "Benutzer \"%(user_email)s\" (%(user_id)s) hat sein Passwort geändert" -#: src/baserow/core/user/actions.py:351 +#: src/baserow/core/user/actions.py:401 msgid "Reset user password" msgstr "Passwort zurücksetzen" -#: src/baserow/core/user/actions.py:352 +#: src/baserow/core/user/actions.py:402 #, python-format msgid "User \"%(user_email)s\" (%(user_id)s) reset password" msgstr "" "Benutzer \"%(user_email)s\" (%(user_id)s) hat das Passwort zurückgesetzt" +#: src/baserow/core/user/actions.py:438 +msgid "Send verify email" +msgstr "E-Mail-Verifizierung senden" + +#: src/baserow/core/user/actions.py:439 +#, python-format +msgid "User \"%(user_email)s\" (%(user_id)s) requested to verify email" +msgstr "" +"Benutzer \"%(user_email)s\" (%(user_id)s) hat eine E-Mail-Verifizierung " +"angefordert" + +#: src/baserow/core/user/actions.py:472 +msgid "Verify email" +msgstr "E-Mail verifizieren" + +#: src/baserow/core/user/actions.py:473 +#, python-format +msgid "User \"%(user_email)s\" (%(user_id)s) verify email" +msgstr "Benutzer \"%(user_email)s\" (%(user_id)s) E-Mail verifizieren" + +#: src/baserow/core/user/actions.py:510 +msgid "Send change email confirmation" +msgstr "Bestätigung der E-Mail-Änderung senden" + +#: src/baserow/core/user/actions.py:512 +#, python-format +msgid "" +"User \"%(user_email)s\" (%(user_id)s) requested to change email to " +"\"%(new_email)s\"" +msgstr "" +"Benutzer \"%(user_email)s\" (%(user_id)s) hat angefordert, die E-Mail in " +"\"%(new_email)s\" zu ändern" + +#: src/baserow/core/user/actions.py:558 +msgid "Change email" +msgstr "E-Mail ändern" + +#: src/baserow/core/user/actions.py:560 +#, python-format +msgid "" +"User \"%(old_email)s\" (%(user_id)s) changed email to \"%(new_email)s\" by " +"using the token." +msgstr "" +"Benutzer \"%(old_email)s\" (%(user_id)s) hat die E-Mail mit dem Token in " +"\"%(new_email)s\" geändert." + #: src/baserow/core/user/emails.py:16 msgid "Reset password - Baserow" msgstr "Passwort zurücksetzen - Baserow" @@ -556,7 +743,6 @@ msgstr "Konto dauerhaft gelöscht - Baserow" msgid "Account deletion cancelled - Baserow" msgstr "Kontolöschung abgebrochen - Baserow" -#: src/baserow/core/user/handler.py:248 -#, python-format -msgid "%(name)s's workspace" -msgstr "%(name)s's Arbeitsbereich" +#: src/baserow/core/user/emails.py:94 +msgid "Confirm email address change - Baserow" +msgstr "Änderung der E-Mail-Adresse bestätigen - Baserow" diff --git a/backend/src/baserow/locale/de/LC_MESSAGES/django.po b/backend/src/baserow/locale/de/LC_MESSAGES/django.po index 77391c2cc7..c1bbd50203 100755 --- a/backend/src/baserow/locale/de/LC_MESSAGES/django.po +++ b/backend/src/baserow/locale/de/LC_MESSAGES/django.po @@ -3,25 +3,239 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-18 13:32+0000\n" +"POT-Creation-Date: 2026-03-16 21:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" -"Language: \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/baserow/api/authentication.py:25 +#: src/baserow/api/authentication.py:26 msgid "Token contained no recognizable user identification" -msgstr "" +msgstr "Das Token enthielt keine erkennbare Benutzerkennung" -#: src/baserow/api/authentication.py:33 +#: src/baserow/api/authentication.py:34 msgid "User not found" +msgstr "Benutzer nicht gefunden" + +#: src/baserow/contrib/automation/action_scopes.py:10 +#: src/baserow/contrib/automation/actions.py:4 +#, python-format +msgid "in automation \"%(automation_name)s\" (%(automation_id)s)." +msgstr "in Automatisierung \"%(automation_name)s\" (%(automation_id)s)." + +#: src/baserow/contrib/automation/action_scopes.py:14 +#, python-format +msgid "" +"of type (%(node_type)s) in automation \"%(automation_name)s\" " +"(%(automation_id)s)." +msgstr "" +"vom Typ (%(node_type)s) in Automatisierung \"%(automation_name)s\" " +"(%(automation_id)s)." + +#: src/baserow/contrib/automation/actions.py:8 +#, python-format +msgid "" +"in workflow (%(workflow_id)s) in automation \"%(automation_name)s\" " +"(%(automation_id)s)." msgstr "" +"in Workflow (%(workflow_id)s) in Automatisierung \"%(automation_name)s\" " +"(%(automation_id)s)." + +#: src/baserow/contrib/automation/automation_init_application.py:29 +msgid "Workflow" +msgstr "Workflow" + +#: src/baserow/contrib/automation/automation_init_application.py:30 +msgid "Local Baserow" +msgstr "Lokales Baserow" + +#: src/baserow/contrib/automation/nodes/actions.py:25 +msgid "Create automation node" +msgstr "Automatisierungsknoten erstellen" + +#: src/baserow/contrib/automation/nodes/actions.py:26 +#, python-format +msgid "Node (%(node_id)s) created" +msgstr "Knoten (%(node_id)s) erstellt" + +#: src/baserow/contrib/automation/nodes/actions.py:90 +msgid "Update automation node" +msgstr "Automatisierungsknoten aktualisieren" + +#: src/baserow/contrib/automation/nodes/actions.py:91 +#, python-format +msgid "Node (%(node_id)s) updated" +msgstr "Knoten (%(node_id)s) aktualisiert" + +#: src/baserow/contrib/automation/nodes/actions.py:159 +msgid "Delete automation node" +msgstr "Automatisierungsknoten löschen" + +#: src/baserow/contrib/automation/nodes/actions.py:160 +#, python-format +msgid "Node (%(node_id)s) deleted" +msgstr "Knoten (%(node_id)s) gelöscht" + +#: src/baserow/contrib/automation/nodes/actions.py:217 +msgid "Duplicate automation node" +msgstr "Automatisierungsknoten duplizieren" + +#: src/baserow/contrib/automation/nodes/actions.py:218 +#, python-format +msgid "Node (%(node_id)s) duplicated" +msgstr "Knoten (%(node_id)s) dupliziert" + +#: src/baserow/contrib/automation/nodes/actions.py:289 +msgid "Replace automation node" +msgstr "Automatisierungsknoten ersetzen" + +#: src/baserow/contrib/automation/nodes/actions.py:291 +#, python-format +msgid "" +"Node (%(node_id)s) changed from a type of %(original_node_type)s to " +"%(node_type)s" +msgstr "" +"Knoten (%(node_id)s) wurde vom Typ %(original_node_type)s zu " +"%(node_type)s geändert" + +#: src/baserow/contrib/automation/nodes/actions.py:377 +msgid "Moved automation node" +msgstr "Automatisierungsknoten verschoben" + +#: src/baserow/contrib/automation/nodes/actions.py:378 +#, python-format +msgid "Node (%(node_id)s) moved" +msgstr "Knoten (%(node_id)s) verschoben" + +#: src/baserow/contrib/automation/nodes/node_types.py:260 +msgid "Branch" +msgstr "Verzweigung" + +#: src/baserow/contrib/automation/workflows/actions.py:28 +msgid "Create automation workflow" +msgstr "Automatisierungs-Workflow erstellen" + +#: src/baserow/contrib/automation/workflows/actions.py:29 +#, python-format +msgid "Workflow \"%(workflow_name)s\" (%(workflow_id)s) created" +msgstr "Workflow \"%(workflow_name)s\" (%(workflow_id)s) erstellt" + +#: src/baserow/contrib/automation/workflows/actions.py:90 +msgid "Update automation workflow" +msgstr "Automatisierungs-Workflow aktualisieren" + +#: src/baserow/contrib/automation/workflows/actions.py:91 +#, python-format +msgid "Workflow \"%(workflow_name)s\" (%(workflow_id)s) updated" +msgstr "Workflow \"%(workflow_name)s\" (%(workflow_id)s) aktualisiert" + +#: src/baserow/contrib/automation/workflows/actions.py:170 +msgid "Delete workflow" +msgstr "Workflow löschen" + +#: src/baserow/contrib/automation/workflows/actions.py:171 +#, python-format +msgid "Workflow \"%(workflow_name)s\" (%(workflow_id)s) deleted" +msgstr "Workflow \"%(workflow_name)s\" (%(workflow_id)s) gelöscht" + +#: src/baserow/contrib/automation/workflows/actions.py:227 +msgid "Duplicate automation workflow" +msgstr "Automatisierungs-Workflow duplizieren" + +#: src/baserow/contrib/automation/workflows/actions.py:229 +#, python-format +msgid "" +"Workflow \"%(workflow_name)s\" (%(workflow_id)s) duplicated " +"from\"%(original_workflow_name)s\" (%(original_workflow_id)s) " +msgstr "" +"Workflow \"%(workflow_name)s\" (%(workflow_id)s) dupliziert " +"von\"%(original_workflow_name)s\" (%(original_workflow_id)s) " + +#: src/baserow/contrib/automation/workflows/actions.py:299 +msgid "Order workflows" +msgstr "Workflows sortieren" + +#: src/baserow/contrib/automation/workflows/actions.py:300 +msgid "Workflow order changed" +msgstr "Workflow-Reihenfolge geändert" + +#: src/baserow/contrib/dashboard/actions.py:3 +#, python-format +msgid "in dashboard \"%(dashboard_name)s\" (%(dashboard_id)s)." +msgstr "in Dashboard \"%(dashboard_name)s\" (%(dashboard_id)s)." + +#: src/baserow/contrib/dashboard/data_sources/actions.py:19 +msgid "Update dashboard data source" +msgstr "Dashboard-Datenquelle aktualisieren" + +#: src/baserow/contrib/dashboard/data_sources/actions.py:20 +#, python-format +msgid "Data source \"%(data_source_name)s\" (%(data_source_id)s) updated" +msgstr "Datenquelle \"%(data_source_name)s\" (%(data_source_id)s) aktualisiert" + +#: src/baserow/contrib/dashboard/data_sources/service.py:148 +msgid "Data source" +msgstr "Datenquelle" + +#: src/baserow/contrib/dashboard/widgets/actions.py:20 +msgid "Create widget" +msgstr "Widget erstellen" + +#: src/baserow/contrib/dashboard/widgets/actions.py:21 +#, python-format +msgid "Widget \"%(widget_title)s\" (%(widget_id)s) created" +msgstr "Widget \"%(widget_title)s\" (%(widget_id)s) erstellt" + +#: src/baserow/contrib/dashboard/widgets/actions.py:83 +msgid "Update widget" +msgstr "Widget aktualisieren" + +#: src/baserow/contrib/dashboard/widgets/actions.py:84 +#, python-format +msgid "Widget \"%(widget_title)s\" (%(widget_id)s) updated" +msgstr "Widget \"%(widget_title)s\" (%(widget_id)s) aktualisiert" + +#: src/baserow/contrib/dashboard/widgets/actions.py:154 +msgid "Delete widget" +msgstr "Widget löschen" + +#: src/baserow/contrib/dashboard/widgets/actions.py:155 +#, python-format +msgid "Widget \"%(widget_title)s\" (%(widget_id)s) deleted" +msgstr "Widget \"%(widget_title)s\" (%(widget_id)s) gelöscht" + +#: src/baserow/contrib/integrations/core/service_types.py:1062 +msgid "Branch taken" +msgstr "Genommene Verzweigung" + +#: src/baserow/contrib/integrations/core/service_types.py:1067 +msgid "Label" +msgstr "Bezeichnung" + +#: src/baserow/contrib/integrations/core/service_types.py:1069 +msgid "The label of the branch that matched the condition." +msgstr "Die Bezeichnung der Verzweigung, die mit der Bedingung übereinstimmte." + +#: src/baserow/contrib/integrations/core/service_types.py:1438 +msgid "Previous scheduled run" +msgstr "Vorheriger geplanter Lauf" + +#: src/baserow/contrib/integrations/core/service_types.py:1442 +msgid "Next scheduled run" +msgstr "Nächster geplanter Lauf" + +#: src/baserow/contrib/integrations/local_baserow/service_types.py:1688 +msgid "No rows found" +msgstr "Keine Zeilen gefunden" + +#: src/baserow/contrib/integrations/slack/service_types.py:166 +msgid "OK" +msgstr "OK" diff --git a/enterprise/backend/src/baserow_enterprise/locale/de/LC_MESSAGES/django.po b/enterprise/backend/src/baserow_enterprise/locale/de/LC_MESSAGES/django.po index 6c0714e3e4..8cdbccf29b 100644 --- a/enterprise/backend/src/baserow_enterprise/locale/de/LC_MESSAGES/django.po +++ b/enterprise/backend/src/baserow_enterprise/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-26 15:50+0000\n" +"POT-Creation-Date: 2026-03-16 22:06+0000\n" "PO-Revision-Date: 2024-01-31 13:43+0000\n" "Last-Translator: SWEETGOOD \n" "Language-Team: German Private Apps und erstellen Sie eine neue private App. Weisen Sie die folgenden Bereiche zu: crm.objects.contacts.read, crm.schemas.contacts.read, und crm.objects.custom.read. Klicken Sie abschließend auf App erstellen, um das Token zu generieren." + "accessTokenHelper": "Um ein Zugriffstoken für eine private App in HubSpot zu erstellen, klicken Sie in der oberen Leiste auf Settings, navigieren Sie zu Integrations > Private Apps und erstellen Sie eine neue private App. Weisen Sie die folgenden Scopes zu: crm.objects.contacts.read, crm.schemas.contacts.read und crm.objects.custom.read. Klicken Sie abschließend auf Create app, um das Token zu generieren." + }, + "samlAuthLink": { + "placeholderWithSaml": "{login} mit SAML", + "provideEmail": "Geben Sie die E-Mail-Adresse Ihres SAML-Kontos ein", + "emailPlaceholder": "Geben Sie Ihre E-Mail ein..." }, "configureDataSyncModal": { "periodicInterval": "Periodische Einstellungen" }, + "configureDataSyncPeriodicInterval": { + "title": "Periodische Einstellungen", + "saved": "Gespeichert", + "deactivatedTitle": "Periodische Datensynchronisation deaktiviert", + "deactivatedText": "Die periodische Datensynchronisation wurde deaktiviert, weil sie zu oft hintereinander fehlgeschlagen ist. Bitte versuchen Sie, manuell zu synchronisieren. Wenn es wie erwartet funktioniert, klicken Sie auf die Schaltfläche zum Aktivieren.", + "activate": "Periodische Synchronisation aktivieren", + "enterprise": "Periodische Datensynchronisation ist eine Advanced/Enterprise-Funktion.", + "more": "Weitere Informationen" + }, "dataSyncPeriodicIntervalForm": { "intervalLabel": "Intervall", - "intervalHelper": "Wie häufig der automatische Datenabgleich erfolgen soll.", + "intervalHelper": "Wie häufig die Datensynchronisation automatisch erfolgen soll.", "manual": "Manuell", "daily": "Täglich", "hourly": "Stündlich", - "whenHelper": "Geben Sie die genaue Stunde, Minute und Sekunde an, zu der die Daten abgeglichen werden sollen.", + "whenHelper": "Geben Sie die genaue Stunde, Minute und Sekunde an, zu der die Datensynchronisation erfolgen soll.", + "whenHourlyHelper": "Geben Sie die genaue Minute und Sekunde an, zu der die Datensynchronisation erfolgen soll.", + "hour": "Stunde", "minute": "Minute", - "second": "Sekunde", - "hour": "Stunde" + "second": "Sekunde" }, "oidcAuthLink": { "placeholderWithOIDC": "{login} mit {provider}" }, - "advanced": { - "license": "Advanced" - }, - "dataScanner": { - "title": "Daten-Scanner", - "scansTab": "Scans", - "resultsTab": "Ergebnisse", - "createScan": "Daten-Scanner erstellen" + "chartWidget": { + "name": "Diagramm", + "bar": "Balkendiagramm", + "line": "Liniendiagramm" + }, + "pieChartWidget": { + "name": "Kreisdiagramm", + "pie": "Kreisdiagramm", + "doughnut": "Ringdiagramm", + "polarArea": "Polarbereichsdiagramm" + }, + "groupedAggregateRowsDataSourceForm": { + "series": "Reihen", + "addSeries": "Reihe hinzufügen", + "data": "Daten", + "sourceFieldLabel": "Quelle", + "viewFieldLabel": "Ansicht", + "notSelected": "Nicht ausgewählt" + }, + "aggregationSeriesForm": { + "aggregationFieldLabel": "Feld", + "aggregationTypeLabel": "Zusammenfassung", + "deleteSeries": "Reihe löschen", + "chartType": "Diagrammtyp", + "barChart": "Balken", + "lineChart": "Linie", + "pieChart": "Kreis", + "doughnutChart": "Ring", + "polarAreaChart": "Polarbereich" + }, + "aggregationGroupByForm": { + "groupByFieldLabel": "Gruppieren nach", + "groupByNone": "Keine", + "groupByRowId": "Zeilen-ID" + }, + "aggregationSortByForm": { + "sortByFieldLabel": "Sortieren nach", + "none": "Keine", + "ascending": "Aufsteigend", + "descending": "Absteigend" + }, + "periodicDataSyncDeactivatedNotification": { + "failure": "Die periodische Datensynchronisation für {name} wurde deaktiviert, weil sie zu oft hintereinander fehlgeschlagen ist.", + "licenseUnavailable": "Die periodische Datensynchronisation für {name} wurde deaktiviert, weil der Arbeitsbereich keine gültige Lizenz mehr hat. Bitte aktualisieren Sie Ihre Lizenz, um die automatische Synchronisation wiederherzustellen." + }, + "twoWaySyncUpdateFailed": { + "title": "Bidirektionales Synchronisations-Update für {name} fehlgeschlagen: {error}" + }, + "twoWaySyncDeactivated": { + "title": "Bidirektionale Synchronisation für {name} deaktiviert, weil ein Update zu oft hintereinander fehlgeschlagen ist. Bitte synchronisieren Sie manuell und reaktivieren Sie, wenn das Problem behoben ist." + }, + "webhook": { + "rowsEnterVieweventType": "Zeilen treten in Ansicht ein" + }, + "webhookForm": { + "triggerWhenRowsEnterView": "Wird ausgelöst, wenn Zeilen in die Ansicht eintreten.", + "helpTriggerWhenRowsEnterView": "Wird nur ausgelöst, wenn `Zeilen treten in Ansicht ein` ausgewählt ist und Zeilen, die nun den Filtern entsprechen, in die Ansicht eintreten." + }, + "fileInputElementForm": { + "defaultNameTitle": "Initialer Dateiname|Initiale Dateinamen", + "defaultNamePlaceholder": "Geben Sie einen Dateinamen ein...|Geben Sie Dateinamen ein...", + "defaultNameHelp": "Die Anzahl der Namen muss mit der Anzahl der URLs übereinstimmen.", + "defaultUrlTitle": "Initiale Datei-URL|Initiale Datei-URLs", + "defaultUrlPlaceholder": "Geben Sie eine Standard-URL ein...|Geben Sie Standard-URLs ein..", + "helpTextTitle": "Hilfetext", + "helpTextPlaceholder": "Leer lassen für Standard...", + "multiple": "Mehrere Dateien?", + "required": "Erforderlich", + "fileTypes": "Dateitypen", + "fileTypesHelper": "Wählen Sie, welche Dateierweiterungen für die Dateieingabe erlaubt sind (eine pro Zeile) (z.B. jpg, png, svg, pdf). Sie können image/*, video/* oder audio/* angeben, um alle Dateien dieser Typen zuzulassen. Leer lassen, um alle Dateitypen zuzulassen.", + "preview": "Bildvorschau?", + "maxFileSize": "Maximale Dateigröße", + "maxFileSizePlaceholder": "Geben Sie eine Zahl ein...", + "addFileType": "Dateityp hinzufügen" + }, + "fileInputElement": { + "defaultHelpText": "Dateien hierher ziehen und ablegen oder zum Auswählen klicken", + "fileSizeExceeded": "Datei zu groß. Maximal {max}MB." + }, + "fieldPermissionModal": { + "title": "Feldberechtigungen bearbeiten", + "description": "Wählen Sie, wer Werte in {fieldName} bearbeiten kann.", + "question": "Wer kann dieses Feld bearbeiten?", + "editorTitle": "Bearbeiter und höher (Standard)", + "editorDescription": "Benutzer mit den Rollen Bearbeiter, Ersteller und Administrator", + "builderTitle": "Ersteller und höher", + "builderDescription": "Benutzer mit den Rollen Ersteller und Administrator", + "adminTitle": "Nur Administratoren", + "adminDescription": "Benutzer mit Administratorrollen", + "nobodyTitle": "Niemand", + "nobodyDescription": "Keine Benutzer", + "allowInForms": "Erlauben, dass dieses Feld in Zeilen gesetzt wird, die über Formulare erstellt werden", + "linkRowWarning": "Dies ist ein 'Verknüpfung mit Tabelle'-Feld. Um sicherzustellen, dass die Werte nicht über die verknüpfte Tabelle geändert werden können, stellen Sie bitte sicher, dass auch die richtigen Berechtigungen für die verknüpfte Tabelle festgelegt sind." + }, + "builderSettingTypes": { + "customCode": "Benutzerdefiniertes CSS/JS" + }, + "customCodeSettingForm": { + "customCSS": "Benutzerdefiniertes CSS", + "customJS": "Benutzerdefiniertes JavaScript", + "customCSSPlaceholder": "Geben Sie benutzerdefinierten CSS-Code ein...", + "customJSPlaceholder": "Geben Sie benutzerdefinierten JS-Code ein...", + "externalScripts": "Externe Skripte / Stylesheets", + "noScript": "Erweitern Sie Ihre Anwendung mit externen Skripten oder Stylesheets", + "customCodeTitle": "Benutzerdefinierter Code", + "customCodeHelp": "Benutzerdefinierter Code ist nur in der Vorschau oder in veröffentlichten Anwendungen sichtbar. Die Ergebnisse sind im Editor nicht sichtbar.", + "addExternalScript": "Externes Skript hinzufügen" + }, + "customCodeSettingScriptForm": { + "type": "Typ", + "loadType": "Ladetyp", + "url": "URL", + "urlPlaceholder": "Geben Sie die Skript-URL ein...", + "crossorigin": "Cross-Origin", + "includeCredentials": "Anmeldeinformationen einschließen", + "typeCSS": "CSS", + "typeJS": "Javascript", + "loadTypeNone": "Normal", + "loadTypeDefer": "Defer", + "loadTypeAsync": "Async", + "crossoriginTypeNone": "Normal", + "crossoriginTypeAnonymous": "Anonym", + "crossoriginTypeCredentials": "Anmeldeinformationen verwenden" + }, + "elementType": { + "errorUserSourceHasNoLoginOption": "Die ausgewählte Benutzerquelle hat keine Anmeldeoption", + "errorUserSourceMissing": "Keine Benutzerquelle ausgewählt" + }, + "fieldPermissionsMenuItem": { + "label": "Feldberechtigungen bearbeiten" + }, + "enterpriseTwoWaySyncStrategyType": { + "realtimePushDescription": "Ermöglicht die direkte Bearbeitung der Zellwerte in Baserow und überträgt sie in Echtzeit an die Datensynchronisationsquelle. Beachten Sie, dass die Änderungen nicht in Echtzeit gezogen werden, da sie auf den Abschluss der (periodischen) Synchronisationsaktion angewiesen sind. Es wird dringend empfohlen, Backups der PostgreSQL-Datenbank zu erstellen, um versehentliche Änderungen zu vermeiden." + }, + "dateDependencyModal": { + "errorTitle": "Datumsabhängigkeit", + "dependencyFieldTooltip": "Datumsabhängigkeiten konfigurieren", + "dependencyFieldTooltipError": "Eine Feldregel enthält einen Fehler", + "contextMenuItemLabel": "Datumsabhängigkeiten konfigurieren", + "title": "Datumsabhängigkeit für {tableName}", + "description": "Geben Sie an, welche Zeilen von anderen abhängen. Wenn eine Zeile umgeplant wird, werden ihre abhängigen Zeilen automatisch angepasst.", + "enableDateDependency": "Datumsabhängigkeiten für Projekte aktivieren", + "startDateFieldLabel": "Startdatum", + "endDateFieldLabel": "Enddatum", + "durationFieldLabel": "Dauer", + "durationFieldHint": "Dieses Feld muss das Format „d h“ verwenden.", + "dependencyLinkrowFieldLabel": "Vorgänger", + "dependencyLinkrowFieldHint": "Verwenden Sie ein Verknüpfung-mit-Tabelle-Feld, um eine Zeile mit ihren Vorgängern zu verbinden.", + "dependencyBufferTypeLabel": "Logik der Umplanung", + "durationBufferLabel": "Zeitpuffer", + "dependencyConnectionTypeLabel": "Typ", + "advancedSettingsLabel": "Erweiterte Einstellungen", + "includeWeekendsLabel": "Wochenenden bei der Berechnung der Dauer einbeziehen", + "dependencyFieldForReaderTooltip": "Dieses Feld ist in der Datumsabhängigkeits-Feldregel enthalten", + "fieldInvalidTitle": "Datumsabhängigkeits-Feldfehler", + "addNewField": "Neues Feld hinzufügen", + "linkRowFieldTitle": "Eltern" + }, + "dateDependency": { + "invalidChildRow": "Nachfolgerzeile ist ungültig", + "invalidParentRow": "Vorgängerzeile ist ungültig", + "invalidParentEndDateAfterChildStartDate": "Das Enddatum der Vorgängerzeile liegt nach dem Startdatum des Nachfolgers", + "invalidStartDateEmpty": "Startdatum ist leer", + "invalidEndDateEmpty": "Enddatum ist leer", + "invalidEndDateBeforeStartDate": "Enddatum liegt vor dem Startdatum", + "invalidDurationEmpty": "Dauer ist leer", + "invalidDurationValue": "Dauerwert ist nicht gültig", + "invalidDurationMismatch": "Dauerwert stimmt nicht überein" + }, + "viewOwnershipType": { + "restricted": "Eingeschränkt", + "restrictedDescription": "Bearbeiter und niedriger können nur die gefilterten Daten und sichtbaren Felder sehen. Es ist möglich, die Mitglieder zu verwalten." + }, + "databaseStep": { + "ai": "Kuma AI" + }, + "aiDatabaseOnboardingForm": { + "label": "Beschreiben Sie Ihre Datenbank", + "placeholder": "z.B. Erstellen Sie eine Lösung für Projektmanagement", + "description": "Beschreiben Sie, was Sie verfolgen möchten. Kuma erstellt die Tabellen und Felder.", + "exampleProjectTrackerName": "Projekt-Tracker", + "exampleProjectTrackerPrompt": "Erstellen Sie einen Projekt-Tracker mit Projekten, Aufgaben, Verantwortlichen, Status, Priorität, Fälligkeitsdaten und Abhängigkeiten.", + "exampleProductRoadmapName": "Produkt-Roadmap", + "exampleProductRoadmapPrompt": "Erstellen Sie eine Produkt-Roadmap mit Initiativen, Funktionen, Eigentümern, Status, Priorität, Zielquartal und Versionshinweisen.", + "exampleCompanyAssetTrackerName": "Firmen-Asset-Tracker", + "exampleCompanyAssetTrackerPrompt": "Erstellen Sie einen Asset-Tracker mit Assets, Kategorien, Seriennummern, Kaufdatum, Zugewiesen an, Standort und Garantieablauf.", + "exampleTeamCheckInsName": "Team-Check-ins", + "exampleTeamCheckInsPrompt": "Erstellen Sie einen wöchentlichen Team-Check-in-Tracker mit Teammitgliedern, Datum, Erfolgen, Hindernissen, Stimmung, Prioritäten und Folgemaßnahmen.", + "exampleBugTrackerName": "Bug-Tracker", + "exampleBugTrackerPrompt": "Erstellen Sie einen Bug-Tracker mit Bugs, Schweregrad, Status, Schritten zur Reproduktion, Umgebung, Melder, Zuständigem und Fix-Version." + }, + "aiDatabaseOnboardingStepType": { + "prompt": "Erstellen Sie eine Datenbank inklusive Tabellen, Feldern, Beispielzeilen und Beispielansichten, die dieser Beschreibung entsprechen: {prompt}" + }, + "assistantOnboardingMessage": { + "instructing": "Kuma wird angewiesen, Ihre Datenbank zu erstellen." } } diff --git a/enterprise/web-frontend/modules/baserow_enterprise/locales/es.json b/enterprise/web-frontend/modules/baserow_enterprise/locales/es.json index aeb5b64fa8..bb70f36659 100644 --- a/enterprise/web-frontend/modules/baserow_enterprise/locales/es.json +++ b/enterprise/web-frontend/modules/baserow_enterprise/locales/es.json @@ -308,7 +308,7 @@ "support": "Apoyo directo", "dataSync": "Sincronizar datos", "ssoContent": "Habilita inicios de sesión seguros y sin interrupciones con SAML, Google, Facebook, GitHub, GitLab o OpenID Connect. Admite varios proveedores a la vez. Ten en cuenta que tanto Baserow como herramienta, como el sistema de autenticación del creador de aplicaciones, soportan SSO.", - "rbacContent": "Gestiona permisos con precisión. Asigna roles como administrador, creador, editor, comentarista o espectador a nivel de espacio de trabajo, base de datos o tabla. También puedes gestionar el acceso por equipo.", + "rbacContent": "Gestiona permisos con precisión. Asigna roles como administrador, creador, editor, comentarista o espectador a nivel de espacio de trabajo, base de datos, tabla y vista. También puedes gestionar el acceso por equipo.", "auditLogsContent": "Rastrea todo lo que ocurre. Visualiza un historial completo de acciones en tu instancia o espacio de trabajo, filtrable por usuario, acción y más.", "dataSyncContent": "Mantén automáticamente las tablas actualizadas sincronizándolas con otras tablas de Baserow o con fuentes externas como Jira, GitHub, GitLab o HubSpot. También permite sincronizar de forma periódica y habilita la sincronización bidireccional de datos para los tipos de sincronización compatibles.", "coBrandingContent": "Personaliza la interfaz de Baserow con tu propio logo. Ten en cuenta que se añade “powered by Baserow”.", @@ -815,7 +815,7 @@ "resultsCountColumn": "Resultados", "viewResults": "Ver resultados", "results": "Ver {count} resultado|Ver {count} resultados", - "noResults": "Aún no hay resultados", + "noResults": "No se encontraron resultados", "resolveResult": "Resolver", "resultResolved": "Resuelto", "exportToCsv": "Exportar a CSV", @@ -828,7 +828,10 @@ "emptyTitle": "Aún no hay escaneos de datos", "emptyResultsTitle": "No se encontraron resultados", "emptyDescription": "Un escáner de datos te permite escanear automáticamente toda la instancia o espacios de trabajo específicos para verificar si se están utilizando patrones (como IBAN) o texto predefinido (como IDs médicas) en cualquier lugar.", - "emptyResultsDescription": "Aún no hay resultados de escaneo. Los resultados aparecerán aquí una vez que se haya ejecutado un escaneo de datos y se hayan encontrado coincidencias." + "emptyResultsDescription": "Aún no hay resultados de escaneo. Los resultados aparecerán aquí una vez que se haya ejecutado un escaneo de datos y se hayan encontrado coincidencias.", + "wholeWordsLabel": "Coincidencia", + "wholeWordsCheckbox": "Coincidir solo palabras completas", + "wholeWordsHelp": "Cuando está habilitado, el escáner solo coincide con palabras o tokens completos. Por ejemplo, 'DDDD' coincide con '1234' pero no con '12345'." }, "deleteDataScanModal": { "title": "Eliminar escaneo de datos", diff --git a/enterprise/web-frontend/modules/baserow_enterprise/locales/it.json b/enterprise/web-frontend/modules/baserow_enterprise/locales/it.json index ef8de14d3a..861ace450a 100644 --- a/enterprise/web-frontend/modules/baserow_enterprise/locales/it.json +++ b/enterprise/web-frontend/modules/baserow_enterprise/locales/it.json @@ -9,7 +9,7 @@ "overflowWarning": "Le licenze disponibili sono terminate. Imposta gli utenti come \"viewers\" per liberare le licenze necessarie." }, "clientHandler": { - "cannotDisableAllAuthProvidersTitle": "Ultimo provider attivo", + "cannotDisableAllAuthProvidersTitle": "Ultimo provider attivato", "cannotDisableAllAuthProvidersDescription": "Non è possibile disabilitare o cancellare l'ultimo provider attivo." }, "trashType": { @@ -388,5 +388,47 @@ }, "fileInputElementForm": { "fileTypesHelper": "Scegli quali estensioni di file sono consentite (una per riga) dall'input file (ad esempio jpg, png, svg, pdf). Puoi specificare image/*, video/* o audio/* per consentire tutti i file di questi tipi. Lascia vuoto per permettere tutti i tipi di file." + }, + "dataScanner": { + "wholeWordsCheckbox": "Riconosci solo parole intere", + "wholeWordsHelp": "Quando è attiva, la funzione di scansione rileva solo parole o token completi. Ad esempio, 'DDDD' corrisponde a '1234' ma non a '12345'.", + "workspaceScopeLabel": "Spazi di lavoro da scansionare", + "scanAllWorkspaces": "Scansiona tutti gli spazi di lavoro", + "filterByScan": "Filtra per scansionare", + "allScans": "Tutte le scansioni", + "scanNameColumn": "Scansiona", + "workspaceColumn": "Spazio di lavoro", + "databaseColumn": "Database", + "tableColumn": "Tabella", + "fieldColumn": "Campo", + "rowIdColumn": "ID Riga", + "matchedValueColumn": "Valore abbinato", + "firstIdentifiedColumn": "Prima identificazione", + "clearFilters": "Rimuovi filtri", + "addWorkspace": "Aggiungi uno spazio di lavoro", + "scanTypePattern": "Modello", + "scanTypeListOfValues": "Lista di valori", + "scanTypeListTable": "Tabella Baserow", + "lastRunColumn": "Ultima esecuzione", + "resultsCountColumn": "Risultati", + "viewResults": "Vedi risultati", + "results": "Visualizza {count} risultato|Visualizza i {count} risultati", + "noResults": "Nessun risultato trovato", + "resolveResult": "Risolvi", + "resultResolved": "Risolto", + "exportToCsv": "Esporta in CSV", + "exportModalTitle": "Esporta risultati in CSV", + "exportFilename": "risultati_scansione_dati_{date}.csv", + "exportFailedTitle": "Esportazione fallita", + "exportFailedDescription": "Il processo di esportazione è fallito. Per favore riprova.", + "exportCancelledTitle": "Esportazione cancellata", + "exportCancelledDescription": "Il processo di esportazione è stato cancellato.", + "emptyTitle": "Nessuna scansione dati ad ora", + "emptyDescription": "Una scansione dati ti permette di scansionare automaticamente l'intera istanza o specifici spazi di lavoro per verificare se modelli (come IBAN) o testo predefinito (come identificativi univoci) siano in uso.", + "emptyResultsTitle": "Nessun risultato trovato", + "emptyResultsDescription": "Non ci sono ancora risultati di scansione. I risultati appariranno qui dopo l'esecuzione di una scansione e l'individuazione di un riscontro." + }, + "deleteDataScanModal": { + "title": "Annulla scansione dati" } } diff --git a/enterprise/web-frontend/modules/baserow_enterprise/locales/ko.json b/enterprise/web-frontend/modules/baserow_enterprise/locales/ko.json index 372f13561b..265f8f1082 100644 --- a/enterprise/web-frontend/modules/baserow_enterprise/locales/ko.json +++ b/enterprise/web-frontend/modules/baserow_enterprise/locales/ko.json @@ -311,7 +311,7 @@ "chartWidget": "차트 위젯", "advancedWebhooks": "고급 웹훅", "ssoContent": "SAML, Google, Facebook, GitHub, GitLab, 또는 OpenID Connect를 통해 안전하고 간편한 로그인을 활성화하세요. 여러 인증 제공자를 동시에 지원합니다. Baserow 자체와 애플리케이션 빌더의 인증 시스템 모두 SSO(Single Sign-On)를 지원합니다.", - "rbacContent": "정밀하게 권한을 관리하세요. 작업공간, 데이터베이스, 또는 테이블 수준에서 관리자, 빌더, 편집자, 댓글 작성자, 보기 전용 사용자와 같은 역할을 지정할 수 있습니다. 팀 단위로 접근 권한을 관리하는 것도 가능합니다.", + "rbacContent": "권한을 정밀하게 관리하세요. 작업 공간, 데이터베이스, 테이블 및 보기 수준에서 관리자, 작성자, 편집자, 댓글 작성자 또는 보기 사용자 등의 역할을 할당할 수 있습니다. 팀별 액세스 관리도 가능합니다.", "advancedWebhooksContent": "행이 특정 보기에 들어올 때 웹훅을 트리거하세요. 필터 조건을 기반으로 워크플로를 자동화하는 데 유용합니다.", "auditLogsContent": "무슨 일이 일어났는지 모두 추적할 수 있어요. 인스턴스나 워크스페이스에서 이루어진 모든 작업 기록을 확인하고, 사용자나 작업 유형 등으로 손쉽게 필터링할 수 있습니다.", "dataSyncContent": "다른 Baserow 테이블이나 Jira, GitHub, GitLab, HubSpot 등의 외부 소스와 동기화하여 테이블을 자동으로 최신 상태로 유지합니다. 또한, 주기적인 동기화를 지원하고, 지원되는 데이터 동기화 유형에 대한 양방향 데이터 동기화를 지원합니다.", @@ -815,12 +815,12 @@ "resultsCountColumn": "결과", "viewResults": "결과 보기", "results": "{count} 결과 보기|{count} 결과 보기", - "noResults": "아직 결과가 없습니다", + "noResults": "검색 결과가 없습니다", "resolveResult": "해결하다", "resultResolved": "해결됨", "exportToCsv": "CSV 파일로 내보내기", "exportModalTitle": "결과를 CSV 파일로 내보내기", - "exportFilename": "data_scan_results_{date}.csv", + "exportFilename": "데이터_스캔_결과_{date}.csv", "exportFailedTitle": "내보내기 실패", "exportFailedDescription": "내보내기 작업이 실패했습니다. 다시 시도해 주세요.", "exportCancelledTitle": "내보내기 취소됨", @@ -830,7 +830,10 @@ "emptyResultsTitle": "검색 결과가 없습니다", "emptyResultsDescription": "아직 스캔 결과가 없습니다. 데이터 스캔이 실행되고 일치하는 항목이 발견되면 여기에 결과가 표시됩니다.", "neverRun": "실행하지 않음", - "runNow": "지금 실행" + "runNow": "지금 실행", + "wholeWordsLabel": "매칭", + "wholeWordsCheckbox": "단어 전체만 일치시키세요", + "wholeWordsHelp": "이 기능을 활성화하면 스캐너는 완전한 단어 또는 토큰만 일치시킵니다. 예를 들어 'DDDD'는 '1234'와 일치하지만 '12345'와는 일치하지 않습니다." }, "deleteDataScanModal": { "title": "데이터 삭제 스캔", diff --git a/premium/backend/src/baserow_premium/locale/de/LC_MESSAGES/django.po b/premium/backend/src/baserow_premium/locale/de/LC_MESSAGES/django.po index e4d3341e1d..d4e6f7bb69 100644 --- a/premium/backend/src/baserow_premium/locale/de/LC_MESSAGES/django.po +++ b/premium/backend/src/baserow_premium/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-31 17:07+0000\n" +"POT-Creation-Date: 2026-03-16 21:52+0000\n" "PO-Revision-Date: 2023-03-07 14:56+0000\n" "Last-Translator: Alexander Haller \n" "Language-Team: German ", - "textError": "Der Wert ist ungültig.", - "textPlaceholder": "Text eingeben..." + "textError": "Der Wert ist ungültig." }, "textElement": { - "noValue": "Leerer Absatz...", "missingValue": "Fehlender Text...", "emptyValue": "Leerer Text..." }, @@ -187,200 +242,190 @@ "textFormatTypePlain": "Klartext", "textFormatTypeMarkdown": "Markdown" }, - "dataProviderType": { - "currentRecord": "Datenquelle", - "pageParameter": "Parameter", - "dataSource": "Datensätze", - "formData": "Formulardaten", - "user": "Benutzer", - "previousAction": "Vorherige Aktion", - "dataSourceContext": "Verfügbare Optionen" + "orientations": { + "label": "Ausrichtung", + "horizontal": "Horizontal", + "vertical": "Vertikal" + }, + "menuElement": { + "missingValue": "Fehlender Menüpunkt", + "separator": "Trenner", + "spacer": "Abstandshalter", + "missingLinkValue": "Fehlender Link-Name...", + "emptyLinkValue": "Leerer Link-Name...", + "missingButtonValue": "Fehlender Button-Name...", + "emptyButtonValue": "Leerer Button-Name..." + }, + "menuElementForm": { + "menuItemsLabel": "Menüpunkte", + "addMenuItemLink": "Hinzufügen...", + "alignment": "Ausrichtung", + "menuItemDefaultName": "Seite", + "menuItemLabelLabel": "Bezeichnung", + "menuItemTypeLabel": "Typ", + "menuItemTypeSeparator": "Trenner", + "menuItemVariantLabel": "Variante", + "menuItemVariantLink": "Verknüpfung", + "menuItemVariantButton": "Button", + "namePlaceholder": "Seite", + "addSubLink": "Unterlink hinzufügen", + "menuItemSubLinkDefaultName": "Unterlink", + "menuItemAddLink": "Verknüpfung", + "menuItemAddButton": "Button", + "menuItemAddSeparator": "Trenner", + "menuItemAddSpacer": "Abstandshalter", + "eventDescription": "Um Aktionen für diesen Button zu konfigurieren, öffnen Sie die Registerkarte „Ereignisse“ dieses Elements.", + "noMenuItemsMessage": "Klicken Sie auf 'Hinzufügen', um Ihren ersten Menüpunkt hinzuzufügen." + }, + "simpleContainerElementForm": { + "noConfigurationOptions": "Das Container-Element verfügt über keine Konfigurationsoptionen." }, - "pageErrors": { - "errorStartingSlash": "Ein Pfad muss mit '/' beginnen", - "errorUniquePathParams": "Pfad-Parameter müssen eindeutig sein.", - "errorPathNotUnique": "Es existiert bereits ein Pfad mit diesem Namen", - "errorValidPathCharacters": "Der Pfad enthält ungültige Zeichen", - "errorNameNotUnique": "Es existiert bereits eine Seite mit diesem Namen", - "errorUniqueValidQueryParams": "Die Namen der Abfrageparameter müssen eindeutig und gültig sein.", - "errorNameNotUniqueDescription": "Bitte geben Sie einen eindeutigen Namen für die Seite ein" + "imageElement": { + "missingValue": "Fehlender Alternativ-Text...", + "emptyValue": "Leerer Alternativ-Text..." }, - "publishActionModal": { - "title": "Veröffentlichen", - "publish": "Veröffentlichen", - "publishSucceedDescription": "Die Seite wurde erfolgreich veröffentlicht.", - "publishSucceedTitle": "Seite veröffentlicht", - "description": "Schalten Sie Ihre Anwendung live, indem Sie sie in einer der Domänen veröffentlichen. Beachten Sie, dass Ihre Anwendung mehrere Domänen haben kann, auf welchen jeweils eine andere Version der Anwendung läuft.", - "publishFailedTitle": "Veröffentlichung der Seite fehlgeschlagen", - "openInNewTab": "In neuem Tab öffnen", - "noDomain": "Sie benötigen mindestens eine Domäne, um Ihre Anwendung zu veröffentlichen.", - "publishFailedDescription": "Die Veröffentlichung der Seite ist fehlgeschlagen. Bitte versuchen Sie es später erneut.", - "importingState": "Importiere", - "publishSucceedLink": "Seite anzeigen", - "addDomain": "Domain hinzufügen" + "generalForm": { + "labelTitle": "Bezeichnung", + "labelPlaceholder": "Bezeichnung eingeben", + "valueTitle": "Wert", + "defaultValueTitle": "Standardwert", + "defaultValuePlaceholder": "Standardwert eingeben", + "valuePlaceholder": "Wert eingeben", + "placeholderTitle": "Platzhalter", + "placeholderPlaceholder": "Geben Sie einen Platzhalter ein", + "requiredTitle": "Erforderlich", + "validationTitle": "Überprüfung" }, - "pageActionTypes": { - "publish": "Veröffentlichen", - "preview": "Vorschau" + "inputTextElementForm": { + "multilineTitle": "Mehrzeilig", + "rowsTitle": "Zeilenanzahl", + "rowsPlaceholder": "Geben Sie die Anzahl der Zeilen für diese Eingabe ein", + "validationTypeAnyLabel": "Jeglich(e)", + "validationTypeAnyDescription": "Erlaubt die Eingabe eines beliebigen Wertes.", + "validationTypeIntegerLabel": "Zahl", + "validationTypeIntegerDescription": "Erzwinge einen Zahlenwert in diesem Eingabefeld (akzeptiert Ganzzahlen und Dezimalzahlen).", + "validationTypeEmailLabel": "E-Mailadresse", + "validationTypeEmailDescription": "Erzwinge eine E-Mailadresse in diesem Eingabefeld.", + "inputType": "Eingabetyp", + "inputTypeTextLabel": "Text", + "inputTypePasswordLabel": "Passwort", + "passwordTypeWarning": "Passwörter sind sensible Daten. Bitte geben Sie acht, wie Sie Passwörter in Ihrer Anwendung behandeln und speichern." + }, + "dateTimePickerElementForm": { + "includeTime": "Zeit einbeziehen", + "invalidDateError": "Ungültiges Datum. Bitte stellen Sie sicher, dass das eingegebene Datum dem angegebenen Format entspricht." + }, + "imageElementForm": { + "fileLabel": "Bild", + "invalidUrlError": "URL ist ungültig", + "altTextTitle": "Alternativer Text", + "altTextDescription": "Wird von Screen-Readern verwendet und angezeigt, wenn das Bild nicht geladen werden kann", + "fileSourceTypeUpload": "Hochladen", + "fileSourceTypeURL": "URL", + "urlWarning": "Hinweis: Bitte vergewissern Sie sich, dass Sie die Kontrolle über die eingegebene URL haben oder dieser vertrauen.", + "uploadFileButton": "Datei hochladen" + }, + "iframeElementForm": { + "missingValue": "Fehlende IFrame-Quelle...", + "emptyValue": "Leere IFrame-Quelle...", + "sourceTypeLabel": "Quellen-Typ", + "urlLabel": "URL", + "urlPlaceholder": "Link zur externen Ressource, welche eingebettet werden soll", + "urlHelp": "Hinweis: Bitte vergewissern Sie sich, dass Sie die Kontrolle über die eingegebene URL haben oder dieser vertrauen.", + "embedLabel": "Einbetten", + "embedPlaceholder": "Reiner HTML-Inhalt, der eingebettet werden soll", + "heightLabel": "Höhe (px)", + "heightPlaceholder": "Höhe in Pixeln" + }, + "columnElementForm": { + "columnAmountTitle": "Layout", + "verticalAlignment": "Vertikale Ausrichtung", + "columnAmountName": "keine Spalten | 1 Spalte | {columnAmount} Spalten", + "columnGapTitle": "Abstand zwischen den Spalten", + "columnGapPlaceholder": "Geben Sie den Abstand zwischen den Spalten ein..." }, "domainSettings": { - "noDomainMessage": "Sie haben noch keine Domäne mit dieser Anwendung verknüpft. Sie müssen eine Domäne hinzufügen, um Ihre Anwendung veröffentlichen zu können. Sie können verschiedene Versionen Ihrer Anwendung für jede hier aufgeführte Domäne veröffentlichen.", - "addDomain": "Domäne hinzufügen", "titleOverview": "Domänen", - "titleAddDomain": "Domäne hinzufügen" + "titleAddDomain": "Domäne hinzufügen", + "addDomain": "Domäne hinzufügen", + "noDomainMessage": "Sie haben noch keine Domäne mit dieser Anwendung verknüpft. Sie müssen eine Domäne hinzufügen, um Ihre Anwendung veröffentlichen zu können. Sie können verschiedene Versionen Ihrer Anwendung für jede hier aufgeführte Domäne veröffentlichen." }, - "domainCard": { - "detailLabel": "Details anzeigen", - "refresh": "Einstellungen neu laden" + "userSourceSettings": { + "titleAddUserSource": "Neue Benutzerquelle", + "titleUpdateUserSource": "Benutzerquelle bearbeiten", + "noUserSourceMessage": "Sie haben noch keine Benutzerquelle zu dieser Anwendung hinzugefügt. Sie müssen eine Benutzerquelle hinzufügen, wenn Sie möchten, dass die Benutzer Ihre Anwendung authentifizieren können.", + "titleOverview": "Benutzerquellen", + "addUserSource": "Benutzerquelle hinzufügen" + }, + "themeSettings": { + "titleOverview": "Theme" + }, + "generalSettings": { + "titleOverview": "Allgemein", + "labelForm": "Favicon", + "labelDescription": "Wählen Sie eine 128x128 Pixel große ICO-, PNG-, GIF- oder JPEG-Datei.", + "labelButton": "Favicon hochladen", + "cantUploadFaviconTitle": "Konnte die Favicon-Datei nicht hochladen", + "cantUploadFaviconDescription": "Leider konnte kein Favicon-Bild hochgeladen werden. Bitte stellen Sie sicher, dass die Bilddatei eindeutig ist und in einem der unterstützten Bildformate vorliegt.", + "cantUpdateApplicationTitle": "Konnte die Anwendung nicht aktualisieren", + "cantUpdateApplicationDescription": "Entschuldigung, konnte die Anwendung nicht aktualisieren." + }, + "dnsStatus": { + "description": "Rufe die DNS-Einstellungen deiner Domäne auf und mache folgende Änderungen", + "typeHeader": "Art", + "hostHeader": "Host", + "valueHeader": "Wert" + }, + "domainForm": { + "invalidDomain": "Der angegebene Name der Domäne ist ungültig", + "notUniqueDomain": "Die angegebene Domäne wird bereits verwendet" }, "customDomainForm": { "domainNameLabel": "Domänen-Name" }, + "subDomainForm": { + "domainNameLabel": "Domänen-Name" + }, "subDomainDetails": { "text": "Die DNS-Einstellungen der Domäne sind bereits konfiguriert und überprüft worden. Es funktioniert, ohne dass zusätzliche Änderungen vorgenommen werden müssen." }, + "domainCard": { + "refresh": "Einstellungen neu laden", + "detailLabel": "Details anzeigen", + "unpublishedDomainWarning": "Bitte veröffentlichen Sie die Anwendung, um sie auf dieser Domäne verfügbar zu machen." + }, "domainTypes": { - "subDomain": "Subdomain von {domain}", "customName": "Benutzerdefinierte Domäne", - "subDomainName": "Subdomain" - }, - "domainForm": { - "notUniqueDomain": "Die angegebene Domäne wird bereits verwendet", - "invalidDomain": "Der angegebene Name der Domäne ist ungültig" - }, - "formDataProviderType": { - "nodeMissing": "Fehlt" - }, - "lastPublishedDomainDate": { - "lastPublished": "Zuletzt veröffentlicht:", - "neverPublished": "nie" - }, - "subDomainForm": { - "domainNameLabel": "Domänen-Name" - }, - "dnsStatus": { - "description": "Rufe die DNS-Einstellungen deiner Domäne auf und mache folgende Änderungen", - "hostHeader": "Host", - "valueHeader": "Wert", - "typeHeader": "Art" - }, - "pathParamTypes": { - "textName": "Text", - "numericName": "Numerisch" - }, - "currentRecordDataProviderType": { - "index": "Index", - "firstPartName": "Datenquelle: {name}" + "subDomainName": "Subdomain", + "subDomain": "Subdomain von {domain}" }, - "updateUserSourceForm": { - "integrationFieldLabel": "Integration", - "nameFieldPlaceholder": "Einen Namen eingeben...", - "nameFieldLabel": "Name", - "authTitle": "Authentifizierung" - }, - "upsertRowWorkflowActionForm": { - "rowIdPlaceholder": "Wählen Sie eine Zeilen-ID aus", - "noTableSelectedMessage": "Wählen Sie eine Tabelle, um mit der Konfiguration Ihrer Felder zu beginnen.", - "rowIdLabel": "Zeilen-ID", - "fieldMappingPlaceholder": "Wählen Sie einen Feldwert", - "integrationDropdownLabel": "Integration" - }, - "checkboxElementForm": { - "labelTitle": "Bezeichnung", - "valueTitle": "Standardwert", - "requiredTitle": "Erforderlich" + "linkElement": { + "missingValue": "Fehlender Link-Text...", + "emptyValue": "Leerer Link-Text..." }, - "linkElementForm": { + "linkNavigationSelection": { + "navigateTo": "Navigieren zu", + "navigateToCustom": "Benutzerdefinierte URL", + "paramPlaceholder": "Geben Sie einen Wert ein...", + "urlPlaceholder": "Geben Sie eine URL ein...", + "url": "Ziel-URL", + "paramsInErrorDescription": "Die gespeicherten Parameter stimmen nicht mit den Seitenparametern überein. Die Seite wurde wahrscheinlich gelöscht oder aktualisiert.", + "paramsInErrorButton": "Parameter aktualisieren", "target": "Öffnen in...", "targetSelf": "Gleicher Tab", - "targetNewTab": "Neuer Tab", + "targetNewTab": "Neuer Tab" + }, + "linkElementForm": { "text": "Text", "textPlaceholder": "Text eingeben...", "variant": "Variante", "variantLink": "Verknüpfung", - "buttonColor": "Buttonfarbe", - "variantButton": "Button" - }, - "dataSourceForm": { - "namePlaceholder": "Quellenname", - "servicePlaceholder": "Wählen Sie einen Dienst aus", - "integrationPlaceholder": "Wählen Sie eine Integration aus", - "errorUniqueName": "Der Name der Datenquelle muss eindeutig sein.", - "nameLabel": "Name", - "actionLabel": "Aktion", - "integrationLabel": "Integration" - }, - "dataSourceContext": { - "addDataSource": "Neue Datenquelle hinzufügen", - "noDataSourceTitle": "Sie haben noch keine Datenquellen hinzugefügt.", - "noDataSourceMessage": "Datenquellen können verwendet werden, um Daten aus internen oder externen Quellen abzurufen und auf der Seite anzuzeigen.", - "pageDataSourceTitle": "Für diese Seite", - "pageDataSourceDescription": "Wird abgerufen, wenn der Benutzer auf diese Seite navigiert.", - "sharedDataSourceTitle": "Zwischen Seiten geteilt", - "sharedDataSourceDescription": "Ist auf jeder Seite verfügbar und wird einmalig beim ersten Laden der Seite abgerufen." - }, - "imageElement": { - "emptyState": "Kein alternativer Text festgelegt...", - "emptyValue": "Leerer Alternativ-Text...", - "missingValue": "Fehlender Alternativ-Text..." - }, - "imageElementForm": { - "fileSourceTypeURL": "URL", - "fileLabel": "Bild", - "invalidUrlError": "URL ist ungültig", - "fileSourceTypeUpload": "Hochladen", - "altTextTitle": "Alternativer Text", - "uploadFileButton": "Datei hochladen", - "altTextDescription": "Wird von Screen-Readern verwendet und angezeigt, wenn das Bild nicht geladen werden kann", - "urlWarning": "Hinweis: Bitte vergewissern Sie sich, dass Sie die Kontrolle über die eingegebene URL haben oder dieser vertrauen.", - "maxWidthLabel": "Maximale Breite", - "maxHeightLabel": "Maximale Höhe", - "maxHeightPlaceholder": "Geben Sie eine maximale Höhe in Pixeln ein.", - "maxWidthPlaceholder": "Geben Sie eine maximale Breite in Prozent an.", - "imageConstraintsLabel": "Beschränkungen", - "imageConstraintCoverDisabled": "Nicht verfügbar mit leerer maximaler Höhe.", - "imageConstraintFullWidth": "Auf maximale Breite ausweiten", - "imageConstraintContainDisabled": "Nicht verfügbar mit gesetzter maximaler Höhe.", - "imageConstraintCover": "Cover", - "imageConstraintContain": "Contain" - }, - "columnElementForm": { - "columnAmountTitle": "Layout", - "columnGapPlaceholder": "Geben Sie den Abstand zwischen den Spalten ein...", - "columnAmountName": "keine Spalten | 1 Spalte | {columnAmount} Spalten", - "columnGapTitle": "Abstand zwischen den Spalten", - "verticalAlignment": "Vertikale Ausrichtung" - }, - "linkElement": { - "noValue": "Unbenannt..." - }, - "horizontalAlignmentSelector": { - "alignmentRight": "Rechtsbündig", - "alignmentCenter": "Zentrieren", - "alignmentLeft": "Links", - "alignment": "Horizontale Ausrichtung" - }, - "verticalAlignmentSelector": { - "alignment": "Vertikale Ausrichtung", - "alignmentTop": "Oben", - "alignmentBottom": "Unten", - "alignmentCenter": "Mittig" - }, - "elementForms": { - "textInputPlaceholder": "Text eingeben...", - "invalidFormula": "Die Formel ist ungültig", - "urlInputPlaceholder": "URL eingeben..." - }, - "userSourceSettings": { - "addUserSource": "Benutzerquelle hinzufügen", - "titleUpdateUserSource": "Benutzerquelle bearbeiten", - "titleOverview": "Benutzerquellen", - "noUserSourceMessage": "Sie haben noch keine Benutzerquelle zu dieser Anwendung hinzugefügt. Sie müssen eine Benutzerquelle hinzufügen, wenn Sie möchten, dass die Benutzer Ihre Anwendung authentifizieren können.", - "titleAddUserSource": "Neue Benutzerquelle" + "variantButton": "Button", + "buttonColor": "Buttonfarbe" }, "widthSelector": { - "widthAuto": "Auto", "width": "Breite", + "widthAuto": "Auto", "widthFull": "Volle Breite" }, "backgroundTypes": { @@ -388,20 +433,70 @@ "color": "Farbe" }, "widthTypes": { - "full": "Volle Breite", + "fullBleed": "Voller Beschnitt", + "fullWidth": "Volle Breite", "normal": "Normal", - "small": "Schmal", "medium": "Mittel", - "fullWidth": "Volle Breite", - "fullBleed": "Voller Beschnitt" + "small": "Schmal" + }, + "horizontalAlignmentSelector": { + "alignmentLeft": "Links", + "alignmentCenter": "Zentrieren", + "alignmentRight": "Rechtsbündig" + }, + "verticalAlignmentSelector": { + "alignmentTop": "Oben", + "alignmentCenter": "Mittig", + "alignmentBottom": "Unten" }, "pageSettingsTypes": { "pageName": "Seite" }, + "pageVisibilitySettingsTypes": { + "pageName": "Sichtbarkeit", + "logInPageWarningTitle": "Die Anmeldeseite ist nicht festgelegt", + "logInPagewarningMessage": "Wenn ein anonymer Benutzer versucht, auf diese Seite zuzugreifen, wird er zu einer Anmeldeseite weitergeleitet. Bitte legen Sie die Anmeldeseite in den allgemeinen Einstellungen der Anwendung fest.", + "logInPageInfoTitle": "Anonyme Benutzer werden weitergeleitet", + "logInPageInfoMessage": "Anonyme Benutzer, die versuchen, auf diese Seite zuzugreifen, werden zur Seite {logInPageName} weitergeleitet." + }, "pageSettings": { - "pageUpdatedDescription": "Die Seiteneinstellungen wurden geändert.", "title": "Seite", - "pageUpdatedTitle": "Geändert" + "pageUpdatedTitle": "Geändert", + "pageUpdatedDescription": "Die Seiteneinstellungen wurden geändert." + }, + "pageVisibilitySettings": { + "title": "Sichtbarkeit", + "allVisitors": "Alle Besucher", + "loggedInVisitors": "Eingeloggte Besucher", + "description": "Wer darf diese Seite sehen" + }, + "pageForm": { + "defaultName": "Seite", + "nameTitle": "Name", + "nameSubtitle": "Eindeutiger Name der Seite", + "namePlaceholder": "Geben Sie einen Namen ein...", + "pathTitle": "Pfad", + "addAnotherParameter": "Einen weiteren Abfrageparameter hinzufügen", + "addParameter": "Einen Abfrageparameter hinzufügen", + "queryParamsSubtitleTutorial": "Abfrageparameter können verwendet werden, um Daten abhängig von dem angegebenen Parameter dynamisch zu laden.", + "pathSubtitle": "Ein Parameter kann über :parameter hinzugefügt werden", + "pathPlaceholder": "Geben Sie einen Pfad ein...", + "pathParamsTitle": "Pfad-Parameter", + "queryParamsTitle": "Abfrageparameter", + "pathParamsSubtitle": "Werden durch :parameter im Pfad definiert", + "pathParamsSubtitleTutorial": "Pfad-Parameter können verwendet werden, um Daten dynamisch zu laden, abhängig von dem angegebenen Parameter. Fügen Sie :parameter zum Pfad hinzu, um einen hinzuzufügen." + }, + "pathParamTypes": { + "textName": "Text", + "numericName": "Numerisch" + }, + "queryParamTypes": { + "textName": "Text", + "numericName": "Numerisch" + }, + "pageEditor": { + "title": "Anwendungs-Builder", + "pageNotFound": "Seite nicht gefunden" }, "publicPage": { "siteNotFound": "Seite nicht gefunden", @@ -411,178 +506,210 @@ "authorizedToastTitle": "Authentifizierung erforderlich", "authorizedToastMessage": "Sie müssen angemeldet sein, um auf diese Seite zugreifen zu können. Bitte loggen Sie sich ein, um fortzufahren." }, + "integrationSettings": { + "title": "Integrationen", + "noIntegrationMessage": "Sie haben noch keine Integrationen erstellt. Diese können hinzugefügt werden, indem Sie eine Datenquelle, Aktion oder Benutzer-Authentifizierung hinzufügen.", + "integrationMessage": "Sie können neue Integrationen erstellen, indem Sie eine Datenquelle, Aktion oder Benutzer-Authentifizierung hinzufügen." + }, + "dataSourceForm": { + "namePlaceholder": "Quellenname", + "nameLabel": "Name", + "actionLabel": "Aktion", + "integrationLabel": "Integration", + "servicePlaceholder": "Wählen Sie einen Dienst aus", + "integrationPlaceholder": "Wählen Sie eine Integration aus", + "errorUniqueName": "Der Name der Datenquelle muss eindeutig sein." + }, + "dataSourceContext": { + "addDataSource": "Neue Datenquelle hinzufügen", + "noDataSourceTitle": "Sie haben noch keine Datenquellen hinzugefügt.", + "noDataSourceMessage": "Datenquellen können verwendet werden, um Daten aus internen oder externen Quellen abzurufen und auf der Seite anzuzeigen.", + "sharedDataSourceTitle": "Zwischen Seiten geteilt", + "pageDataSourceTitle": "Für diese Seite", + "sharedDataSourceDescription": "Ist auf jeder Seite verfügbar und wird einmalig beim ersten Laden der Seite abgerufen.", + "pageDataSourceDescription": "Wird abgerufen, wenn der Benutzer auf diese Seite navigiert." + }, + "dataSourceItem": { + "notConfigured": "Nicht konfiguriert" + }, + "dataSourceItemContext": { + "shareBetweenPages": "Teilen zwischen Seiten", + "unshareBetweenPages": "Freigabe auf anderen Seiten aufheben" + }, + "dataSourceCreateEditModal": { + "editTitle": "Datenquelle bearbeiten", + "createTitle": "Datenquelle erstellen", + "sharedWarning": "Diese Datenquelle wird gemeinsam genutzt, so dass sich Ihre Änderungen auf mehrere Seiten auswirken können." + }, "defaultStyleForm": { - "backgroundLabel": "Hintergrund", - "backgroundColor": "Hintergrundfarbe", - "widthLabel": "Breite", "boxTop": "Oben", "boxBottom": "Unten", "boxLeft": "Links", "boxRight": "Rechts", + "backgroundLabel": "Hintergrund", + "backgroundColor": "Hintergrundfarbe", + "widthLabel": "Breite", "backgroundImage": "Bild", - "backgroundImageMode": "Füllmodus" + "backgroundImageMode": "Füllmodus", + "cssClasses": "CSS-Klassen", + "cssClassesHelp": "Geben Sie eine durch Leerzeichen getrennte Liste von Klassen für dieses Element ein, die im generierten HTML erscheinen.", + "cssClassesPlaceholder": "CSS-Klassen eingeben..." }, "styleBoxForm": { + "borderColor": "Rahmenfarbe", "borderLabel": "Größe", "paddingLabel": "Innenabstand", - "borderColor": "Rahmenfarbe", "marginLabel": "Rand" }, - "mainThemeConfigBlock": { - "colorsLabel": "Farben", - "primaryColor": "Primär", - "headingLabel": "Überschrift {i} (h{i})", - "secondaryColor": "Sekundär", - "typography": "Typografie", - "headingValue": "Überschrift " - }, - "tableElementForm": { - "itemsPerPage": "Elemente pro Seite", - "fieldValuePlaceholder": "Wert eingeben...", - "fields": "Felder", - "fieldDefaultName": "Spalte", - "dataSource": "Datenquelle", - "fieldValueLabel": "Wert", - "addField": "Feld hinzufügen", - "fieldType": "Typ", - "itemsPerPagePlaceholder": "Wert eingeben...", - "selectSourceFirst": "Wählen Sie eine Datenquelle und/oder Eigenschaft, um mit der Konfiguration Ihrer Felder zu beginnen.", - "buttonColor": "Buttonfarbe", - "refreshFieldsFromDataSource": "Felder aus der Datenquelle aktualisieren", - "orientation": "Ausrichtung", - "name": "Name", - "propertySelectorMissingArrays": "Keine Felder mit mehreren Werten gefunden, die als Zeilen verwendet werden können.", - "orientationHorizontal": "Horizontal", - "orientationVertical": "Vertikal", - "buttonLoadMoreLabel": "Mehr anzeigen-Beschriftung" + "radiusStyleForm": { + "cornerRadiusLabel": "Eckradius", + "backgroundRadiusLabel": "Hintergrund", + "borderRadiusLabel": "Rahmen" }, - "tableElement": { - "empty": "Es wurden keine Elemente gefunden.", - "showMore": "Mehr anzeigen" + "themeConfigBlockType": { + "color": "Farben", + "page": "Seite", + "typography": "Typografie", + "button": "Button", + "link": "Verknüpfung", + "image": "Bild", + "input": "Eingabefeld", + "table": "Tabelle" }, - "workflowActionTypes": { - "createRowLabel": "Zeile erstellen", - "openPageLabel": "Seite öffnen", - "updateRowLabel": "Zeile aktualisieren", - "notificationLabel": "Benachrichtigung anzeigen", - "logoutLabel": "Abmelden", - "refreshDataSourceLabel": "Datenquelle aktualisieren" + "colorThemeConfigBlock": { + "transparent": "Transparent", + "primaryColor": "Primär", + "secondaryColor": "Sekundär", + "borderColor": "Rahmen", + "successColor": "Erfolgreich", + "warningColor": "Warnung", + "errorColor": "Fehler", + "customColors": "Benutzerdefinierte Farben", + "addCustomColor": "Benutzerdefinierte Farbe hinzufügen", + "customColorPrefix": "Benutzerdefiniert" }, - "notificationWorkflowActionForm": { - "titleLabel": "Titel", - "titlePlaceholder": "Text eingeben...", - "descriptionLabel": "Beschreibung", - "descriptionPlaceholder": "Text eingeben..." + "pageThemeConfigBlock": { + "backgroundColor": "Hintergrundfarbe", + "backgroundImage": "Hintergrundbild", + "backgroundMode": "Hintergrundmodus" }, - "openPageWorkflowActionForm": { - "urlPlaceholder": "Text eingeben...", - "urlLabel": "URL" + "colorThemeConfigBlockType": { + "transparent": "Transparent", + "primary": "Primär", + "secondary": "Sekundär", + "border": "Rahmen", + "success": "Erfolgreich", + "warning": "Warnung", + "error": "Fehler" }, - "event": { - "addAction": "Aktion hinzufügen" + "typographyThemeConfigBlock": { + "headingLabel": "Überschrift {i} (h{i})", + "headingValue": "Überschrift ", + "color": "Farbe", + "size": "Größe", + "weight": "Gewicht", + "textAlignment": "Ausrichtung", + "bodyLabel": "Body", + "decoration": "Textdekoration", + "fontFamily": "Schriftart" }, - "collectionFieldType": { - "text": "Text", - "link": "Verknüpfung", - "boolean": "Boolesch", - "tags": "Tags" - }, - "linkFieldForm": { - "fieldLinkNamePlaceholder": "Wert eingeben...", - "fieldValueLabel": "URL", - "fieldLinkNameLabel": "Verknüpfungstext", - "fieldValuePlaceholder": "Wert eingeben...", - "buttonColor": "Buttonfarbe" - }, - "createUserSourceForm": { - "userSourceType": "Typ", - "userSourceIntegration": "Integration", - "userSourceName": "Name" - }, - "formContainerElementForm": { - "submitButtonLabel": "Absenden-Button", - "submitButtonPlaceholder": "Wert eingeben...", - "buttonColor": "Buttonfarbe", - "resetToInitialValuesTitle": "Nach der Übermittlung auf Standardwerte zurücksetzen", - "resetToInitialValuesDescription": "Wenn diese Option aktiviert ist, werden die Standardwerte des Formulars verwendet, um das Formular nach erfolgreicher Übermittlung zurückzusetzen. Falls der Haken nicht gesetzt ist, bleiben die Werte des Benutzers erhalten." - }, - "dispatchWorkflowActionError": { - "defaultTitle": "Ereignisfehler", - "defaultMessage": "Beim Auslösen des Ereignisses ist ein Fehler aufgetreten.", - "formDataInvalidTitle": "Ungültiges Formular", - "formDataInvalidMessage": "Ein oder mehrere Felder enthalten ungültige Werte." - }, - "textFieldForm": { - "fieldValuePlaceholder": "Wert eingeben...", - "fieldValueLabel": "Wert" - }, - "generalForm": { - "valuePlaceholder": "Geben Sie einen Standardwert ein (optional)", - "placeholderPlaceholder": "Geben Sie einen Platzhalter ein (optional)", - "requiredTitle": "Erforderlich", - "labelPlaceholder": "Geben Sie eine Bezeichnung ein (optional)", - "labelTitle": "Bezeichnung", - "valueTitle": "Standardwert", - "placeholderTitle": "Platzhalter", - "validationTitle": "Überprüfung" + "fontWeightType": { + "thin": "Dünn", + "extraLight": "Extra-leicht", + "light": "Leicht", + "regular": "Regulär", + "medium": "Mittel", + "semiBold": "Semi-Bold", + "bold": "Fett", + "extraBold": "Extra-Bold", + "black": "Black", + "extraBlack": "Extra-Black" }, - "iframeElementForm": { - "urlHelp": "Hinweis: Bitte vergewissern Sie sich, dass Sie die Kontrolle über die eingegebene URL haben oder dieser vertrauen.", - "empty": "Leerer iFrame...", - "sourceTypeLabel": "Quellen-Typ", - "urlPlaceholder": "Link zur externen Ressource, welche eingebettet werden soll", - "embedLabel": "Einbetten", - "embedPlaceholder": "Reiner HTML-Inhalt, der eingebettet werden soll", - "heightLabel": "Höhe (px)", - "heightPlaceholder": "Höhe in Pixeln", - "urlLabel": "URL", - "missingValue": "Fehlende IFrame-Quelle...", - "emptyValue": "Leere IFrame-Quelle..." + "buttonThemeConfigBlock": { + "backgroundColor": "Hintergrundfarbe", + "button": "Button", + "defaultState": "Standard-Zustand", + "hoverState": "Hover-Zustand", + "activeState": "Aktiver Zustand", + "textAlignment": "Textausrichtung", + "alignment": "Ausrichtung", + "width": "Breite", + "textColor": "Textfarbe", + "borderColor": "Rahmenfarbe", + "borderSize": "Rahmengröße", + "borderRadius": "Rahmen-Radius", + "padding": "Innenabstand", + "fontFamily": "Schriftart", + "size": "Schriftgröße", + "weight": "Schriftgewicht" }, - "linkNavigationSelection": { - "navigateToCustom": "Benutzerdefinierte URL", - "paramPlaceholder": "Geben Sie einen Wert ein...", - "urlPlaceholder": "Geben Sie eine URL ein...", - "navigateTo": "Navigieren zu", - "url": "Ziel-URL", - "paramsInErrorDescription": "Die gespeicherten Parameter stimmen nicht mit den Seitenparametern überein. Die Seite wurde wahrscheinlich gelöscht oder aktualisiert.", - "paramsInErrorButton": "Parameter aktualisieren", - "targetSelf": "Gleicher Tab", - "targetNewTab": "Neuer Tab", - "target": "Öffnen in..." + "linkThemeConfigBlock": { + "color": "Farbe", + "link": "Link", + "defaultState": "Standard-Zustand", + "hoverState": "Hover-Zustand", + "activeState": "Aktiver Zustand", + "alignment": "Ausrichtung", + "fontFamily": "Schriftart", + "size": "Schriftgröße", + "weight": "Schriftgewicht", + "decoration": "Textdekoration" }, - "integrationSettings": { - "noIntegrationMessage": "Sie haben noch keine Integrationen erstellt. Diese können hinzugefügt werden, indem Sie eine Datenquelle, Aktion oder Benutzer-Authentifizierung hinzufügen.", - "title": "Integrationen", - "integrationMessage": "Sie können neue Integrationen erstellen, indem Sie eine Datenquelle, Aktion oder Benutzer-Authentifizierung hinzufügen." + "inputThemeConfigBlock": { + "label": "Beschriftung", + "input": "Eingabe", + "backgroundColor": "Hintergrundfarbe", + "textColor": "Textfarbe", + "borderColor": "Rahmenfarbe", + "borderSize": "Rahmengröße", + "borderRadius": "Rahmen-Radius", + "padding": "Innenabstand", + "fontFamily": "Schriftart", + "size": "Schriftgröße", + "weight": "Schriftgewicht" }, - "pagePreview": { - "emptyMessage": "Anklicken, um ein Element zu erstellen", - "footer": "FUSSBEREICH", - "header": "KOPFBEREICH" + "imageThemeConfigBlock": { + "alignment": "Ausrichtung", + "maxWidthLabel": "Maximale Breite", + "maxHeightLabel": "Maximale Höhe", + "maxHeightPlaceholder": "Geben Sie die maximale Höhe ein", + "maxWidthPlaceholder": "Geben Sie die maximale Breite ein", + "imageConstraintsLabel": "Beschränkungen", + "imageConstraintFullWidth": "Auf maximale Breite ausweiten", + "imageConstraintCover": "Cover", + "imageConstraintCoverDisabled": "Nicht verfügbar bei leerer maximaler Höhe.", + "imageConstraintContain": "Contain", + "imageConstraintContainDisabled": "Nicht verfügbar mit maximaler Höhe.", + "imageBorderRadiusLabel": "Randradius", + "imageBorderRadiusPlaceholder": "Geben Sie den Bildrand-Radius ein." }, - "inputTextElementForm": { - "multilineTitle": "Mehrzeilig", - "rowsTitle": "Zeilenanzahl", - "rowsPlaceholder": "Geben Sie die Anzahl der Zeilen für diese Eingabe ein", - "validationTypeAnyLabel": "Jeglich(e)", - "validationTypeIntegerLabel": "Zahl", - "validationTypeAnyDescription": "Erlaubt die Eingabe eines beliebigen Wertes.", - "validationTypeIntegerDescription": "Erzwinge einen Zahlenwert in diesem Eingabefeld.", - "validationTypeEmailLabel": "E-Mailadresse", - "validationTypeEmailDescription": "Erzwinge eine E-Mailadresse in diesem Eingabefeld.", - "inputType": "Eingabetyp", - "inputTypeTextLabel": "Text", - "passwordTypeWarning": "Passwörter sind sensible Daten. Bitte geben Sie acht, wie Sie Passwörter in Ihrer Anwendung behandeln und speichern.", - "inputTypePasswordLabel": "Passwort" + "tableThemeConfigBlock": { + "borderColor": "Rahmenfarbe", + "backgroundAlternateColor": "Gerade Zeilenfarbe", + "backgroundColor": "Hintergrundfarbe", + "textColor": "Textfarbe", + "borderSize": "Rahmengröße", + "borderRadius": "Rahmen-Radius", + "padding": "Innenabstand", + "fontFamily": "Schriftart", + "size": "Größe", + "fontSize": "Schriftgröße", + "fontWeight": "Schriftgewicht", + "table": "Tabelle", + "header": "Kopfbereich", + "alignment": "Ausrichtung", + "cells": "Zellen", + "separators": "Trennelemente", + "verticalSeparatorColor": "Vertikale Farbe", + "verticalSeparatorSize": "Vertikale Größe", + "horizontalSeparatorColor": "Horizontale Farbe", + "horizontalSeparatorSize": "Horizontale Größe" }, "buttonElementForm": { - "valuePlaceholder": "Text eingeben...", - "buttonColor": "Buttonfarbe", - "valueLabel": "Button-Text" + "valueLabel": "Button-Text", + "valuePlaceholder": "Text eingeben..." }, "buttonElement": { - "noValue": "Unbenannt...", "missingValue": "Fehlender Button-Text...", "emptyValue": "Leerer Button-Text..." }, @@ -597,51 +724,135 @@ "fontSidePanelForm": { "label": "Schriftfarbe" }, - "dropdownOptionSelector": { - "label": "Optionen", - "value": "Wert", - "addOption": "Option hinzufügen", - "name": "Name" + "choiceElementForm": { + "multiple": "Mehrere Werte zulassen", + "display": "Anzeige", + "dropdown": "Drop-Down", + "checkbox": "Kontrollfeld", + "radio": "Option" }, - "linkField": { - "details": "Details" + "dropdown": { + "empty": "Keine Optionen verfügbar" }, - "userSourceUsersContext": { - "searchPlaceholder": "Benutzer suchen", - "anonymous": "Anonym", - "unnamed": "Unbenannt", - "noEmail": "Keine E-Mailadresse" + "tableElementForm": { + "dataSource": "Datenquelle", + "fields": "Felder", + "fieldValueLabel": "Wert", + "addField": "Feld hinzufügen", + "fieldValuePlaceholder": "Wert eingeben...", + "itemsPerPage": "Elemente pro Seite", + "fieldDefaultName": "Spalte", + "name": "Name", + "noName": "Kein Name", + "fieldType": "Typ", + "itemsPerPagePlaceholder": "Wert eingeben...", + "selectSourceFirst": "Wählen Sie eine Datenquelle und/oder Eigenschaft, um mit der Konfiguration Ihrer Felder zu beginnen.", + "buttonColor": "Buttonfarbe", + "refreshFieldsFromDataSource": "Felder aus der Datenquelle aktualisieren", + "buttonLoadMoreLabel": "Mehr anzeigen-Beschriftung", + "propertySelectorMissingArrays": "Keine Felder mit mehreren Werten gefunden, die als Zeilen verwendet werden können." }, - "imageInput": { - "labelDescription": "Standardbeschreibung", - "labelButton": "Hochladen" + "tableElement": { + "showMore": "Mehr anzeigen" }, - "generalSettings": { - "labelDescription": "Wählen Sie eine 128x128 Pixel große ICO-, PNG-, GIF- oder JPEG-Datei.", - "titleOverview": "Allgemein", - "labelForm": "Favicon", - "cantUploadFaviconTitle": "Konnte die Favicon-Datei nicht hochladen", - "labelButton": "Favicon hochladen", - "cantUpdateApplicationTitle": "Konnte die Anwendung nicht aktualisieren", - "cantUploadFaviconDescription": "Leider konnte kein Favicon-Bild hochgeladen werden. Bitte stellen Sie sicher, dass die Bilddatei eindeutig ist und in einem der unterstützten Bildformate vorliegt.", - "cantUpdateApplicationDescription": "Entschuldigung, konnte die Anwendung nicht aktualisieren." + "abTable": { + "loading": "Wird geladen...", + "empty": "Es wurden keine Elemente gefunden." }, "repeatElement": { + "empty": "Es wurden keine Elemente gefunden.", "showMore": "Mehr anzeigen", "missingDataSourceTooltip": "Wählen Sie eine Datenquelle, um mit dem Hinzufügen von Elementen zu beginnen.", - "empty": "Es wurden keine Elemente gefunden.", - "emptyState": "Keine Einträge gefunden.", - "missingSchemaPropertyTooltip": "Wählen Sie eine Eigenschaft, um mit dem Hinzufügen von Elementen zu beginnen." + "missingSchemaPropertyTooltip": "Wählen Sie eine Eigenschaft, um mit dem Hinzufügen von Elementen zu beginnen.", + "emptyState": "Keine Einträge gefunden." + }, + "collectionElementForm": { + "noDataSourceMessage": "Wählen Sie eine Datenquelle mit mehreren Zeilen, um alle Ergebnisse aufzulisten, oder eine einzeilige Datenquelle, um eine Eigenschaft innerhalb dieser Zeile auszuwählen.", + "noSchemaPropertyMessage": "Wählen Sie eine Eigenschaft in der Datenquelle, die Sie als Listendaten für Ihr Element verwenden möchten.", + "propertyOptionLabel": "Benutzeraktionen" + }, + "propertyOptionForm": { + "fieldHeading": "Feld", + "filterHeading": "Filter", + "sortHeading": "Sortierung", + "searchHeading": "Suche", + "optionUnavailable": "Nicht verfügbar", + "noPropertiesAvailable": "Keine Felder verfügbar.", + "formDescription": "Wählen Sie aus, welche Eigenschaften innerhalb der Datenquelle dieses Elements von Seitenbesuchern gefiltert, sortiert und durchsucht werden können." }, "repeatElementForm": { "dataSource": "Datenquelle", "itemsPerPage": "Elemente pro Seite", + "itemsPerPagePlaceholder": "Wert eingeben...", "itemsPerRowLabel": "Elemente pro Zeile", - "orientationHorizontal": "Horizontal", + "itemsPerRowDescription": "Anzahl der Spalten pro Zeile und Gerätetyp.", + "buttonLoadMoreLabel": "Mehr anzeigen-Beschriftung", + "toggleEditorRepetitionsLabel": "Wiederholungen vorübergehend deaktivieren", + "propertySelectorMissingArrays": "Keine Felder mit mehreren Werten gefunden, mit denen wiederholt werden kann.", + "gapLabel": "Abstand zwischen Wiederholungen", + "gapVerticalLabel": "Vertikal", + "gapHorizontalLabel": "Horizontal" + }, + "recordSelectorElement": { + "emptyAdhocState": "Keine Datensätze gefunden, die '{query}' entsprechen.", + "emptyState": "Keine Einträge gefunden." + }, + "recordSelectorElementForm": { + "selectRecordsFrom": "Datensätze auswählen aus", + "noDataSourceMessage": "Wählen Sie eine Datenquelle mit mehreren Zeilen, um alle Ergebnisse aufzulisten.", + "optionNameSuffix": "Suffix für Optionsnamen", + "optionNameSuffixPlaceholder": "Geben Sie ein Suffix ein...", + "optionNameSuffixHelper": "Dieses Suffix wird beim Öffnen des Dropdowns an jeden Optionsnamen angehängt und hilft dabei, sie zu unterscheiden.", + "itemsPerPage": "Elemente pro Seite", "itemsPerPagePlaceholder": "Wert eingeben...", - "itemsPerRowDescription": "Legen Sie für jeden Gerätetyp fest, wie viele Wiederholungen pro Zeile erfolgen sollen.", - "orientationLabel": "Ausrichtung", - "orientationVertical": "Vertikal" + "multipleLabel": "Mehrere Werte zulassen", + "record": "Datensatz {id}" + }, + "currentRecordDataProviderType": { + "index": "Index", + "firstPartName": "Datenquelle: {name}", + "schemaProperty": "{prefixName}: {schemaProperty}" + }, + "workflowActionTypes": { + "notificationLabel": "Benachrichtigung anzeigen", + "openPageLabel": "Seite öffnen", + "logoutLabel": "Abmelden", + "refreshDataSourceLabel": "Datenquelle aktualisieren", + "httpRequest": "HTTP-Anfrage senden", + "errorNavigateToPageMissing": "Fehlende Eigenschaft \"Navigieren zu\"", + "errorPageParameterInError": "Mindestens ein Seitenparameter ist falsch konfiguriert", + "errorNavigationUrlMissing": "Fehlende Eigenschaft \"Navigations-URL\"", + "errorDataSourceMissing": "Keine Datenquelle ausgewählt" + }, + "notificationWorkflowActionForm": { + "titleLabel": "Titel", + "titlePlaceholder": "Text eingeben...", + "descriptionLabel": "Beschreibung", + "descriptionPlaceholder": "Text eingeben..." + }, + "event": { + "addAction": "Aktion hinzufügen" + }, + "collectionFieldType": { + "boolean": "Boolesch", + "button": "Button", + "text": "Text", + "link": "Verknüpfung", + "tags": "Tags", + "image": "Bild", + "rating": "Bewertung", + "errorValueMissing": "Fehlende Eigenschaft \"Wert\"" + }, + "textFieldForm": { + "fieldValueLabel": "Wert", + "fieldValuePlaceholder": "Wert eingeben..." + }, + "linkFieldForm": { + "fieldValueLabel": "URL", + "fieldValuePlaceholder": "Wert eingeben...", + "fieldLinkNameLabel": "Verknüpfungstext", + "fieldLinkNamePlaceholder": "Wert eingeben...", + "buttonColor": "Buttonfarbe" }, "tagsFieldForm": { "fieldValuesLabel": "Werte", @@ -649,39 +860,111 @@ "fieldColorsLabel": "Farben", "fieldColorsPlaceholder": "Farben eingeben..." }, + "linkField": { + "details": "Details" + }, + "imageFieldForm": { + "fieldSrcLabel": "Bildquelle", + "fieldSrcPlaceholder": "Wert eingeben", + "fieldAltLabel": "Alternativer Text", + "fieldAltPlaceholder": "Wert eingeben...", + "fieldAltHelp": "Wird von Screen-Readern verwendet und angezeigt, wenn das Bild nicht geladen werden kann" + }, + "createUserSourceForm": { + "userSourceType": "Typ", + "userSourceIntegration": "Integration", + "userSourceName": "Name" + }, + "updateUserSourceForm": { + "nameFieldLabel": "Name", + "nameFieldPlaceholder": "Einen Namen eingeben...", + "authTitle": "Authentifizierung", + "integrationFieldLabel": "Integration", + "addProvider": "Anbieter hinzufügen" + }, + "builderLoginPageForm": { + "pageDropdownLabel": "Anmeldeseite", + "pageDropdownPlaceholder": "Wählen Sie eine Seite aus", + "pageDropdownDescription": "Wählen Sie die Anmeldeseite aus, zu der nicht angemeldete Benutzer weitergeleitet werden sollen, wenn sie versuchen, auf eine geschützte Seite zuzugreifen." + }, "formContainerElement": { - "submitDeactivatedText": "Füllen Sie alle erforderlichen Felder aus, um das Formular abzusenden" + "submitDeactivatedText": "Füllen Sie alle erforderlichen Felder aus, um das Formular abzusenden", + "defaultSubmitButtonLabel": "Absenden" + }, + "formContainerElementForm": { + "submitButtonLabel": "Absenden-Button", + "submitButtonPlaceholder": "Wert eingeben...", + "buttonColor": "Buttonfarbe", + "resetToInitialValuesTitle": "Nach der Übermittlung auf Standardwerte zurücksetzen", + "resetToInitialValuesDescription": "Wenn diese Option aktiviert ist, werden die Standardwerte des Formulars verwendet, um das Formular nach erfolgreicher Übermittlung zurückzusetzen. Falls der Haken nicht gesetzt ist, bleiben die Werte des Benutzers erhalten." }, - "authFormElementForm": { - "userSource": "Benutzerquelle" + "choiceOptionSelector": { + "label": "Optionen", + "value": "Optionswerte", + "valuePlaceholder": "Wert eingeben", + "name": "Optionsnamen", + "namePlaceholder": "Name eingeben", + "addOption": "Option hinzufügen", + "addOptionDescription": "Klicken Sie auf 'Option hinzufügen', um Ihrem Dropdown Optionen hinzuzufügen", + "optionType": "Optionstyp", + "manual": "Manuell", + "dataSource": "Datenquelle", + "formulas": "Formeln" }, - "authFormElement": { - "email": "E-Mailadresse", - "password": "Passwort", - "emailPlaceholder": "Geben Sie ihre E-Mailadresse ein...", - "passwordPlaceholder": "Geben Sie ihr Passwort ein...", - "selectOrConfigureUserSourceFirst": "Wählen Sie eine Benutzerquelle, um dieses Anmelde-Element zu verwenden." + "fieldMappingContext": { + "enableField": "Feld aktivieren", + "disableField": "Feld deaktivieren" + }, + "checkboxElementForm": { + "labelTitle": "Optionsname", + "valueTitle": "Standardwert", + "requiredTitle": "Erforderlich" + }, + "choiceElement": { + "addOptions": "Fügen Sie Optionen hinzu, um dieses Element zu verwenden..." + }, + "userSourceUsersContext": { + "searchPlaceholder": "Benutzer suchen", + "anonymous": "Anonym", + "unnamed": "Unbenannt", + "noEmail": "Keine E-Mailadresse" }, "userSelector": { "viewAs": "Anzeigen als: {user}", - "anonymous": "Anonym" + "anonymous": "Anonym", + "member": "{prefix} Mitglied" }, "visibilityForm": { "allVisitors": "Alle Besucher", "loggedInVisitors": "Eingeloggte Besucher", "notLoggedInVisitors": "Ausgeloggte Besucher", - "warningTitle": "Wir verbessern kontinuierlich die Sicherheit", - "warningMessage": "Im Moment wird die Sichtbarkeit nur in der Benutzeroberfläche angewendet, die zugrunde liegenden Daten sind weiterhin über die API zugänglich. Weitere Informationen zur Datensicherheit entnehmen Sie bitte der <a href='https://baserow.io/user-docs/application-builder-element-visibility#note-accessing-hidden-data-via-api'>Dokumentation</a>." - }, - "dispatchDataSourceError": { - "defaultTitle": "Datenladefehler", - "defaultMessage": "Beim Laden der Daten für diese Seite ist ein Fehler aufgetreten." + "warningTitle": "Dies ist eine Sicherheitsfunktion", + "warningMessage": "Sehen Sie die {link}, um mehr über den Schutz der Daten zu erfahren.", + "documentationLink": "Dokumentation", + "excludedRolesLabel": "alle Rollen außer", + "switchAllowLabel": "Erlauben", + "switchDisallowLabel": "Verbieten", + "rolesSelectAll": "Alle auswählen", + "rolesDeselectAll": "Alle abwählen", + "rolesSelectHint": "Wählen Sie eine oder mehrere Rollen aus", + "roleTypesHint": "Wählen Sie einen Rollentyp aus", + "roleTypeAllowAllRoles": "Alle Rollen", + "roleTypeAllowAllRolesExcept": "Rollen verbieten...", + "roleTypeDisallowAllRolesExcept": "Rollen erlauben...", + "rolesAllMembersOf": "Alle Mitglieder von {name}", + "noRole": "Keine Rolle", + "errorFetchingRolesTitle": "Konnte Benutzerrollen nicht abrufen", + "errorFetchingRolesMessage": "Beim Abrufen der Benutzerrollen ist ein Fehler aufgetreten.", + "visibilityCondition": "Sichtbarkeitsbedingung", + "visibilityConditionHelper": "Wenn das Ergebnis dieser Formel wahr ist und die obige Besucherauswahl wahr ist, wird das Element sichtbar sein. Diese Bedingung wirkt sich nur auf die Sichtbarkeit des Elements aus. Um Daten stattdessen aus der Server-Antwort auszuschließen, verwenden Sie die obige Filteroption für Benutzerrollen.", + "visibilityConditionPlaceholder": "Bedingung..." }, "userDataProviderType": { "isAuthenticated": "Ist authentifiziert", "id": "ID", "email": "E-Mailadresse", - "username": "Benutzername" + "username": "Benutzername", + "role": "Rolle" }, "buttonField": { "noLabel": "Unbenannt..." @@ -690,218 +973,105 @@ "infoMessage": "Um Aktionen für diese Schaltfläche zu konfigurieren, öffnen Sie die Registerkarte „Ereignisse“ des aktuellen Elements.", "labelPlaceholder": "Geben Sie eine Bezeichnung ein..." }, - "themeConfigBlockType": { - "color": "Farben", - "button": "Button", - "page": "Seite", - "typography": "Typografie", - "link": "Verknüpfung", - "image": "Bild", - "table": "Tabelle", - "input": "Eingabefeld" - }, - "pageThemeConfigBlock": { - "backgroundImage": "Hintergrundbild", - "backgroundMode": "Hintergrundmodus", - "backgroundColor": "Hintergrundfarbe" - }, - "colorThemeConfigBlockType": { - "primary": "Primär", - "secondary": "Sekundär", - "border": "Rahmen", - "transparent": "Transparent", - "warning": "Warnung", - "success": "Erfolgreich", - "error": "Fehler" - }, - "colorThemeConfigBlock": { - "transparent": "Transparent", - "secondaryColor": "Sekundär", - "primaryColor": "Primär", - "warningColor": "Warnung", - "borderColor": "Rahmen", - "successColor": "Erfolgreich", - "errorColor": "Fehler", - "customColors": "Benutzerdefinierte Farben", - "addCustomColor": "Benutzerdefinierte Farbe hinzufügen", - "customColorPrefix": "Benutzerdefiniert" - }, - "typographyThemeConfigBlock": { - "headingValue": "Überschrift ", - "size": "Größe", - "headingLabel": "Überschrift {i} (h{i})", - "color": "Farbe", - "textAlignment": "Ausrichtung", - "weight": "Gewicht", - "bodyLabel": "Body", - "fontFamily": "Schriftart" - }, - "common": { - "timeFormatTitle": "Zeitformat", - "dateFormatTitle": "Datumsformat", - "dateFormatEU": "Europäisch", - "dateFormatUS": "US-amerikanisch", - "dateFormatISO": "ISO-Format", - "timeFormat24Hour": "24-Stunden", - "timeFormat12Hour": "12 Stunden" - }, - "dateTimePickerElementForm": { - "includeTime": "Zeit einbeziehen", - "invalidDateError": "Ungültiges Datum. Bitte stellen Sie sicher, dass das eingegebene Datum dem angegebenen Format entspricht." - }, - "choiceElementForm": { - "multiple": "Mehrere Werte zulassen", - "checkbox": "Kontrollfeld", - "radio": "Option", + "resetButton": { + "reset": "Auf Standard-Theme-Wert zurücksetzen" + }, + "backgroundModes": { + "fill": "Füllen", + "tile": "Kachel", + "fit": "Anpassen" + }, + "customStyle": { + "backToElement": "Zurück zur Elementkonfiguration", + "configureThemeOverrides": "Theme-Überschreibungen für dieses Element konfigurieren" + }, + "serviceSchemaPropertySelector": { + "label": "Eigenschaft", + "noProperties": "Keine Eigenschaften verfügbar" + }, + "userSourceDropdown": { + "label": "Benutzerquelle", + "addUserSource": "Neue Benutzerquelle hinzufügen", + "noUserSources": "Keine Benutzerquellen verfügbar" + }, + "dataSourceDropdown": { + "label": "Datenquelle", + "noDataSources": "Keine Datenquellen verfügbar", + "noSharedDataSources": "Keine geteilten Datenquellen verfügbar", + "shared": "geteilt", + "pageOnly": "diese Seite", + "addNew": "Neue Datenquelle hinzufügen" + }, + "multiPageContainerElementForm": { + "pagePosition": "Position", + "behaviour": "Verhalten", "display": "Anzeige", - "dropdown": "Drop-Down" - }, - "dataSourceItem": { - "notConfigured": "Nicht konfiguriert" - }, - "dataSourceCreateEditModal": { - "createTitle": "Datenquelle erstellen", - "sharedWarning": "Diese Datenquelle wird gemeinsam genutzt, so dass sich Ihre Änderungen auf mehrere Seiten auswirken können.", - "editTitle": "Datenquelle bearbeiten" - }, - "buttonThemeConfigBlock": { - "borderRadius": "Rahmen-Radius", - "size": "Schriftgröße", - "padding": "Innenabstand", - "weight": "Schriftgewicht", - "textColor": "Textfarbe", - "borderColor": "Rahmenfarbe", - "borderSize": "Rahmengröße", - "fontFamily": "Schriftart", - "backgroundColor": "Hintergrundfarbe", - "alignment": "Ausrichtung", - "width": "Breite", - "button": "Button", - "defaultState": "Standard-Zustand", - "hoverState": "Hover-Zustand", - "textAlignment": "Textausrichtung" - }, - "linkThemeConfigBlock": { + "selectAll": "Alle auswählen", + "deselectAll": "Alle abwählen" + }, + "pageShareType": { + "all": "Auf allen Seiten", + "only": "Nur auf ausgewählten Seiten", + "except": "Ausgewählte Seiten ausschließen" + }, + "authProviderWithModal": { + "authProviderInError": "Bitte bearbeiten Sie diesen Anbieter, um den Fehler zu beheben.", + "title": "Anbieter bearbeiten: {name}" + }, + "textDecorationSelector": { + "underline": "Unterstrichen", + "stroke": "Durchgestrichen", + "italic": "Kursiv", + "uppercase": "Großbuchstaben" + }, + "ratingFieldForm": { + "maxValue": "Maximaler Wert", "color": "Farbe", - "link": "Link", - "hoverState": "Hover-Zustand", - "alignment": "Ausrichtung", - "fontFamily": "Schriftart", - "defaultState": "Standard-Zustand", - "size": "Schriftgröße", - "weight": "Schriftgewicht" - }, - "inputThemeConfigBlock": { - "input": "Eingabe", - "backgroundColor": "Hintergrundfarbe", - "label": "Beschriftung", - "borderSize": "Rahmengröße", - "borderRadius": "Rahmen-Radius", - "borderColor": "Rahmenfarbe", - "textColor": "Textfarbe", - "padding": "Innenabstand", - "weight": "Schriftgewicht", - "fontFamily": "Schriftart", - "size": "Schriftgröße" - }, - "tableThemeConfigBlock": { - "fontSize": "Schriftgröße", - "table": "Tabelle", - "horizontalSeparatorSize": "Horizontale Größe", - "separators": "Trennelemente", - "verticalSeparatorColor": "Vertikale Farbe", - "backgroundAlternateColor": "Gerade Zeilenfarbe", - "padding": "Innenabstand", - "backgroundColor": "Hintergrundfarbe", - "header": "Kopfbereich", - "alignment": "Ausrichtung", - "cells": "Zellen", - "fontFamily": "Schriftart", - "size": "Größe", - "verticalSeparatorSize": "Vertikale Größe", - "horizontalSeparatorColor": "Horizontale Farbe", - "borderSize": "Rahmengröße", - "borderRadius": "Rahmen-Radius", - "fontWeight": "Schriftgewicht", - "borderColor": "Rahmenfarbe", - "textColor": "Textfarbe" - }, - "abTable": { - "loading": "Wird geladen...", - "empty": "Es wurden keine Elemente gefunden." - }, - "collectionElementForm": { - "noSchemaPropertyMessage": "Wählen Sie eine Eigenschaft in der Datenquelle, die Sie als Listendaten für Ihr Element verwenden möchten.", - "noDataSourceMessage": "Wählen Sie eine Datenquelle mit mehreren Zeilen, um alle Ergebnisse aufzulisten, oder eine einzeilige Datenquelle, um eine Eigenschaft innerhalb dieser Zeile auszuwählen." - }, - "dropdown": { - "empty": "Keine Optionen verfügbar" - }, - "pageVisibilitySettings": { - "allVisitors": "Alle Besucher", - "loggedInVisitors": "Eingeloggte Besucher", - "description": "Wer darf diese Seite sehen" - }, - "queryParamTypes": { - "textName": "Text", - "numericName": "Numerisch" - }, - "pageEditor": { - "pageNotFound": "Seite nicht gefunden" - }, - "dataSourceItemContext": { - "shareBetweenPages": "Teilen zwischen Seiten", - "unshareBetweenPages": "Freigabe auf anderen Seiten aufheben" - }, - "radiusStyleForm": { - "cornerRadiusLabel": "Eckradius", - "backgroundRadiusLabel": "Hintergrund", - "borderRadiusLabel": "Rahmen" - }, - "fontWeightType": { - "light": "Leicht", - "thin": "Dünn", - "extraLight": "Extra-leicht", - "regular": "Regulär", - "medium": "Mittel", - "semiBold": "Semi-Bold", - "bold": "Fett", - "extraBold": "Extra-Bold", - "black": "Black", - "extraBlack": "Extra-Black" - }, - "imageThemeConfigBlock": { - "imageBorderRadiusLabel": "Randradius", - "imageBorderRadiusPlaceholder": "Geben Sie den Bildrand-Radius ein.", - "maxWidthLabel": "Maximale Breite", - "maxHeightLabel": "Maximale Höhe", - "maxHeightPlaceholder": "Geben Sie die maximale Höhe ein", - "maxWidthPlaceholder": "Geben Sie die maximale Breite ein", - "alignment": "Ausrichtung", - "imageConstraintCoverDisabled": "Nicht verfügbar bei leerer maximaler Höhe.", - "imageConstraintContain": "Contain", - "imageConstraintsLabel": "Beschränkungen", - "imageConstraintFullWidth": "Auf maximale Breite ausweiten", - "imageConstraintCover": "Cover", - "imageConstraintContainDisabled": "Nicht verfügbar mit maximaler Höhe." - }, - "builderToast": { - "details": "Details", - "defaultTitle": "Unerwarteter Fehler", - "defaultMessage": "Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.", - "invalidContextTitle": "Ungültige Anfrage", - "invalidContextMessage": "Die Anfrage ist ungültig.", - "InvalidContentTitle": "Ungültiges Formular", - "invalidContentMessage": "Ein oder mehrere Felder enthalten ungültige Werte.", - "serviceMisconfiguredTitle": "Unvollständige Konfiguration", - "serviceMisconfiguredMessage": "Bitte prüfen Sie die Konfiguration.", - "errorWorkflowActionDispatch": "Die Aktion \"{name}\" ist fehlgeschlagen: ", - "errorDataSourceDispatch": "Fehler beim Laden der Daten von \"{name}\": " - }, - "addElementCategory": { - "suggestedElement": "Vorgeschlagene Elemente", - "baseElement": "Grundelemente", - "layoutElement": "Layout-Elemente", - "formElement": "Formularelemente" + "style": "Stil", + "star": "Stern", + "heart": "Herz", + "thumbsUp": "Daumen hoch", + "flag": "Flagge", + "value": "Wert" + }, + "ratingElementForm": { + "maxValue": "Maximum", + "color": "Farbe", + "ratingStyle": "Stil", + "star": "Stern", + "heart": "Herz", + "smile": "Smiley", + "thumbsUp": "Daumen hoch", + "flag": "Flagge" + }, + "automationSettingsModal": { + "title": "Workflow" + }, + "abFileInput": { + "delete": "Löschen" + }, + "elementsGuidedTourStep": { + "title": "Fügen Sie Elemente zu Ihrer Seite hinzu", + "content": "Jede Anwendung benötigt Komponenten! Fügen Sie Elemente wie Tabellen, Formulare, Buttons und mehr hinzu, um Ihre Anwendung zum Leben zu erwecken." + }, + "dataGuidedTourStep": { + "title": "Verbinden Sie Ihre Daten", + "content": "Verknüpfen Sie hier Ihre Baserow-Tabellen, um Ihre Daten dynamisch in verschiedenen Elementen anzuzeigen, zu filtern und zu aktualisieren." + }, + "previewGuidedTourStep": { + "title": "Ihr Steuerungszentrum", + "content": "Hier konfigurieren Sie die Seiten Ihrer Anwendung. Fügen Sie Elemente hinzu, sehen Sie sich das Ergebnis in der Vorschau an und strukturieren Sie Ihre Anwendung genau so, wie Sie es möchten." + }, + "devicesGuidedTourStep": { + "title": "Vorschau auf verschiedenen Geräten", + "content": "Wechseln Sie zwischen Desktop-, Tablet- und Mobil-Vorschauen, um zu sehen, wie Ihre Anwendung auf verschiedenen Bildschirmgrößen aussieht. Stellen Sie sicher, dass Ihr Design auf allen Geräten perfekt funktioniert!" + }, + "sidePanelGuidedTourStep": { + "title": "Seitenpanel: Elemente anpassen", + "content": "**Allgemein-Tab** – Konfigurieren Sie das ausgewählte Element.\n\n**Style-Tab** – Passen Sie Innenabstand, Außenabstand, Rahmen und mehr an.\n\n**Sichtbarkeit-Tab** – Steuern Sie, wer dieses Element sehen kann: eingeloggte Benutzer, ausgeloggte Benutzer oder bestimmte Rollen.\n\n**Ereignisse-Tab** – Wenn das Element Aktionen unterstützt, konfigurieren Sie diese hier für dynamische Interaktivität." + }, + "previewPublishGuidedTourStep": { + "title": "Vorschau & Veröffentlichung Ihrer Anwendung", + "content": "Klicken Sie auf **Vorschau**, um Ihre Anwendung privat zu testen. Wenn Sie bereit sind, klicken Sie auf **Veröffentlichen**, um sie über eine Domäne mit der Öffentlichkeit zu teilen." } } diff --git a/web-frontend/modules/builder/locales/es.json b/web-frontend/modules/builder/locales/es.json index fa3f08d0c5..60c840dc08 100644 --- a/web-frontend/modules/builder/locales/es.json +++ b/web-frontend/modules/builder/locales/es.json @@ -272,7 +272,8 @@ "moveDown": "Bajar", "moveUp": "Subir", "moveLeft": "Mover a la izquierda", - "selectParent": "Seleccionar padre" + "selectParent": "Seleccionar padre", + "drag": "Arrastrar para reordenar" }, "pageHeaderItemTypes": { "labelVariables": "Variables", diff --git a/web-frontend/modules/builder/locales/ko.json b/web-frontend/modules/builder/locales/ko.json index cb4c6b8947..c30d1de282 100644 --- a/web-frontend/modules/builder/locales/ko.json +++ b/web-frontend/modules/builder/locales/ko.json @@ -163,7 +163,8 @@ "moveDown": "아래로 이동", "moveLeft": "왼쪽으로 이동", "moveRight": "오른쪽으로 이동", - "selectParent": "부모 선택" + "selectParent": "부모 선택", + "drag": "드래그하여 순서를 변경하세요" }, "duplicatePageJobType": { "duplicating": "복제 중", diff --git a/web-frontend/modules/core/locales/de.json b/web-frontend/modules/core/locales/de.json index a88e41ce6a..60d5d143f2 100644 --- a/web-frontend/modules/core/locales/de.json +++ b/web-frontend/modules/core/locales/de.json @@ -3,33 +3,60 @@ "page": "Seite", "of": "von {pages}" }, + "workspaceSearch": { + "title": "Suche", + "searchEverything": "Suchen...", + "searching": "Wird gesucht...", + "noResults": "Keine Ergebnisse gefunden", + "noResultsSubtitle": "Wir konnten nichts finden, das „{searchTerm}“ entspricht", + "welcome": "Alles in Ihrem Arbeitsbereich durchsuchen", + "welcomeSubtitle": "Verwenden Sie das Suchfeld oben, um Anwendungen, Tabellen, Felder und mehr zu finden", + "navigate": "Navigieren", + "select": "Auswählen", + "close": "Schließen", + "empty": "(leer)", + "types": { + "applications": "Anwendungen", + "tables": "Tabellen", + "fields": "Felder", + "rows": "Zeilen" + } + }, "copied": { "label": "Kopiert!" }, + "action": { + "cancel": "Abbrechen", + "submit": "Senden" + }, "sidebarApplication": { - "renameApplication": "Umbenennen {type}", - "viewTrash": "Papierkorb anzeigen", - "deleteApplication": "Löschen {type}", - "duplicateApplication": "duplizieren {type}", - "snapshots": "Snapshots", "rename": "Umbenennen", + "duplicate": "Duplizieren", + "viewTrash": "Papierkorb anzeigen", "delete": "Löschen", - "duplicate": "Duplizieren" + "snapshots": "Snapshots" + }, + "duplicateApplicationJobType": { + "duplicating": "Duplizieren", + "duplicatedTitle": "Anwendung dupliziert" + }, + "InstallTemplateJobType": { + "installing": "Installieren", + "installedTitle": "Vorlage installiert" }, "sidebar": { "createWorkspace": "Arbeitsbereich erstellen", + "addNewWorkspace": "Neuen Arbeitsbereich hinzufügen", "inviteOthers": "Andere einladen", + "members": "Mitglieder", "logoff": "Abmelden", "errorNoWorkspace": "Sie haben keine Arbeitsbereiche.", - "admin": "Administrator", + "adminTools": "Administrations-Tools", + "home": "Startseite", "dashboard": "Dashboard", "trash": "Papierkorb", "settings": "Meine Einstellungen", - "members": "Mitglieder", "notifications": "Benachrichtigungen", - "addNewWorkspace": "Neuen Arbeitsbereich hinzufügen", - "adminTools": "Administrations-Tools", - "home": "Startseite", "adminSettings": "Administrations-Einstellungen", "general": "Allgemein", "people": "Personen", @@ -45,9 +72,72 @@ "changedDescription": "Ihre Kontoinformationen wurden geändert.", "submitButton": "Konto aktualisieren" }, + "twoFactorAuthSettings": { + "title": "Zwei-Faktor-Authentifizierung", + "loadingError": "Die Zwei-Faktor-Konfiguration konnte nicht geladen werden." + }, + "disableTwoFactorAuth": { + "title": "Sind Sie sicher, dass Sie 2FA deaktivieren möchten?", + "description": "Ihr Konto verliert eine zusätzliche Sicherheitsebene. Falls jemand Ihr Passwort herausfindet, könnte er sich möglicherweise an Ihrem Konto anmelden.", + "cancel": "Aktiviert lassen", + "disable": "Deaktivieren", + "successTitle": "Die Zwei-Faktor-Authentifizierung wurde deaktiviert", + "errorWrongPasswordTitle": "Falsches Passwort", + "errorWrongPasswordMessage": "Das eingegebene Passwort stimmt nicht mit Ihrem Passwort überein." + }, + "enableTwoFactorOptions": { + "cancel": "Abbrechen", + "continue": "Fortfahren" + }, + "saveBackupCode": { + "description": "Wenn Sie keinen Zugriff mehr auf Ihre Authentifizierungs-App oder Ihr Telefon haben und keine Authentifizierungscodes empfangen oder erzeugen können, können Sie diesen Backup-Code verwenden. Sie können ihn nur einmal verwenden. Stellen Sie sicher, dass Sie ihn aufschreiben oder an einem sicheren Ort kopieren, sodass Sie ohne Anmeldung darauf zugreifen können.", + "backupCodes": "Backup-Codes", + "copy": "Kopieren", + "continue": "Fortfahren", + "backupCodesCopiedTitle": "Kopiert!", + "backupCodesCopiedMessage": "Backup-Codes in die Zwischenablage kopiert." + }, + "totpAuthType": { + "name": "Authentifizierungs-App", + "description": "Verwenden Sie eine App, um Codes für die Zwei-Faktor-Authentifizierung zu erhalten. Wir empfehlen Apps wie Google Authenticator, Authy und Microsoft Authenticator.", + "enabledDescription": "Sie erhalten die Verifizierungscodes über eine Authentifizierungs-App. Um eine andere App oder Methode einzurichten, deaktivieren Sie einfach 2FA und richten Sie es erneut ein.", + "sideLabel": "Empfohlen" + }, + "twoFactorEnabled": { + "enabled": "Aktiviert", + "disable": "2FA deaktivieren" + }, + "totpLogin": { + "backupCodesTitle": "Backup-Code eingeben", + "backupCodesDescription": "Melden Sie sich mit Ihrem einmal verwendbaren Backup-Code an.", + "authenticate": "Authentifizieren", + "goBack": "Zurück", + "totpTitle": "Zwei-Faktor-Authentifizierung", + "totpDescription": "Geben Sie den Code aus Ihrer Authentifizierungs-App ein.", + "verify": "Verifizieren", + "useBackupCode": "Backup-Code verwenden", + "verificationFailed": "Verifizierung fehlgeschlagen", + "verificationFailedDescription": "Der eingegebene Code ist nicht korrekt.", + "loginExpired": "Anmeldung abgelaufen", + "loginExpiredDescription": "Bitte geben Sie Ihr Passwort erneut ein.", + "rateLimit": "Zu viele Versuche." + }, "settingsModal": { "title": "Meine Einstellungen" }, + "notificationPanel": { + "title": "Benachrichtigungen", + "markAllAsRead": "Alle als gelesen markieren", + "clearAll": "Alle leeren", + "noNotificationTitle": "Sie haben keine Benachrichtigungen", + "noNotification": "Wir benachrichtigen Sie über wichtige Updates und jedes Mal, wenn Sie auf Baserow erwähnt werden.", + "newNotificationsAvailable": "Es gibt neue Benachrichtigungen", + "refresh": "Aktualisieren" + }, + "clearAllNotificationsConfirmModal": { + "title": "Sind Sie sicher, dass Sie alle Benachrichtigungen leeren möchten?", + "message": "Alle Benachrichtigungen werden dauerhaft gelöscht und Sie können sie nicht mehr sehen." + }, "passwordSettings": { "title": "Passwort ändern", "changedTitle": "Passwort geändert", @@ -61,6 +151,40 @@ "errorInvalidOldPasswordTitle": "Ungültiges Passwort", "errorInvalidOldPasswordMessage": "Sie konnten Ihr Passwort nicht ändern, weil Ihr altes Passwort ungültig ist." }, + "emailSettings": { + "title": "E-Mail-Adresse ändern", + "successTitle": "Bestätigungs-E-Mail gesendet", + "successDescription": "Wir haben eine Bestätigungs-E-Mail an Ihre neue Adresse gesendet. Bitte überprüfen Sie Ihren Posteingang und klicken Sie auf den Link, um die Änderung der E-Mail-Adresse abzuschließen.", + "currentEmailLabel": "Aktuelle E-Mail-Adresse", + "newEmailLabel": "Neue E-Mail-Adresse", + "passwordLabel": "Aktuelles Passwort", + "submitButton": "Bestätigungs-E-Mail senden", + "errorInvalidPasswordTitle": "Ungültiges Passwort", + "errorInvalidPasswordMessage": "Die Änderung der E-Mail-Adresse konnte nicht angefordert werden, da Ihr Passwort nicht korrekt ist.", + "errorEmailExistsTitle": "E-Mail-Adresse existiert bereits", + "errorEmailExistsMessage": "Die Änderung der E-Mail-Adresse konnte nicht angefordert werden, da bereits ein Konto mit dieser E-Mail-Adresse existiert.", + "errorNotAllowedTitle": "Änderung der E-Mail-Adresse nicht zulässig", + "errorNotAllowedMessage": "Sie können Ihre E-Mail-Adresse nicht ändern, da Ihr Konto die Single-Sign-On-Authentifizierung (SSO) verwendet." + }, + "deleteAccountSettings": { + "title": "Konto löschen", + "description": "Sie können die Löschung Ihres Kontos planen, indem Sie Ihr aktuelles Passwort eingeben und auf die Schaltfläche klicken. Ihr Konto wird nach {days} Tagen endgültig gelöscht. Wenn Sie sich in der Zwischenzeit erneut anmelden, wird die Löschung Ihres Kontos rückgängig gemacht.", + "workspaceNoticeDescription": "Wenn Ihr Konto endgültig gelöscht wird, werden auch alle Arbeitsbereiche und zugehörigen Daten gelöscht, für die Sie der letzte aktive Benutzer mit Admin-Rechten sind. Die unten aufgeführten Arbeitsbereiche werden gelöscht, weil Sie der einzige Administrator sind. Um zu verhindern, dass sie gelöscht werden, müssen Sie vor dem Löschen Ihres Kontos einem anderen Benutzer Adminrechte erteilen.", + "orphanWorkspaces": "Wird nach Ablauf der Schonfrist ebenfalls endgültig gelöscht", + "orphanWorkspaceMemberCount": "Für niemanden freigegeben|für einen Benutzer freigegeben|freigegeben für {count} Benutzer", + "password": "Passwort", + "passwordConfirm": "Passwort wiederholen", + "repeatPasswordMatchError": "Dieses Feld muss mit dem ersten Passwortfeld übereinstimmen.", + "submitButton": "Konto löschen", + "errorInvalidPasswordTitle": "Ungültiges Passwort", + "errorInvalidPasswordMessage": "Ihr Konto konnte nicht gelöscht werden, da Ihr Passwort ungültig ist.", + "errorUserIsLastAdminTitle": "Letzter Administrator", + "errorUserIsLastAdminMessage": "Ihr Konto konnte nicht gelöscht werden, da Sie der letzte Administrator dieser Baserow-Instanz sind.", + "accountDeletedSuccessTitle": "Kontolöschung geplant", + "accountDeletedSuccessMessage": "Ihr Konto wurde zur Löschung vorgesehen.", + "workspaceLoadingError": "Die Arbeitsbereichprüfung ist fehlgeschlagen", + "workspaceLoadingErrorDescription": "Die Überprüfung der zu löschenden Arbeitsbereiche ist fehlgeschlagen, bitte aktualisieren Sie die Seite." + }, "error": { "alreadyExistsTitle": "Benutzer existiert bereits", "alreadyExistsMessage": "Es existiert bereits ein Benutzer mit der angegebenen E-Mail-Adresse.", @@ -68,6 +192,8 @@ "invalidEmail": "Bitte geben Sie eine gültige E-Mail-Adresse ein.", "disabledAccountTitle": "Konto deaktiviert", "disabledAccountMessage": "Dieses Benutzerkonto wurde deaktiviert.", + "captchaVerificationFailedTitle": "Captcha-Verifizierung fehlgeschlagen", + "captchaVerificationFailedMessage": "Die Captcha-Verifizierung ist fehlgeschlagen. Bitte versuchen Sie es erneut.", "incorrectCredentialTitle": "Inkorrekte Zugangsdaten", "incorrectCredentialMessage": "Die angegebene E-Mail-Adresse oder das Passwort ist falsch.", "inputRequired": "Eine Eingabe ist erforderlich.", @@ -91,52 +217,154 @@ "message": "Sind Sie sicher, dass Sie den Arbeitsbereich {workspace} verlassen wollen? Sie können dann nicht mehr auf die zugehörigen Anwendungen zugreifen. Wenn Sie wieder Zugang erhalten möchten, muss einer der Administratoren Sie erneut einladen. Wenn Sie den Arbeitsbereich verlassen, wird sie nicht gelöscht. Alle anderen Mitglieder haben weiterhin Zugang zu ihr. Es ist nicht möglich, einen Arbeitsbereich zu verlassen, wenn Sie der letzte Administrator sind, da der Arbeitsbereich dann nicht mehr gepflegt wird.", "leave": "Arbeitsbereich verlassen" }, + "exportWorkspaceModal": { + "title": "Exportieren", + "description": "Ihre Daten werden als ZIP-Datei exportiert, die in andere Baserow-Instanzen importiert werden kann.", + "exportSettings": "Einstellungen exportieren", + "export": "Daten exportieren", + "reset": "Von vorne beginnen", + "cancel": "Abbrechen", + "download": "Herunterladen", + "exportingState": "Exportiere...", + "exportingTableState": "Exportiere: {table}", + "exportingCreateArchiveState": "Erstelle Archiv", + "noExports": "Für diesen Arbeitsbereich gibt es noch keine Exporte.", + "created": "erstellt" + }, + "exportWorkspaceForm": { + "exportSettingsLabel": "Einstellungen exportieren", + "selectDataToExport": "Zu exportierende Daten auswählen", + "selectAll": "Alles auswählen", + "deselectAll": "Alle abwählen", + "onlyStructureLabel": "Nur die Struktur exportieren", + "onlyStructureDescription": "Wenn diese Option aktiviert ist, wird nur die Struktur der Anwendungen exportiert. Die Daten werden nicht enthalten sein." + }, + "importWorkspaceModal": { + "title": "Baserow-Daten importieren", + "description": "Sie können bestehende Baserow-Daten importieren, indem Sie die .zip-Datei einer anderen Baserow-Instanz hochladen.", + "import": "Daten importieren", + "upload": "Hochladen", + "uploadAndImport": "Hochladen & Importieren", + "cancel": "Abbrechen", + "done": "Abgeschlossen", + "close": "Schließen", + "retry": "Wiederholen", + "uploading": "Hochladen...", + "chooseFile": "Datei auswählen", + "selectApplications": "Zu importierende Daten auswählen", + "deselectAll": "Alle abwählen", + "selectAll": "Alle auswählen", + "databases": "Datenbanken", + "applications": "Anwendungen", + "successTitle": "Baserow-Daten erfolgreich importiert", + "successMessage": "{count} Anwendungen importiert", + "signatureVerificationNote": "Es ist nicht möglich, eine ZIP-Datei aus einer nicht vertrauenswürdigen Quelle zu importieren.", + "invalidResourceTitle": "Ungültige Ressource", + "invalidResourceMessage": "Die bereitgestellte Datei ist kein gültiger Baserow-Export.", + "untrustedPublicKeyTitle": "Nicht vertrauenswürdige Signatur", + "untrustedPublicKeyMessage": "Die bereitgestellte Datei wurde mit einem nicht vertrauenswürdigen öffentlichen Schlüssel signiert. Bitten Sie Ihren Administrator, den öffentlichen Schlüssel zur Liste der vertrauenswürdigen Schlüssel hinzuzufügen oder die Signaturprüfung zu deaktivieren, um diese Datei importieren zu können.", + "importingState": "Importiere...", + "importingTableStructure": "Erstelle: {table}", + "importingTableData": "Importiere Daten: {table}" + }, + "importWorkspaceForm": { + "selectApplicationsToImport": "Zu importierende Anwendungen auswählen" + }, "dashboardWorkspace": { - "showMembers": "Mitglieder", "createApplication": "Neu erstellen" }, + "dashboardVerifyEmail": { + "title": "Bitte prüfen Sie Ihre Mailbox und klicken Sie auf den Link, um Ihre E-Mailadresse zu bestätigen.", + "resendConfirmationEmail": "Bestätigungs-E-Mail erneut versenden" + }, + "resendEmailVerification": { + "confirmationEmailSentTitle": "Bestätigungs-E-Mail versendet", + "confirmationEmailSentDescription": "Die Bestätigungs-E-Mail wurde versendet." + }, + "verifyEmailAddress": { + "confirmation": "Ihre E-Mailadresse wurde bestätigt.", + "goToDashboard": "Zum Dashboard", + "invalidToken": "Kein gültiger Bestätigungs-Token.", + "disabledPasswordProvider": "Der Passwortauthentifizierungs-Provider wurde deaktiviert.", + "emailMismatchWarning": "Bitte beachten Sie, dass die bestätigte E-Mailadresse nicht zu dem Konto gehört, welches Sie gerade verwenden." + }, + "emailNotVerified": { + "title": "Bestätigung der E-Mailadresse notwendig", + "description": "Bitte überprüfen Sie Ihre Mailbox und klicken Sie auf den darin enthaltenen Bestätigungslink. Nach der Verifizierung wird Ihr Konto aktiviert.", + "resend": "Bestätigungs-E-Mail erneut versenden" + }, "workspaceInvitation": { "title": "Einladung", "message": "{by} hat Sie eingeladen, dem {workspace} beizutreten.", - "reject": "Abgelehnt", - "accept": "Akzeptiert" - }, - "workspaceMemberModal": { - "membersModalTitle": "{workspace} Mitglieder", - "userDescription": "{user} - beigetreten vor {since}", - "invitationDescription": "eingeladen vor {since}", - "sendInvite": "Einladung senden", - "userAlreadyInWorkspaceTitle": "Der Benutzer ist bereits Mitglied des Arbeitsbereichs.", - "userAlreadyInWorkspaceText": "Es ist nicht möglich, eine Einladung zu senden, wenn der Benutzer bereits Mitglied des Arbeitsbereichs ist.", - "userDescriptionPendingDeletion": "{user} - zur Löschung anstehend" + "reject": "Ablehnen", + "accept": "Akzeptieren" }, "workspaceInviteForm": { "invitationFormTitle": "Einladen per E-Mail", - "optionalMessagePlaceholder": "Optionale Nachricht", "errorInvalidEmail": "Bitte geben Sie eine gültige E-Mail Adresse ein.", - "errorTooLongMessage": "Nachrichten sind auf {amount} Zeichen begrenzt.", "additionalRoles": "Zusätzliche Rollen" }, - "workspacesContext": { - "search": "Suche nach Arbeitsbereichen", - "noResults": "Keine Ergebnisse gefunden", - "createWorkspace": "Arbeitsbereich erstellen" - }, "workspaceContext": { "renameWorkspace": "Arbeitsbereich umbenennen", + "exportWorkspace": "Daten exportieren", + "importWorkspace": "Daten importieren", + "settings": "Einstellungen", "members": "Mitglieder", + "auditLog": "Audit-Log", "viewTrash": "Papierkorb ansehen", "leaveWorkspace": "Arbeitsbereich verlassen", - "deleteWorkspace": "Arbeitsbereich löschen", - "auditLog": "Audit-Log", - "settings": "Einstellungen", - "importWorkspace": "Daten importieren", - "exportWorkspace": "Daten exportieren" + "deleteWorkspace": "Arbeitsbereich löschen" + }, + "workspaceSettingsModal": { + "title": "Arbeitsbereich-Einstellungen" + }, + "workspaceSettingType": { + "generativeAI": "Generative KI" + }, + "generativeAIModelType": { + "openai": "OpenAI", + "openaiApiKeyLabel": "API-Schlüssel", + "openaiApiKeyDescription": "Geben Sie einen OpenAI-API-Schlüssel an, wenn Sie die Integration aktivieren möchten. [Anleitung zum Erhalt eines API-Schlüssels](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key).", + "openaiOrganization": "Organisation (optional)", + "openaiModelsLabel": "Aktivierte Modelle", + "openaiModelsDescription": "Geben Sie eine durch Kommata getrennte Liste von [OpenAI-Modellen](https://platform.openai.com/docs/models/continuous-model-upgrades) an, die in Baserow verwendet werden können. (z. B. `gpt-3.5-turbo,gpt-4`)", + "openaiBaseUrl": "Basis-URL", + "openaiBaseUrlDescription": "Verwendet standardmäßig die Standard-OpenAI-Basis-URL, wenn leer. Kann optional auf https://eu.api.openai.com/v1, https://<your-resource-name>.openai.azure.com oder eine andere OpenAI-kompatible API geändert werden.", + "anthropic": "Anthropic", + "anthropicApiKeyLabel": "API-Schlüssel", + "anthropicApiKeyDescription": "Geben Sie einen Anthropic-API-Schlüssel an, wenn Sie die Integration aktivieren möchten. [Anweisungen zum Erhalt eines API-Schlüssels](https://docs.anthropic.com/en/api/getting-started).", + "anthropicModelsLabel": "Aktivierte Modelle", + "anthropicModelsDescription": "Geben Sie eine durch Kommata getrennte Liste von [Anthropic-Modellen](https://docs.anthropic.com/en/docs/about-claude/models) an, die in Baserow verwendet werden können. (z.B. `claude-3-5-sonnet-20241022,claude-3-opus-20240229`)", + "mistral": "Mistral", + "mistralApiKeyLabel": "API-Schlüssel", + "mistralApiKeyDescription": "Geben Sie einen Mistral-API-Schlüssel an, wenn Sie die Integration aktivieren möchten. [Anleitung zum Erhalt eines API-Schlüssels](https://docs.mistral.ai/getting-started/quickstart/).", + "mistralModelsLabel": "Aktivierte Modelle", + "mistralModelsDescription": "Geben Sie eine durch Kommata getrennte Liste von [Mistral-Modellen](https://docs.mistral.ai/getting-started/models/models_overview/) an, die in Baserow verwendet werden können. (z.B. `mistral-large-latest, mistral-small-latest`)", + "ollama": "Ollama", + "ollamaHostLabel": "Host", + "ollamaHostDescription": "Geben Sie den Hostnamen Ihres [Ollama](https://ollama.com/)-Servers an. Dieser läuft normalerweise lokal auf Ihrem eigenen Gerät.", + "ollamaModelsLabel": "Aktivierte Modelle", + "ollamaModelsDescription": "Geben Sie eine durch Kommata getrennte Liste von [bei Ollama installierten Modellen](https://ollama.com/library) an. Beachten Sie, dass das Modell heruntergeladen und installiert werden muss, bevor es verwendet werden kann. (z.B. `llama2,mistral`)", + "openRouter": "OpenRouter", + "openRouterApiKeyLabel": "API-Schlüssel", + "openRouterApiKeyDescription": "Geben Sie einen OpenRouter-API-Schlüssel an, wenn Sie die Integration aktivieren möchten. [Einen API-Schlüssel erhalten](https://openrouter.ai/settings/keys).", + "openRouterOrganization": "Organisation (optional)", + "openRouterModelsLabel": "Aktivierte Modelle", + "openRouterModelsDescription": "Geben Sie eine durch Kommata getrennte Liste von [OpenRouter-Modellen](https://openrouter.ai/models) an, die in Baserow verwendet werden können. (z.B. `openai/gpt-4o,anthropic/claude-3-haiku`)" + }, + "generativeAIWorkspaceSettings": { + "title": "Generative-KI-Einstellungen", + "description": "Diese Einstellungen können verwendet werden, um optional die generative KI-Konfiguration auf Arbeitsbereichsebene festzulegen. Funktionen wie das KI-Feld können deaktiviert werden, weil ihnen ein API-Schlüssel für eines der unterstützten Modelle fehlt. Indem Sie die Einstellungen hier vornehmen, können Sie diese Funktionen aktivieren. Wenn Sie einen Wert leer lassen, werden die globalen Instanzeinstellungen wiederhergestellt. Beachten Sie, dass diese Einstellungen im Arbeitsbereich gleichermaßen für alle gelten.", + "changedTitle": "Einstellungen erfolgreich aktualisiert", + "changedDescription": "Die Einstellungen wurden aktualisiert und werden nun in diesem Arbeitsbereich verwendet.", + "submitButton": "Einstellungen aktualisieren", + "openSettings": "Einstellungen öffnen", + "hideSettings": "Einstellungen ausblenden" }, "createWorkspaceModal": { "createNew": "Neuen Arbeitsbereich erstellen", - "add": "Arbeitsbereich hinzufügen", "defaultName": "Unbenannter Arbeitsbereich", + "add": "Arbeitsbereich hinzufügen", "permissionDeniedTitle": "Erlaubnis verweigert", "permissionDeniedBody": "Sie haben nicht die erforderliche Berechtigung, um einen neuen Arbeitsbereich zu erstellen." }, @@ -148,8 +376,8 @@ "use": "Verwenden Sie diese Vorlage" }, "trashSidebar": { - "title": "Papierkorb", - "unnamedWorkspace": "Unbenannter Arbeitsbereich {id}" + "unnamedWorkspace": "Unbenannter Arbeitsbereich {id}", + "workspaces": "Arbeitsbereiche" }, "trashContents": { "message": "Gelöschte Objekte aus der Vergangenheit wiederherstellen {duration}", @@ -164,15 +392,15 @@ "messageIsTrashed": "Dadurch werden sie und ihr gesamter Inhalt endgültig gelöscht. Danach können sie nicht mehr wiederhergestellt werden.", "messageIsNotTrashed": "Dadurch werden die aufgelisteten Elemente dauerhaft gelöscht. Danach können sie nicht mehr wiederhergestellt werden.", "buttonIsTrashed": "Dauerhaft löschen", - "buttonIsNotTrashed": "leer" + "buttonIsNotTrashed": "Leeren" }, "trashEntry": { "deletedUser": "Ein gelöschter Benutzer", "fromParent": "von {parent}", "name": "{user} gelöscht {type} {title} {parent}", "restore": "Wiederherstellen", - "unnamed": "Unbenannt {type} {id}", - "andMore": "... und {count} mehr" + "andMore": "... und {count} mehr", + "unnamed": "Unbenannt {type} {id}" }, "trashModal": { "emptyTitle": "Keine Arbeitsbereiche gefunden", @@ -193,35 +421,82 @@ "clickOrDrop": "Klicken Sie hier oder legen Sie Ihre Dateien ab", "retry": "Erneut versuchen" }, + "uploadFileDropzone": { + "drop": "Hier ablegen", + "clickOrDrop": "Klicken Sie hier oder legen Sie Ihre Dateien ab", + "errorTooManyFilesTitle": "Zu viele Dateien", + "errorTooManyFilesMessage": "Sie können nur eine einzelne Datei hochladen", + "errorWrongFileTypeTitle": "Falscher Dateityp", + "errorWrongFileTypeMessage": "Sie können keine Datei vom Typ {type} hochladen" + }, "createApplicationContext": { "fromTemplate": "Von Vorlage", "fromTemplateDesc": "Starten Sie zügig mit einer unserer empfohlenen Vorlagen", "table": "Tabelle", - "tableDesc": "Erstellen Sie einen neuen Ort, um die Daten in Ihrer Datenbank zu verwalten." + "tableDesc": "Erstellen Sie einen neuen Ort, um die Daten in Ihrer Datenbank zu verwalten.", + "importWorkspace": "Daten importieren", + "importWorkspaceDesc": "Bestehende Daten aus einer Baserow-Instanz hinzufügen." }, "applicationForm": { "nameLabel": "Name", "namePlaceholder": "Geben Sie den Namen ein..." }, - "connectingNotification": { + "connectingToast": { "title": "Wiederverbindung", - "content": "Wiederherstellung der Verbindung mit dem Server." + "content": "Echtzeit-Aktualisierungen werden wiederhergestellt." }, - "failedConnectingNotification": { + "failedConnectingToast": { "title": "Fehlgeschlagen", - "content": "Die Verbindung zum Server ist fehlgeschlagen. Bitte aktualisieren Sie die Seite.", + "content": "Echtzeit-Aktualisierungen konnten nicht wiederhergestellt werden. Bitte aktualisieren Sie die Seite, um fortzufahren.", + "action": "Seite aktualisieren" + }, + "authorizationErrorToast": { + "title": "Autorisierungsfehler", + "content": "Anscheinend sind Sie nicht berechtigt, diese Ressource anzuzeigen.", "action": "Seite aktualisieren" }, - "restoreNotification": { - "restore": "Gelöschten {type} wiederherstellen" + "userSessionExpiredToast": { + "title": "Sitzung abgelaufen", + "content": "Sie wurden abgemeldet, weil Ihr Authentifizierungstoken abgelaufen ist. Bitte loggen Sie sich erneut ein." }, - "copyingNotification": { + "userPasswordChangedToast": { + "title": "Passwort geändert", + "content": "Ihr Passwort wurde geändert. Bitte melden Sie sich erneut an." + }, + "restoreToast": { + "restore": "{type} (gelöscht) wiederherstellen" + }, + "copyingToast": { "title": "Kopieren...", - "content": "Vorbereiten ihre Daten" + "content": "Aufbereitung Ihrer Daten" }, - "pastingNotification": { + "PastingToast": { "title": "Einfügen...", - "content": "Vorbereiten ihre Daten" + "content": "Aufbereitung Ihrer Daten" + }, + "clearingToast": { + "title": "Leeren...", + "content": "Vorbereitung Ihrer Daten" + }, + "undoRedoToast": { + "undoingTitle": "Rückgängig machen...", + "undoingText": "Aktion rückgängig machen", + "undoneTitle": "Rückgängig gemacht", + "undoneText": "Aktion ist rückgängig gemacht", + "noMoreUndo": "Keine weiteren Aktionen zum Rückgängig machen", + "skippingUndoDueToError": "Rückgängig machen hat aufgrund eines unbekannten Fehlers nicht funktioniert, überspringe es daher.", + "redoingTitle": "Wiederherstellen...", + "redoingText": "Ihre Aktion wird wiederhergestellt", + "redoneTitle": "Wiederhergestellt", + "redoneText": "Aktion ist wiederhergestellt", + "noMoreRedo": "Keine weiteren Aktionen zum erneuten Ausführen", + "skippingRedoDueToError": "Wieder ausführen hat aufgrund eines unbekannten Fehler nicht funktioniert, überspringen.", + "failed": "Fehlgeschlagen" + }, + "permissionsUpdatedToast": { + "title": "Berechtigungen aktualisiert", + "content": "Dies kann sich darauf auswirken, worauf Sie Zugriff haben, bitte laden Sie die Seite neu.", + "action": "Neu laden" }, "errorLayout": { "notFound": "Die Seite, die Sie suchen, wurde nicht gefunden. Dies könnte daran liegen, dass die URL nicht korrekt ist oder dass Sie keine Berechtigung haben, diese Seite anzuzeigen.", @@ -236,38 +511,40 @@ "alertTitle": "Wir benötigen Ihre Hilfe!", "alertText": "Indem Sie Baserow teilen, helfen Sie uns, das Produkt weiter zu verbessern und für Ihre Zwecke nützlicher zu machen.", "tweetContent": "Entdecken Sie {'@'}baserow, ein Open-Source-Datenbank-Tool ohne Code und eine Alternative zu Airtable!", - "redditTitle": "Baserow - Eine Open-Source No-Code-Datenbank", - "noWorkspaceTitle": "Keine Arbeitsbereiche gefunden", - "noWorkspaceText": "Sie sind kein Mitglied eines Arbeitsbereichs. Anwendungen wie Datenbanken gehören zu einem Arbeitsbereich. Um sie zu erstellen, müssen Sie also einen Arbeitsbereich erstellen.", - "createWorkspace": "Arbeitsbereich erstellen", + "redditTitle": "'Baserow - Eine Open-Source No-Code-Datenbank", "becomeGithubSponsor": "Werden Sie ein GitHub-Sponsor", - "starOnGitlab": "Geben sie uns einen Stern auf GitLab", + "starOnGitHub": "Geben Sie uns einen Stern auf GitHub", "shareOnTwitter": "Tweet über Baserow", "shareOnReddit": "Teilen auf Reddit", "shareOnFacebook": "Teilen auf Facebook", "shareOnLinkedIn": "Teilen auf LinkedIn", - "noWorkspaceTextWithoutCreatePermission": "Sie sind kein Mitglied eines Arbeitsbereichs. Anwendungen wie Datenbanken gehören zu einer Arbeitsbereich. Um sie zu erstellen, müssen Sie also zuerst von einem Administrator in einen Arbeitsbereich eingeladen werden.", - "tutorialsMessage": "Erkunden Sie das Potential von Baserow", + "suggestedTemplates": "Vorgeschlagene Vorlagen", + "resources": "Ressourcen", + "knowledgeBase": "Wissensdatenbank", + "knowledgeBaseMessage": "Finden Sie Antworten auf all Ihre Fragen", "tutorials": "Tutorials", - "apiDocumentationMessage": "Erfahren Sie mehr über unseren Quelltext", + "tutorialsMessage": "Erkunden Sie das Potential von Baserow", "apiDocumentation": "API-Dokumentation", + "apiDocumentationMessage": "Erfahren Sie mehr über unseren Quelltext", "emptyWorkspace": "Dieser Arbeitsbereich ist leer", "emptyWorkspaceMessage": "Starten Sie, indem Sie eine neue Datenbank oder Anwendung erstellen.", "addNew": "Neu hinzufügen...", "noWorkspace": "Kein Arbeitsbereich", - "noWorkspaceDescription": "Legen Sie los, indem Sie einen neuen Arbeitsbereich anlegen", - "suggestedTemplates": "Vorgeschlagene Vorlagen", - "resources": "Ressourcen", - "knowledgeBase": "Wissensdatenbank", - "knowledgeBaseMessage": "Finden Sie Antworten auf all Ihre Fragen" + "noWorkspaceDescription": "Legen Sie los, indem Sie einen neuen Arbeitsbereich anlegen" + }, + "dashboardApplication": { + "createdAt": "erstellt" + }, + "templateCard": { + "viewMore": "Mehr anzeigen" }, "login": { "title": "Willkommen zurück", + "emailPlaceholder": "Geben Sie Ihre E-Mail Adresse ein..", + "passwordPlaceholder": "Geben Sie Ihr Passwort ein..", "forgotPassword": "Vergessen?", "signUpText": "Neu bei Baserow?", - "emailPlaceholder": "Geben Sie Ihre E-Mail Adresse ein.", - "passwordPlaceholder": "Geben Sie Ihr Passwort ein..", - "signUp": "Anmelden", + "signUp": "Registrieren", "displayPasswordLogin": "Anmelden mit E-Mail und Passwort", "redirecting": "Weiterleiten an Authentifizierungsanbieter..." }, @@ -275,15 +552,32 @@ "title": "Passwort zurücksetzen", "newPassword": "Neues Passwort", "repeatNewPassword": "Wiederholung des neuen Passworts", + "repeatPasswordPlaceholder": "Wiederholen Sie Ihr neues Passwort", "submit": "Passwort ändern", "changed": "Passwort geändert", + "message": "Sie können sich jetzt mit Ihrem neuen Passwort bei Baserow anmelden.", "errorInvalidLinkTitle": "Ungültiger Link", "errorInvalidLinkMessage": "Das Passwort konnte nicht zurückgesetzt werden, da der Link ungültig ist.", "errorLinkExpiredTitle": "Link abgelaufen", "errorLinkExpiredMessage": "Der Link zum Zurücksetzen des Passworts ist abgelaufen. Bitte fordern Sie ein neues an.", + "errorLinkAlreadyUsedTitle": "Link bereits verwendet", + "errorLinkAlreadyUsedMessage": "Dieser Link zum Zurücksetzen des Passworts wurde bereits verwendet. Bitte fordern Sie einen neuen an.", "disabled": "Passwort-Zurücksetzung ist deaktiviert", - "disabledMessage": "Es ist nicht möglich, ein Passwort zurückzusetzen, da es deaktiviert wurde.", - "message": "Sie können sich jetzt mit Ihrem neuen Passwort bei Baserow anmelden." + "disabledMessage": "Es ist nicht möglich, ein Passwort zurückzusetzen, da es deaktiviert wurde." + }, + "changeEmail": { + "title": "Änderung der E-Mail-Adresse bestätigen", + "submit": "Änderung der E-Mail-Adresse bestätigen", + "changed": "E-Mail-Adresse geändert", + "message": "Ihre E-Mail-Adresse wurde erfolgreich geändert. Sie können sich jetzt mit Ihrer neuen E-Mail-Adresse bei Baserow anmelden.", + "errorInvalidLinkTitle": "Ungültiger Link", + "errorInvalidLinkMessage": "Die E-Mail-Adresse konnte nicht geändert werden, da der Link ungültig ist.", + "errorLinkExpiredTitle": "Link abgelaufen", + "errorLinkExpiredMessage": "Der Link zur Änderung der E-Mail-Adresse ist abgelaufen. Bitte fordern Sie einen neuen über Ihre Kontoeinstellungen an.", + "errorEmailExistsTitle": "E-Mail-Adresse existiert bereits", + "errorEmailExistsMessage": "Die E-Mail-Adresse konnte nicht geändert werden, da bereits ein Konto mit dieser E-Mail-Adresse existiert.", + "errorEmailAlreadyChangedTitle": "E-Mail-Adresse bereits geändert", + "errorEmailAlreadyChangedMessage": "Die E-Mail-Adresse wurde bereits in die angeforderte Adresse geändert." }, "signup": { "headTitle": "Konto erstellen", @@ -292,93 +586,77 @@ "disabledMessage": "Es ist nicht möglich, ein Konto zu erstellen, da es deaktiviert wurde.", "requireFirstUser": "Willkommen in Baserow!", "requireFirstUserMessage": "Bitte füllen Sie das untenstehende Formular aus, um den Admin-Benutzer zu erstellen.", + "emailPlaceholder": "Geben Sie Ihre E-Mail Adresse ein..", "namePlaceholder": "Geben Sie Ihren Namen ein..", - "emailPlaceholder": "Geben Sie Ihre E-Mail Adresse ein.", - "passwordPlaceholder": "Geben Sie Ihr Passwort ein.", - "loginText": "Sie haben bereits ein Konto?", + "passwordPlaceholder": "Geben Sie Ihr Passwort ein..", "passwordRepeatPlaceholder": "Bestätigen Sie Ihr Passwort..", - "login": "Einloggen", - "privacyPolicy": "Datenschutzerklärung", - "terms": "Nutzungsbedingungen", - "agreeTerms": "Mit der Erstellung eines Kontos erklären Sie sich einverstanden mit {0} {1} {2}" + "loginText": "Sie haben bereits ein Konto?", + "login": "Einloggen" }, "forgotPassword": { "title": "Passwort vergessen", "message": "Geben Sie Ihre E-Mail-Adresse ein, damit wir Ihnen einen Link zum Zurücksetzen Ihres Passworts zusenden können.", "submit": "Link senden", + "confirmationTitle": "Rufen Sie Ihre E-Mails ab", "confirmation": "Wir haben eine E-Mail an {email} gesendet, die einen Link zum Zurücksetzen Ihres Baserow-Passworts enthält.", "disabled": "Passwort-Zurücksetzung ist deaktiviert", "disabledMessage": "Es ist nicht möglich, ein Passwort zurückzusetzen, da es deaktiviert wurde.", "loginText": "Sie haben bereits ein Konto und ein Passwort?", - "confirmationTitle": "Rufen Sie Ihre E-Mails ab", "goBack": "Zurück" }, "settings": { "settingsTitle": "Administrator-Einstellungen", "baserowInstanceId": "Instanz-ID", "instanceIdDescription": "Die Instanz-ID ist die eindeutige Kennung Ihrer Baserow-Kopie.", + "baserowVersion": "Baserow-Version", + "baserowVersionDescription": "Die Versionsnummer dieser Instanz.", "accountRestrictions": "Konto-Einschränkungen", "settingAllowResetPasswordName": "Erlaube das Zurücksetzen des Passworts", - "settingAllowResetPasswordDescription": "Standardmäßig ist das Zurücksetzen des Passworts aktiviert. Wenn Sie diese Einstellung deaktivieren, können Benutzer nicht mehr ihr Passwort via Link zurücksetzen.", + "settingAllowResetPasswordDescription": "Standardmäßig können Benutzer einen Link zum Zurücksetzen des Passworts anfordern.", "settingAllowResetPasswordWarning": "Bitte beachten Sie, dass sie sich selbst aus dem System aussperren könnten und der Zugang nicht mehr hergestellt werden kann, falls sie ihr Passwort vergessen.", "settingAllowNewAccountsName": "Erstellen neuer Konten zulassen", "settingAllowNewAccountsDescription": "Standardmäßig kann sich jeder Benutzer, der Ihre Baserow-Domain besucht, für ein neues Konto anmelden.", - "enabled": "aktiviert", "settingAllowSignupsViaWorkspaceInvitationsName": "Erlaube Registrierungen durch Arbeitsbereicheinladungen", "settingAllowSignupsViaWorkspaceInvitationDescription": "Auch wenn die Erstellung von neuen Konten deaktiviert ist können Nutzer:innen durch Setzen dieser Option Nutzer:innen ein Konto erstellen.", - "settingUserDeletionGraceDelayDescription": "Dies ist die Anzahl der Tage ohne Anmeldung, nach denen ein zur Löschung vorgesehenes Konto endgültig gelöscht wird.", - "userDeletionGraceDelay": "Benutzerlöschung", - "settingUserDeletionGraceDelay": "Gnadenfrist löschen", - "invalidAccountDeletionGraceDelay": "Dieser Wert ist erforderlich und muss eine positive ganze Zahl kleiner als 32000 sein", "settingAllowNonStaffCreateWorkspaceOperation": "Jedem die Möglichkeit geben, neue Arbeitsbereiche zu erstellen", "settingAllowNonStaffCreateWorkspaceOperationDescription": "Standardmäßig kann jeder neue Arbeitsbereiche erstellen. Deaktivieren Sie diese Option, damit nur Mitglieder neue Arbeitsbereiche erstellen können.", "settingAllowNonStaffCreateWorkspaceOperationWarning": "Für neue Benutzer wird automatisch ein Arbeitsbereich erstellt, in der sie Administrator sind.", - "maintenance": "Wartung", "settingTrackWorkspaceUsage": "Arbeitsbereichnutzung verfolgen", "settingTrackWorkspaceUsageDescription": "Aktiviert einen nächtlichen Job, der die Zeilen- und Dateinutzung pro Arbeitsbereich zählt und auf der Verwaltungsseite für Premium-Arbeitsbereiche angezeigt wird.", - "emailVerificationNoVerification": "Keine Verifizierung", "userSettings": "Benutzer", + "settingUserDeletionGraceDelay": "Gnadenfrist löschen", + "settingUserDeletionGraceDelayDescription": "Dies ist die Anzahl der Tage ohne Anmeldung, nach denen ein zur Löschung vorgesehenes Konto endgültig gelöscht wird.", + "invalidAccountDeletionGraceDelay": "Dieser Wert ist erforderlich und muss eine positive ganze Zahl kleiner als 32000 sein", + "enabled": "aktiviert", + "maintenance": "Wartung", "emailVerification": "E-Mail-Verifizierung", "emailVerificationDescription": "Gibt an, ob E-Mailadressen bestätigt werden müssen.", + "emailVerificationNoVerification": "Keine Verifizierung", "emailVerificationRecommended": "Empfohlen", "emailVerificationEnforced": "Erzwungen", - "settingsVerifyImportSignatureDescription": "Wenn diese Funktion aktiviert ist, wird die Signatur der importierten Daten überprüft um sicherzustellen, dass die Daten nicht manipuliert wurden.", - "baserowVersion": "Baserow-Version", "settingsVerifyImportSignature": "Import-Signatur prüfen", - "baserowVersionDescription": "Die Versionsnummer dieser Instanz." - }, - "undoRedoNotification": { - "redoingText": "Deine Aktion wird wieder hergestellt", - "redoneTitle": "Wieder ausgeführt", - "skippingUndoDueToError": "Rückgängig machen hat aufgrund eines unbekannten Fehlers nicht funktioniert, überspringen.", - "redoingTitle": "Wiederherstellen...", - "failed": "Fehlgeschlagen", - "undoingTitle": "Rückgängig machen...", - "undoingText": "Deine Aktion rückgängig machen", - "undoneTitle": "Rückgängig gemacht", - "undoneText": "Aktion ist rückgängig gemacht", - "noMoreUndo": "Keine Aktionen zum rückgängig machen übrig", - "noMoreRedo": "Keine Aktionen zum wieder-ausführen übrig", - "redoneText": "Aktion wurde wieder ausgeführt", - "skippingRedoDueToError": "Wieder ausführen hat aufgrund eines unbekannten Fehler nicht funktioniert, überspringen." - }, - "AuthorizationErrorNotification": { - "title": "Autorisierungsfehler", - "content": "Anscheinend sind Sie nicht berechtigt, diese Ressource anzuzeigen.", - "action": "Seite neu laden" + "settingsVerifyImportSignatureDescription": "Wenn diese Funktion aktiviert ist, wird die Signatur der importierten Daten überprüft um sicherzustellen, dass die Daten nicht manipuliert wurden." }, "formSidebar": { + "fields": "Felder", + "rowEditableBy": "Zeilen über Felder aktualisieren", + "rowEditableByDescription": "Die Zeilen in dieser Tabelle können über dieses Formular über die folgenden Felder zur Zeilenbearbeitung aktualisiert werden:", "actions": { "addAll": "Alle hinzufügen", "removeAll": "Alle entfernen", "addField": "Feld hinzufügen" }, + "notifyUserOnSubmit": "Benachrichtigung nach dem Absenden erhalten", "fieldsDescription": "Alle Felder sind im Formular.", - "prefillInfoLink": "Werte dynamisch vorausfüllen", + "prefillOrHideInfoLink": "Dynamisches Vorfüllen oder Ausblenden", "modal": { "title": "Felder dynamisch ausfüllen oder ausblenden", "descriptionPartOne": "Formular können vorausgefüllt werden, um dem Benutzer zu helfen das Formular schneller auszufüllen.", "descriptionPartTwo": "Alle Felder die im Formular verfügbar sind, können vorausgefüllt werden.", + "howToHide": { + "title": "Wie man ein Feld ausblendet", + "description": "Wenn Sie ein Feld dynamisch ausblenden möchten, können Sie dies mit Abfrageparametern tun, die Sie der öffentlichen von-URL hinzufügen. Diesen Abfrageparametern wird das Präfix `hide_` vorangestellt, um Kollisionen mit potenziellen künftigen Abfrageparametern zu vermeiden." + }, "howToPrefill": { "title": "Wie man ein Formular vorausfüllt", "description": "Wenn Sie ein Formular vorausfüllen wollen, können sie das mit einem Query Paremeter in der URL des Öffentlichen Formulares. Diese Query Parameter haben einen prefix von 'prefill' um potentielle Kollisionen mit anderen Query Parametern zu vermeiden." @@ -386,7 +664,7 @@ "format": { "title": "Format", "description": "Das Format der Query Parameter is das Folgende:", - "codeSnippet": "?prefill_<feld_name>=<wert>" + "codeSnippet": "?prefill_<field_name>=<value>" }, "example": { "title": "Beispiel", @@ -396,7 +674,7 @@ "spaces": { "title": "Leerzeichen", "description": "Leerzeichen in Feldern werden mit einem '+' ersetzt, um Probleme mit den Query Parametern zu vermeiden.", - "codeSnippet": "?prefill_mein+Feld=Mike" + "codeSnippet": "?prefill_my+field=Mike" }, "multipleValues": { "title": "Mehrere Werte", @@ -409,93 +687,47 @@ "ratingField": { "title": "Bewertungsfeld", "description": "Ein Bewertungsfeld akzeptiert eine Nummer welche bestimmt wie viele Sterne ausgefüllt werden sollen.", - "codeSnippet": "?prefill_Bewertung=3" + "codeSnippet": "?prefill_rating=3" }, "linkRowField": { "title": "Zeilenlinkfeld", "description": "Ein Zeilenlinkfeld kann jeden Wert akzeptieren welcher im Dropdown zu sehen ist.", - "codeSnippet": "?prefill_zeilenlinkfeld=Mike" + "codeSnippet": "?prefill_link+row=Mike" }, "selectField": { "title": "Einzel/Mehrfachauswahlfeld", "description": "Ein Einzelauswahlfeld akzeptiert jeden Wert der im Dropdown sichtbar ist. Das selbe gilt für das Mehrfachauswahlfeld, allerdings kann dieses auch mehrere Werte akzeptieren.", - "codeSnippet": "?prefill_Einzelauswahlfeld=Mike" + "codeSnippet": "?prefill_single+select=Mike" }, "dateField": { "title": "Datumsfeld", "description": "Ein Datumsfeld kann ein Datum in den folgenden Formaten akzeptieren und wir das Datenformat des Feldes benutzen um den Wert richtig darzustellen.", "codeSnippet": "\n// Standards\nISO_8601\n\n// Generelle Formate\n'YYYY-MM-DD',\n'YYYY-MM-DD hh:mm A',\n'YYYY-MM-DD HH:mm',\n\n// EU\n'DD/MM/YYYY', \n'DD/MM/YYYY hh:mm A', \n'DD/MM/YYYY HH:mm'\n\n// US\n'MM/DD/YYYY', \n'MM/DD/YYYY hh:mm A', \n'MM/DD/YYYY HH:mm'" } - }, - "howToHide": { - "description": "Wenn Sie ein Feld dynamisch ausblenden möchten, können Sie dies mit Abfrageparametern tun, die Sie der öffentlichen von-URL hinzufügen. Diesen Abfrageparametern wird das Präfix `hide_` vorangestellt, um Kollisionen mit potenziellen künftigen Abfrageparametern zu vermeiden.", - "title": "Wie man ein Feld ausblendet" } - }, - "prefillOrHideInfoLink": "Dynamisches Vorfüllen oder Ausblenden", - "notifyUserOnSubmit": "Benachrichtigung nach dem Absenden erhalten" - }, - "deleteAccountSettings": { - "workspaceNotice": "Verwaiste Arbeitsbereiche werden gelöscht", - "workspaceNoticeDescription": "Wenn Ihr Konto endgültig gelöscht wird, werden auch alle Arbeitsbereiche und zugehörigen Daten gelöscht, für die Sie der letzte aktive Benutzer mit Admin-Rechten sind. Die unten aufgeführten Arbeitsbereiche werden gelöscht, weil Sie der einzige Administrator sind. Um zu verhindern, dass sie gelöscht werden, müssen Sie vor dem Löschen Ihres Kontos einem anderen Benutzer Adminrechte erteilen.", - "passwordConfirm": "Passwort wiederholen", - "repeatPasswordMatchError": "Dieses Feld muss mit dem ersten Passwortfeld übereinstimmen.", - "submitButton": "Konto löschen", - "errorInvalidPasswordMessage": "Ihr Konto konnte nicht gelöscht werden, da Ihr Passwort ungültig ist.", - "orphanWorkspaceMemberCount": "Für niemanden freigegeben|für einen Benutzer freigegeben|freigegeben für {count} Benutzer", - "password": "Passwort", - "errorUserIsLastAdminTitle": "Letzter Administrator", - "errorUserIsLastAdminMessage": "Ihr Konto konnte nicht gelöscht werden, da Sie der letzte Administrator dieser Baserow-Instanz sind.", - "title": "Konto löschen", - "description": "Sie können die Löschung Ihres Kontos planen, indem Sie Ihr aktuelles Passwort eingeben und auf die Schaltfläche klicken. Ihr Konto wird nach {days} Tagen endgültig gelöscht. Wenn Sie sich in der Zwischenzeit erneut anmelden, wird die Löschung Ihres Kontos rückgängig gemacht.", - "accountDeletedSuccessTitle": "Kontolöschung geplant", - "accountDeletedSuccessMessage": "Ihr Konto wurde zur Löschung vorgesehen.", - "orphanWorkspaces": "Wird nach Ablauf der Schonfrist ebenfalls endgültig gelöscht", - "errorInvalidPasswordTitle": "Ungültiges Passwort", - "workspaceLoadingError": "Die Arbeitsbereichprüfung ist fehlgeschlagen", - "workspaceLoadingErrorDescription": "Die Überprüfung der zu löschenden Arbeitsbereiche ist fehlgeschlagen, bitte aktualisieren Sie die Seite." - }, - "dashboardSidebar": { - "links": "Links", - "workspaces": "Arbeitsbereiche", - "knowledgeBase": "Wissensdatenbank", - "tutorials": "Anleitungen", - "userSettings": "Benutzereinstellungen", - "trash": "Papierkorb", - "logoff": "Ausloggen" - }, - "clearingNotification": { - "content": "Aufbereitung Ihrer Daten", - "title": "Ausräumen..." + } }, "job": { "statePending": "Warten auf den Start...", "stateStarted": "Gestartet...", "stateFinished": "Abgeschlossen", + "stateCanceled": "Abgebrochen", "stateFailed": "Gescheitert", - "errorJobAlreadyRunningTitle": "Wird bereits ausgeführt", - "errorJobAlreadyRunningDescription": "Es läuft bereits ein anderer Importauftrag. Sie müssen warten, bis dieser beendet ist, bevor Sie einen weiteren Auftrag starten.", + "errorJobCannotBeCancelledTitle": "Abbrechen nicht möglich", "errorJobCannotBeCancelledDescription": "Es ist nicht möglich, den Auftrag abzubrechen, da er bereits abgeschlossen ist.\nBitte löschen Sie den ersten Snapshot in der untenstehenden Liste, um ihn zu entfernen.", - "errorJobCannotBeCancelledTitle": "Abbrechen nicht möglich" + "errorJobAlreadyRunningTitle": "Wird bereits ausgeführt", + "errorJobAlreadyRunningDescription": "Es läuft bereits ein anderer Importauftrag. Sie müssen warten, bis dieser beendet ist, bevor Sie einen weiteren Auftrag starten." }, "datetime": { + "secondsAgo": "Gerade eben | vor 1 Sekunde | vor {n} Sekunden", + "minutesAgo": "vor 0 Minuten | vor 1 Minute | vor {n} Minuten", + "hoursAgo": "vor 0 Stunden | vor 1 Stunde | vor {n} Stunden", "daysAgo": "vor 0 Tagen | vor 1 Tag | vor {n} Tagen", "monthsAgo": "vor 0 Monaten | vor 1 Monat | vor {n} Monaten", "yearsAgo": "vor 0 Jahren | vor 1 Jahr | vor {n} Jahren", - "hoursAgo": "vor 0 Stunden | vor 1 Stunde | vor {n} Stunden", - "secondsAgo": "Gerade eben | vor 1 Sekunde | {n} Sekunden zuvor", - "minutesAgo": "vor 0 Minuten | vor 1 Minute | vor {n} Minuten", "lessThanMinuteAgo": "vor weniger als einer Minute", "justNow": "gerade eben" }, - "duplicateApplicationJobType": { - "duplicating": "Duplizieren", - "duplicatedTitle": "Anwendung dupliziert" - }, - "InstallTemplateJobType": { - "installing": "Installieren", - "installedTitle": "Vorlage installiert" - }, "crudTableSearch": { "search": "Suchen" }, @@ -504,44 +736,49 @@ "invitesTabTitle": "Einladungen", "membersTable": { "title": "{userAmount} Mitglieder in {workspaceName}", - "actions": { - "copyEmail": "E-Mail kopieren", - "remove": "Aus dem Arbeitsbereich entfernen" - }, "inviteMember": "Mitglied einladen", "columns": { "name": "Name", "email": "E-Mail", "role": "Standard-Rolle", - "teams": "Teams", "highestRole": "Höchste Rolle", - "highestRoleHelpText": "Die höchste Rolle, die diesem Benutzer direkt oder von einem Team für etwas in diesem Arbeitsbereich zugewiesen wurde" + "highestRoleHelpText": "Die höchste Rolle, die diesem Benutzer direkt oder von einem Team für etwas in diesem Arbeitsbereich zugewiesen wurde", + "highestRoleInstanceHelpText": "Die höchste Rolle, die dieser Benutzer in der Instanz hat", + "teams": "Teams", + "2fa": "2FA" + }, + "actions": { + "copyEmail": "E-Mail kopieren", + "remove": "Aus dem Arbeitsbereich entfernen" } }, "invitesTable": { + "title": "{invitesAmount} Ausstehende Einladungen in {workspaceName}", "columns": { "email": "E-Mail", - "message": "Nachricht", "role": "Standardrolle" }, "actions": { "copyEmail": "E-Mail kopieren", "remove": "Einladung abbrechen" - }, - "title": "{invitesAmount} Ausstehende Einladungen in {workspaceName}" + } }, "membersInviteModal": { "title": "Arbeitsbereichmitglieder einladen", "submit": "Einladung senden", + "helpIconText": "Die ausgewählte Rolle wird die Standardrolle des Benutzers in diesem Arbeitsbereich.", "errors": { "userAlreadyInWorkspace": { "title": "Der Benutzer ist bereits Mitglied des Arbeitsbereichs.", "text": "Es ist nicht möglich, eine Einladung zu senden, wenn der Benutzer bereits Mitglied des Arbeitsbereich ist." } - }, - "helpIconText": "Die ausgewählte Rolle wird die Standardrolle des Benutzers in diesem Arbeitsbereich." + } } }, + "memberSelectionList": { + "searchPlaceholder": "Finden...", + "selectedAmountLabel": "{count} ausgewählt" + }, "memberAssignmentModalFooter": { "invite": "{count} einladen", "deselectAll": "Alle abwählen", @@ -552,19 +789,6 @@ "confirmation": "Sind Sie sicher, dass Sie {name} aus {workspaceName} entfernen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", "remove": "Entfernen" }, - "UserSessionExpiredNotification": { - "title": "Sitzung abgelaufen", - "content": "Sie wurden abgemeldet, weil Ihr Authentifizierungstoken abgelaufen ist. Bitte loggen Sie sich erneut ein." - }, - "memberSelectionList": { - "searchPlaceholder": "Finden...", - "selectedAmountLabel": "{count} ausgewählt" - }, - "permissionsUpdatedNotification": { - "content": "Dies könnte Ihren Zugang beeinträchtigen, bitte laden Sie die Seite neu.", - "action": "Neu laden", - "title": "Berechtigungen aktualisiert" - }, "editRoleContext": { "billableRolesLink": "Dokumentation zu abrechenbaren Rollen", "additionalRoles": "Zusätzliche Rollen" @@ -572,279 +796,165 @@ "highestPaidRoleField": { "billable": "Verrechenbar" }, - "uploadFileDropzone": { - "errorWrongFileTypeMessage": "Sie können keine Datei vom Typ {type} hochladen", - "errorTooManyFilesTitle": "Zu viele Dateien", - "drop": "Hier fallen lassen", - "errorWrongFileTypeTitle": "Falscher Datei Typ", - "errorTooManyFilesMessage": "Sie können nur eine einzelne Datei hochladen", - "clickOrDrop": "Klicken Sie hier oder legen Sie Ihre Dateien ab" - }, - "notificationPanel": { - "markAllAsRead": "Alle als gelesen markieren", - "title": "Mitteilungen", - "noNotification": "Wir benachrichtigen Sie über wichtige Updates und jedes Mal, wenn Sie auf Baserow erwähnt werden.", - "clearAll": "Alle leeren", - "noNotificationTitle": "Sie haben keine Benachrichtigungen", - "newNotificationsAvailable": "Es gibt neue Benachrichtigungen", - "refresh": "Aktualisieren" - }, - "clearAllNotificationsConfirmModal": { - "title": "Sind Sie sicher, dass Sie alle Benachrichtigungen leeren möchten?", - "message": "Alle Benachrichtigungen werden dauerhaft gelöscht und Sie können sie nicht mehr sehen." - }, - "connectingToast": { - "title": "Wiederverbindung", - "content": "Wiederherstellung der Verbindung mit dem Server." - }, - "failedConnectingToast": { - "content": "Die Verbindung zum Server ist fehlgeschlagen. Bitte aktualisieren Sie die Seite.", - "title": "Fehlgeschlagen", - "action": "Seite aktualisieren" - }, - "userSessionExpiredToast": { - "content": "Sie wurden abgemeldet, weil Ihr Authentifizierungstoken abgelaufen ist. Bitte loggen Sie sich erneut ein.", - "title": "Sitzung abgelaufen" - }, - "restoreToast": { - "restore": "{type} (gelöscht) wiederherstellen" - }, - "copyingToast": { - "title": "Kopieren...", - "content": "Aufbereitung Ihrer Daten" - }, - "undoRedoToast": { - "noMoreUndo": "Keine weiteren Aktionen zum Rückgängig machen", - "redoneText": "Aktion ist wiederhergestellt", - "skippingRedoDueToError": "Wieder ausführen hat aufgrund eines unbekannten Fehler nicht funktioniert, überspringen.", - "failed": "Fehlgeschlagen", - "undoingTitle": "Rückgängig machen...", - "undoingText": "Aktion rückgängig machen", - "undoneTitle": "Rückgängig gemacht", - "undoneText": "Aktion ist rückgängig gemacht", - "skippingUndoDueToError": "Rückgängig machen hat aufgrund eines unbekannten Fehlers nicht funktioniert, überspringe es daher.", - "redoingText": "Ihre Aktion wird wiederhergestellt", - "redoingTitle": "Wiederherstellen...", - "redoneTitle": "Wiederhergestellt", - "noMoreRedo": "Keine weiteren Aktionen zum erneuten Ausführen" - }, - "permissionsUpdatedToast": { - "content": "Dies kann sich darauf auswirken, worauf Sie Zugriff haben, bitte laden Sie die Seite neu.", - "action": "Neu laden", - "title": "Berechtigungen aktualisiert" - }, "integrationCreateEditModal": { "createTitle": "Neue Integration", - "warningTitle": "Warnung", - "editTitle": "Integration bearbeiten" + "editTitle": "Integration bearbeiten", + "warningTitle": "Warnung" }, "integrationEditForm": { - "name": "Integrationsname", + "name": "Name", "namePlaceholder": "Geben Sie den Namen der Integration ein..." }, - "dropdown": { - "empty": "Keine Stücke verfügbar" - }, - "styleBoxForm": { - "paddingError": "Der Wert muss eine ganze Zahl zwischen 0 und 200 sein." - }, - "workspaceInvitationRejectedNotification": { - "title": "{sender} hat Ihre Einladung zur Teilnahme an {workspaceName} abgelehnt", - "deletedUser": "Gelöschter Benutzer" - }, - "authorizationErrorToast": { - "content": "Anscheinend sind Sie nicht berechtigt, diese Ressource anzuzeigen.", - "title": "Autorisierungsfehler", - "action": "Seite aktualisieren" - }, - "clearingToast": { - "title": "Leeren...", - "content": "Vorbereitung Ihrer Daten" - }, - "PastingToast": { - "title": "Einfügen...", - "content": "Aufbereitung Ihrer Daten" + "integrationDropdown": { + "addIntegration": "Neue Integration hinzufügen", + "noIntegrations": "Keine Integrationen gefunden.", + "selectTypeFirst": "Wählen Sie zuerst den Typ aus", + "integrationPlaceholder": "Wählen Sie eine Integration aus" }, - "styleSidePanel": { - "paddingTop": "Padding top", - "paddingBottom": "Padding bottom" + "dropdown": { + "empty": "Keine Einträge verfügbar" }, "richTextEditorMentionsList": { "notFound": "Keine Benutzer gefunden" }, "workspaceInvitationAcceptedNotification": { "title": "{sender} hat Ihre Einladung angenommen, {workspaceName} beizutreten", - "deletedUser": "Gelöschter Benutzer" + "deletedUser": "Ein gelöschter Benutzer" + }, + "workspaceInvitationRejectedNotification": { + "title": "{sender} hat Ihre Einladung zur Teilnahme an {workspaceName} abgelehnt", + "deletedUser": "Ein gelöschter Benutzer" }, "workspaceInvitationCreatedNotification": { "title": "{sender} hat Sie eingeladen, {workspaceName} beizutreten", - "deletedUser": "Gelöschter Benutzer" + "deletedUser": "Ein gelöschter Benutzer" }, "versionUpgradeNotification": { "title": "{version} ist da! Sehen Sie sich an, was es Neues gibt." }, - "userPasswordChangedToast": { - "title": "Passwort geändert", - "content": "Ihr Passwort wurde geändert. Bitte melden Sie sich erneut an." - }, "emailNotifications": { - "submitButton": "Häufigkeit ändern", + "title": "E-Mailbenachrichtigungen", "label": "Erwähnungen, Kommentare und andere Benachrichtigungen", + "description": "Stellen Sie die Häufigkeit ein, mit der E-Mails an Ihren Posteingang gesendet werden.", + "instant": "Sofort", "daily": "Täglich", - "title": "E-Mailbenachrichtigungen", - "never": "Nie", "weekly": "Wöchentlich", - "description": "Stelle die Häufigkeit ein, mit der E-Mails versendet werden sollen.", - "instant": "Sofort" - }, - "dataExplorer": { - "emptyText": "Keine Daten gefunden", - "noMatchingNodesText": "Es wurden keine passenden Datenanbieter gefunden.", - "noProvidersText": "Es wurden keine Datenanbieter gefunden. Um loszulegen, können Sie zum Beispiel eine Datenquelle oder einen Seitenparameter hinzufügen." - }, - "integrationDropdown": { - "noIntegrations": "Keine Integrationen gefunden.", - "addIntegration": "Neue Integration hinzufügen", - "integrationPlaceholder": "Wähle eine Integration aus", - "selectTypeFirst": "Wähle zuerst den Typ aus" + "never": "Nie", + "submitButton": "Häufigkeit ändern" }, "formulaInputField": { - "errorInvalidFormula": "Die Formel ist ungültig." - }, - "generativeAIWorkspaceSettings": { - "description": "Diese Einstellungen können verwendet werden, um optional die generative KI-Konfiguration auf Arbeitsbereichsebene festzulegen. Funktionen wie das KI-Feld können deaktiviert werden, weil ihnen ein API-Schlüssel für eines der unterstützten Modelle fehlt. Indem Sie die Einstellungen hier vornehmen, können Sie diese Funktionen aktivieren. Wenn Sie einen Wert leer lassen, werden die globalen Instanzeinstellungen wiederhergestellt. Beachten Sie, dass diese Einstellungen im Arbeitsbereich gleichermaßen für alle gelten.", - "title": "Generative-KI-Einstellungen", - "submitButton": "Einstellungen aktualisieren", - "changedTitle": "Einstellungen erfolgreich aktualisiert", - "changedDescription": "Die Einstellungen wurden aktualisiert und werden nun in diesem Arbeitsbereich verwendet." - }, - "verifyEmailAddress": { - "invalidToken": "Kein gültiger Bestätigungs-Token.", - "disabledPasswordProvider": "Der Passwortauthentifizierungs-Provider wurde deaktiviert.", - "confirmation": "Ihre E-Mailadresse wurde bestätigt.", - "goToDashboard": "Zum Dashboard", - "emailMismatchWarning": "Bitte beachten Sie, dass die bestätigte E-Mailadresse nicht zu dem Konto gehört, welches Sie gerade verwenden." - }, - "resendEmailVerification": { - "confirmationEmailSentDescription": "Die Bestätigungs-E-Mail wurde versendet.", - "confirmationEmailSentTitle": "Bestätigungs-E-Mail versendet" - }, - "dashboardVerifyEmail": { - "title": "Bitte prüfen Sie Ihre Mailbox und klicken Sie auf den Link, um Ihre E-Mailadresse zu bestätigen.", - "resendConfirmationEmail": "Bestätigungs-E-Mail erneut versenden" - }, - "generativeAIModelType": { - "openaiOrganization": "Organisation (optional)", - "openaiModelsLabel": "Aktivierte Modelle", - "openaiModelsDescription": "Geben Sie eine durch Kommata getrennte Liste von [OpenAI-Modellen] (https://platform.openai.com/docs/models/continuous-model-upgrades) an, die in Baserow verwendet werden können. (z. B. `gpt-3.5-turbo,gpt-4`)", - "ollamaModelsDescription": "Geben Sie eine durch Kommata getrennte Liste von [bei Ollama installierten Modellen](https://ollama.com/library) an. Beachten Sie, dass das Modell heruntergeladen und installiert werden muss, bevor es verwendet werden kann. (z.B. `llama2,mistral`)", - "openaiApiKeyLabel": "API-Schlüssel", - "openaiApiKeyDescription": "Geben Sie einen OpenAI-API-Schlüssel an, wenn Sie die Integration aktivieren möchten. [Anleitung zum Erhalt eines API-Schlüssels] (https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key).", - "openai": "OpenAI", - "ollamaHostDescription": "Geben Sie den Hostnamen Ihres [Ollama](https://ollama.com/)-Servers an. Dieser läuft normalerweise lokal auf Ihrem eigenen Gerät.", - "ollamaModelsLabel": "Aktivierte Modelle", - "ollama": "Ollama", - "ollamaHostLabel": "Host", - "anthropic": "Anthropic", - "anthropicApiKeyLabel": "API-Schlüssel", - "anthropicModelsLabel": "Aktivierte Modelle", - "mistral": "Mistral", - "mistralApiKeyLabel": "API-Schlüssel", - "anthropicApiKeyDescription": "Geben Sie einen Anthropic-API-Schlüssel an, wenn Sie die Integration aktivieren möchten. [Anweisungen zum Erhalt eines API-Schlüssels](https://docs.anthropic.com/en/api/getting-started).", - "anthropicModelsDescription": "Geben Sie eine durch Kommata getrennte Liste von [Anthropic-Modellen](https://docs.anthropic.com/en/docs/about-claude/models) an, die in Baserow verwendet werden können. (z.B. `claude-3-5-sonnet-20241022,claude-3-opus-20240229`)", - "mistralApiKeyDescription": "Geben Sie einen Mistral-API-Schlüssel an, wenn Sie die Integration aktivieren möchten. [Anleitung zum Erhalt eines API-Schlüssels](https://docs.mistral.ai/getting-started/quickstart/).", - "mistralModelsLabel": "Aktivierte Modelle", - "mistralModelsDescription": "Geben Sie eine durch Kommata getrennte Liste von [Mistral-Modellen](https://docs.mistral.ai/getting-started/models/models_overview/) an, die in Baserow verwendet werden können. (z.B. `mistral-large-latest, mistral-small-latest`)", - "openRouterApiKeyDescription": "Geben Sie einen OpenRouter-API-Schlüssel an, wenn Sie die Integration aktivieren möchten. [Einen API-Schlüssel erhalten](https://openrouter.ai/settings/keys).", - "openRouter": "OpenRouter", - "openRouterApiKeyLabel": "API-Schlüssel", - "openRouterOrganization": "Organisation (optional)", - "openRouterModelsLabel": "Aktivierte Modelle" - }, - "emailNotVerified": { - "title": "Bestätigung der E-Mailadresse notwendig", - "description": "Bitte überprüfen Sie Ihre Mailbox und klicken Sie auf den darin enthaltenen Bestätigungslink. Nach der Verifizierung wird Ihr Konto aktiviert.", - "resend": "Bestätigungs-E-Mail erneut versenden" + "errorInvalidFormula": "Die Formel ist ungültig.", + "advancedFormulaMode": "Erweiterter Formelmodus", + "invalidFormulaTitle": "Ungültige Formel", + "invalidSyntax": "Keine gültige Expertenformel, bitte überprüfen Sie die Syntax." + }, + "formulaInputErrorContext": { + "viewFullError": "Vollständigen Fehler anzeigen" + }, + "formulaInputExplorerContext": { + "variables": "Variablen", + "functions": "Funktionen", + "operators": "Operatoren", + "search": "Suchen", + "useRegularInputModalTitle": "Reguläre Eingabe für dieses Feld verwenden?", + "useSimpleInput": "In den Basismodus wechseln", + "useSimpleInputModalTitle": "In den Basismodus wechseln?", + "useAdvancedInput": "In den Expertenmodus wechseln", + "useAdvancedInputModalTitle": "In den Expertenmodus wechseln?", + "modalMessage": "Beim Wechsel in einen anderen Modus wird die aktuelle Formel gelöscht. Sind Sie sicher, dass Sie fortfahren möchten?" + }, + "formulaParserErrors": { + "invalidArgCountMin": "Die Funktion '{funcType}' erwartet mindestens {minArgs} Argumente.", + "invalidArgCountExact": "Die Funktion '{funcType}' erwartet genau {minArgs} Argumente.", + "invalidArgCountRange": "Die Funktion '{funcType}' erwartet zwischen {minArgs} und {maxArgs} Argumenten." }, - "workspaceSettingsModal": { - "title": "Arbeitsbereich-Einstellungen" + "dataExplorer": { + "noMatchingNodesText": "Es wurden keine passenden Ergebnisse gefunden.", + "noProvidersText": "Es wurden keine Datenanbieter gefunden. Um loszulegen, können Sie zum Beispiel eine Datenquelle oder einen Seitenparameter hinzufügen." }, - "workspaceSettingType": { - "generativeAI": "Generative KI" + "dataExplorerNode": { + "showMore": "Mehr Wiederholungen anzeigen", + "selectNode": "Auswählen" }, "richTextEditorBubbleMenu": { "bold": "Fett", "italic": "Kursiv", - "linkEditPlaceholder": "Verknüpfungs-URL...", - "linkEditDone": "Fertig", "underline": "Unterstrichen", + "strikethrough": "Durchgestrichen", "link": "Verknüpfung", - "strikethrough": "Durchgestrichen" + "linkEditPlaceholder": "Verknüpfungs-URL...", + "linkEditDone": "Fertig" }, "richTextEditorFloatingMenu": { - "orderedList": "Nummerierte Liste", - "unorderedList": "Liste", - "code": "Code", - "taskList": "Aufgabenliste", - "heading3": "Überschrift 3", "hierarchy": "Hierarchie", - "paragraph": "Absatz", "lists": "Listen", + "paragraph": "Absatz", "heading1": "Überschrift 1", - "heading2": "Überschrift 2" + "heading2": "Überschrift 2", + "heading3": "Überschrift 3", + "orderedList": "Nummerierte Liste", + "unorderedList": "Aufzählungsliste", + "code": "Code", + "taskList": "Aufgabenliste" }, "selectAIModelForm": { "AIType": "KI-Typ", - "AIModel": "KI-Modell" + "AIModel": "KI-Modell", + "fileField": "Dateifeld", + "temperatureLabel": "Temperatur", + "temperatureDescription": "Die Temperatur eines LLM, ein Parameter zwischen 0 und {max}, passt die Zufälligkeit der Antworten an – niedrigere Werte führen zu fokussierten Antworten, während höhere Werte die Kreativität erhöhen." }, "onboarding": { - "failedDescription": "Die Einführung wurde nicht vollständig abgeschlossen, auch wenn einige Teile davon bereits abgeschlossen sind.", - "failedTryAgain": "Erneut versuchen", - "failedSkip": "Einführung überspringen", "title": "Einführung", "creating": "Erstellen Ihres ersten Arbeitsbereichs", - "cancel": "Ich möchte bei der Einrichtung keine Unterstützung", "continue": "Fortfahren", "skip": "Vorerst überspringen", - "failedTitle": "Etwas ist schiefgegangen" - }, - "inviteStep": { - "title": "Mitarbeitende einladen", - "description": "Sie können später noch mehr hinzufügen.", - "collaboratorsLabel": "Mitarbeitende" + "cancel": "Ich möchte bei der Einrichtung keine Unterstützung", + "failedTitle": "Etwas ist schiefgegangen", + "failedDescription": "Die Einführung wurde nicht vollständig abgeschlossen, auch wenn einige Teile davon bereits abgeschlossen sind.", + "failedTryAgain": "Erneut versuchen", + "failedSkip": "Einführung überspringen" }, "moreStep": { "title": "Erzählen Sie uns etwas mehr", - "roleOrJob": "Rolle oder Job-Bezeichnung...", + "how": "Wie haben Sie von uns erfahren?", + "howSearchEngine": "Suchmaschine (Google/Bing)", + "howSocialMedia": "Soziale Medien", + "howOnlineAds": "Online-Werbung", + "howContent": "Inhalte (Blog/Newsletter/Video)", + "howReviewSite": "Bewertungsseite / Marktplatz", + "howFriend": "Von einem Freund", + "howColleague": "Von einem Kollegen", + "howEvent": "Veranstaltung oder Webinar", + "howSales": "Vertriebsansprache", + "howOther": "Sonstiges", "country": "Land", - "people": "Wie viele Personen sind Teil Ihres Teams?", "share": "Ich bin einverstanden, dies mit dem Baserow-Team zu teilen" }, "teamStep": { "description": "Zu welchem Team gehören Sie?", - "financeTeam": "Finanzwesen", - "creativeProductionTeam": "Kreativbereich", - "salesAndAccountManagementTeam": "Vertrieb & Kundenbetreuung", - "otherPersonalTeam": "Sonstiges / Persönlich", "marketingTeam": "Marketing", - "title": "Lassen Sie uns gemeinsam Ihren ersten Arbeitsbereich einrichten!", - "itAndSupportTeam": "IT & Support", "productAndDesignTeam": "Produkt & Design", "engineeringTeam": "Technik", "operationsTeam": "Betrieb", + "itAndSupportTeam": "IT & Support", "hrAndLegalTeam": "Personal- & Rechtsabteilung", + "financeTeam": "Finanzwesen", + "creativeProductionTeam": "Kreativbereich", + "salesAndAccountManagementTeam": "Vertrieb & Kundenbetreuung", "customerServiceTeam": "Kundenservice", - "manufacturingTeam": "Fertigung" + "manufacturingTeam": "Fertigung", + "otherPersonalTeam": "Sonstiges / Persönlich" }, - "workspaceStep": { - "title": "Erstellen Sie Ihren Arbeitsbereich", - "workspaceLabel": "Name des Arbeitsbereichs" + "colorInput": { + "default": "Standard" }, - "dashboardApplication": { - "createdAt": "erstellt" + "colorPickerContext": { + "pickColorPlaceholder": "Oder wählen Sie eine vordefinierte Farbe" }, - "templateCard": { - "viewMore": "Mehr anzeigen" + "imageInput": { + "labelDescription": "Wählen Sie ein Bild zum Hochladen aus...", + "labelButton": "Hochladen" }, "user": { "isStaff": "Ist Personal", @@ -880,12 +990,11 @@ "delete": "Arbeitsbereich {name} löschen" }, "activeUsers": { - "newUsers": "Neuer Benutzer", - "activeUsers": "Aktive Nutzer" + "newUsers": "Neue Benutzer", + "activeUsers": "Aktive Benutzer" }, "usersAdminTable": { "allUsers": "Alle Benutzer", - "id": "ID", "username": "Benutzername", "name": "Name", "workspaces": "Arbeitsbereiche", @@ -908,7 +1017,7 @@ }, "userForm": { "fullName": "Vollständiger Name", - "email": "Email", + "email": "E-Mail", "isActive": "Ist aktiv", "warning": { "changeEmail": "Die Änderung der E-Mail-Adresse des Benutzers bedeutet, dass er sich mit der neuen E-Mail-Adresse anmelden muss, wenn er sich anmeldet. Dies muss dem Benutzer mitgeteilt werden.", @@ -921,7 +1030,7 @@ } }, "changeUserPasswordModal": { - "changePassword": "Passwort für {Benutzername} ändern" + "changePassword": "Passwort für {username} ändern" }, "deleteUserModal": { "title": "Löschen {username}", @@ -934,12 +1043,16 @@ "delete": "Benutzer löschen", "edit": "Bearbeiten { username }" }, + "twoFactorAuthField": { + "enabled": "Aktiviert", + "disabled": "Deaktiviert" + }, "adminDashboard": { "title": "Dashboard", "totals": "Summen", "totalUsers": "Anzahl der Benutzer", "totalWorkspaces": "Gesamtzahl der Arbeitsbereiche", - "totalApplications": "Gesamtanzahl der Anträge", + "totalApplications": "Gesamtanzahl der Anwendungen", "newUsers": "Neue Benutzer", "newUsers24h": "Neue Benutzer in den letzten 24 Stunden", "newUsers7days": "Neue Benutzer in den letzten 7 Tagen", @@ -950,80 +1063,93 @@ "activeUsers30days": "Aktive Benutzer in den letzten 30 Tagen", "viewAll": "Alle anzeigen" }, - "exportWorkspaceModal": { - "title": "Exportieren", - "description": "Ihre Daten werden als ZIP-Datei exportiert, die in andere Baserow-Instanzen importiert werden kann.", - "exportSettings": "Einstellungen exportieren", - "export": "Daten exportieren", - "reset": "Von vorne beginnen", - "cancel": "Abbrechen", - "download": "Herunterladen", - "noExports": "Für diesen Arbeitsbereich gibt es noch keine Exporte.", - "created": "erstellt", - "exportingState": "Exportiere", - "exportingTableState": "Exportiere Tabelle: {table}", - "exportingCreateArchiveState": "Erstelle Archiv" + "formGroup": { + "protectedField": "Dieses Feld ist geschützt. Klicken Sie hier, um es zu ändern.", + "cancelProtectedField": "Änderung abbrechen" }, - "exportWorkspaceForm": { - "onlyStructureLabel": "Nur die Struktur exportieren", - "onlyStructureDescription": "Wenn diese Option aktiviert ist, wird nur die Struktur der Anwendungen exportiert. Die Daten werden nicht enthalten sein.", - "exportSettingsLabel": "Einstellungen exportieren", - "selectDataToExport": "Zu exportierende Daten auswählen", - "selectAll": "Alles auswählen", - "deselectAll": "Alle abwählen" + "userSourceType": { + "userCountSummary": "{count} Benutzer ({lastUpdated})" }, - "importWorkspaceModal": { - "databases": "Datenbanken", - "untrustedPublicKeyMessage": "Die bereitgestellte Datei wurde mit einem nicht vertrauenswürdigen öffentlichen Schlüssel signiert. Bitten Sie Ihren Administrator, den öffentlichen Schlüssel zur Liste der vertrauenswürdigen Schlüssel hinzuzufügen oder die Signaturprüfung zu deaktivieren, um diese Datei importieren zu können.", - "retry": "Wiederholen", - "description": "Sie können bestehende Baserow-Daten importieren, indem Sie die .zip-Datei einer anderen Baserow-Instanz hochladen.", - "import": "Daten importieren", - "upload": "Hochladen", - "cancel": "Abbrechen", - "done": "Abgeschlossen", - "close": "Schließen", - "uploading": "Hochladen...", - "chooseFile": "Datei auswählen", - "selectApplications": "Zu importierende Daten auswählen", - "deselectAll": "Alle abwählen", - "selectAll": "Alle auswählen", - "applications": "Anwendungen", - "successTitle": "Baserow-Daten erfolgreich importiert", - "successMessage": "{count} Anwendungen importiert", - "signatureVerificationNote": "Es ist nicht möglich, eine ZIP-Datei aus einer nicht vertrauenswürdigen Quelle zu importieren.", - "invalidResourceTitle": "Ungültige Ressource", - "invalidResourceMessage": "Die bereitgestellte Datei ist kein gültiger Baserow-Export.", - "untrustedPublicKeyTitle": "Nicht vertrauenswürdige Signatur", - "importingState": "Importiere", - "title": "Baserow-Daten importieren", - "uploadAndImport": "Hochladen & Importieren", - "importingTableStructure": "Erstelle: {table}", - "importingTableData": "Importiere Daten: {table}" + "guidedTourStep": { + "step": "{step} von {totalSteps}", + "gotIt": "Verstanden", + "next": "Weiter", + "back": "Zurück" }, - "importWorkspaceForm": { - "selectApplicationsToImport": "Zu importierende Anwendungen auswählen" + "welcomeGuidedTourStep": { + "title": "Willkommen bei Baserow", + "content": "Lassen Sie uns einen kurzen Rundgang machen, um Sie mit den Grundlagen vertraut zu machen. In nur wenigen Klicks lernen Sie, wie Sie Ihre Daten mühelos organisieren und visualisieren können", + "buttonText": "Tour starten" }, - "workspaceSearch": { - "title": "Suche", - "searchEverything": "Suchen...", - "searching": "Wird gesucht...", - "noResults": "Keine Ergebnisse gefunden", - "noResultsSubtitle": "Wir konnten nichts finden, das „{searchTerm}“ entspricht", - "welcome": "Alles in Ihrem Workspace durchsuchen", - "welcomeSubtitle": "Verwenden Sie das Suchfeld oben, um Anwendungen, Tabellen, Felder und mehr zu finden", - "navigate": "Navigieren", - "select": "Auswählen", - "close": "Schließen", - "empty": "(leer)", - "types": { - "applications": "Anwendungen", - "tables": "Tabellen", - "fields": "Felder", - "rows": "Zeilen" - } + "controlCenterGuidedTourStep": { + "title": "Ihre Baserow-Schaltzentrale", + "content": "Die linke Seitenleiste hilft Ihnen, Ihren Arbeitsbereich zu verwalten:\n\n- Startseite – Greifen Sie auf Ihr Haupt-Dashboard zu.\n- Benachrichtigungen – Bleiben Sie über Änderungen und Erwähnungen informiert.\n- Mitglieder einladen – Arbeiten Sie zusammen, indem Sie Teammitglieder hinzufügen.\n- Papierkorb – Listen Sie alle gelöschten Elemente auf und stellen Sie sie wieder her." }, - "action": { - "cancel": "Abbrechen", - "submit": "Senden" + "createNewGuidedTourStep": { + "title": "Neue Datenbank oder Anwendung erstellen", + "content": "Klicken Sie auf „Neu hinzufügen…“, um eine neue Datenbank, Anwendung oder ein neues Dashboard für Ihr Projekt, Ihre Abteilung oder Ihr Team einzurichten." + }, + "mcpEndpointSettings": { + "title": "MCP-Server", + "createEndpoint": "Endpunkt erstellen", + "createNewTitle": "MCP-Server-Endpunkt erstellen", + "backToOverview": "Zurück", + "noEndpointsMessage": "Es wurden keine MCP-Server-Endpunkte (Model Context Protocol) hinzugefügt. Diese können verwendet werden, um direkt mit einem LLM wie Claude zu integrieren und dem LLM zu erlauben, Aktionen direkt in Baserow auszuführen. Erstellen Sie einen Server-Endpunkt, um zu beginnen." + }, + "mcpEndpointForm": { + "nameLabel": "Name", + "workspaceLabel": "Arbeitsbereich" + }, + "mcpEndpoint": { + "detailLabel": "Weitere Details", + "endpointURLIntro": "Die MCP-Server-URL (Model Context Protocol) kann zu jedem Client hinzugefügt werden, der MCP-Server unterstützt. Es handelt sich um einen eindeutigen Endpunkt, der dem LLM in Ihrem Auftrag direkten Zugriff auf Aktionen im Arbeitsbereich gewährt.", + "reveal": "Vollständige URL anzeigen", + "warning": "Behandeln Sie Ihre MCP-URL wie ein Passwort, da sie die Möglichkeit hat, Daten in Baserow zu ändern.", + "claudeInstructions": "Drei einfache Schritte, um mit Claude Desktop und dem Baserow MCP zu beginnen.\n\n1. Öffnen Sie die Claude Desktop-Einstellungen über die Navigationsleiste. (⌘+,)\n1. Wechseln Sie zur Registerkarte „Develop“ und klicken Sie auf „Edit Config“.\n1. Fügen Sie die folgende JSON-Konfiguration in `claude_desktop_config.json` ein.", + "cursorInstructions": "Drei einfache Schritte, um mit Cursor und dem Baserow MCP zu beginnen.\n\n1. Öffnen Sie die Cursor-Einstellungen (⇧+⌘+J)\n1. Navigieren Sie zur Registerkarte „MCP“ und klicken Sie auf „Add MCP Server“\n1. Fügen Sie die folgende JSON-Konfiguration hinzu.", + "windsurfInstructions": "Zwei einfache Schritte, um MCP mit Cascade in Windsurf einzurichten.\n\n1. Navigieren Sie zu Windsurf - Settings -> Advanced Settings oder Command Palette -> Open Windsurf settings page.\n1. Scrollen Sie nach unten zum Abschnitt Cascade. Dort finden Sie die Option, einen neuen Server hinzuzufügen, vorhandene Server anzuzeigen, und eine Schaltfläche, um die JSON-Konfigurationsdatei `mcp_config.json` direkt anzuzeigen. Fügen Sie das Folgende hinzu:" + }, + "coreHTTPTriggerServiceForm": { + "title": "Webhook-URL", + "urlVersion": "Version", + "urlVersionPublished": "Veröffentlicht", + "urlVersionTest": "Test", + "copyUrl": "Webhook-URL kopieren", + "urlCopied": "Webhook-URL in die Zwischenablage kopiert", + "description": "Dieser Webhook empfängt HTTP-Anfragen und löst den Workflow mit den Anfragedaten als Nutzlast aus.", + "methodsOptionLabel": "Erlaubte HTTP-Methoden", + "methodsOptionDescription": "Steuert, welche HTTP-Methoden für diesen Webhook erlaubt sind. Das Ausschließen von GET reduziert die Wahrscheinlichkeit, dass der Webhook versehentlich ausgelöst wird.", + "methodsOptionAll": "Alle", + "methodsOptionExcludeGet": "GET ausschließen" + }, + "twoFactorAuthEmpty": { + "title": "Sie haben 2FA noch nicht aktiviert", + "description": "Fügen Sie Ihrem Konto eine zusätzliche Sicherheitsebene hinzu.", + "enable": "2FA aktivieren", + "notAllowedTitle": "2FA nicht aktiviert", + "notAllowedDescription": "Das Hinzufügen von 2FA ist nur bei passwortbasierten Konten möglich." + }, + "nodeHelpTooltip": { + "exampleLabel": "Beispiel", + "result": "Ergebnis: {result}" + }, + "enableWithQRCode": { + "scanQRCode": "QR-Code scannen", + "scanQRCodeDescription": "Scannen Sie den Code mit einer App wie Google Authenticator, Authy oder Microsoft Authenticator.", + "clickToCopy": "Alternativ können Sie hier klicken, um den Code zu kopieren.", + "secretCopiedTitle": "Geheimnis kopiert", + "secretCopiedMessage": "TOTP-Geheimnis in die Zwischenablage kopiert.", + "enterCode": "Geben Sie den angezeigten Code ein", + "enterCodeDescription": "Geben Sie den 6-stelligen Code ein, der von der App angezeigt wird, um zu bestätigen, dass Sie sie korrekt eingerichtet haben.", + "verificationFailed": "Verifizierung fehlgeschlagen", + "verificationFailedDescription": "Der eingegebene Code ist nicht gültig.", + "provisioningFailed": "Bereitstellung fehlgeschlagen", + "checkSuccess": "Zwei-Faktor-Authentifizierung erfolgreich aktiviert" + }, + "adminUsers": { + "title": "Benutzer" + }, + "adminWorkspaces": { + "title": "Arbeitsbereiche" } } diff --git a/web-frontend/modules/core/locales/es.json b/web-frontend/modules/core/locales/es.json index a2601d74fc..b09d5eb3dd 100644 --- a/web-frontend/modules/core/locales/es.json +++ b/web-frontend/modules/core/locales/es.json @@ -281,7 +281,10 @@ "errorLinkExpiredMessage": "El enlace de restablecimiento de contraseña ha caducado. Solicite otro.", "disabled": "El restablecimiento de la contraseña está desactivado", "disabledMessage": "No es posible restablecer la contraseña porque ha sido desactivada.", - "message": "Ya puede iniciar sesión en Baserow con su nueva contraseña." + "message": "Ya puede iniciar sesión en Baserow con su nueva contraseña.", + "repeatPasswordPlaceholder": "Repite tu nueva contraseña", + "errorLinkAlreadyUsedTitle": "Enlace ya utilizado", + "errorLinkAlreadyUsedMessage": "Este enlace de restablecimiento de contraseña ya ha sido utilizado. Por favor, solicita uno nuevo." }, "signup": { "headTitle": "Crear una cuenta", diff --git a/web-frontend/modules/core/locales/ko.json b/web-frontend/modules/core/locales/ko.json index 94d32e889d..89ac534bce 100644 --- a/web-frontend/modules/core/locales/ko.json +++ b/web-frontend/modules/core/locales/ko.json @@ -474,7 +474,10 @@ "errorLinkExpiredTitle": "링크 만료", "errorLinkExpiredMessage": "비밀번호 재설정 링크가 만료되었습니다. 다른 링크를 요청하세요.", "disabled": "비밀번호 재설정이 비활성화됨", - "disabledMessage": "비밀번호를 재설정할 수 없습니다. 비활성화되었습니다." + "disabledMessage": "비밀번호를 재설정할 수 없습니다. 비활성화되었습니다.", + "repeatPasswordPlaceholder": "새 비밀번호를 다시 입력하세요", + "errorLinkAlreadyUsedTitle": "링크가 이미 사용되었습니다", + "errorLinkAlreadyUsedMessage": "이 비밀번호 재설정 링크는 이미 사용되었습니다. 새 링크를 요청해 주세요." }, "signup": { "headTitle": "계정 생성", diff --git a/web-frontend/modules/dashboard/locales/de.json b/web-frontend/modules/dashboard/locales/de.json index 3b4525ebf0..0315fc7436 100644 --- a/web-frontend/modules/dashboard/locales/de.json +++ b/web-frontend/modules/dashboard/locales/de.json @@ -33,7 +33,7 @@ "aggregateRowsDataSourceForm": { "data": "Daten", "sourceFieldLabel": "Quelle", - "viewFieldLabel": "Anzeigen", + "viewFieldLabel": "Ansicht", "notSelected": "Nicht ausgewählt", "aggregationFieldLabel": "Feld", "aggregationTypeLabel": "Zusammenfassung" diff --git a/web-frontend/modules/database/locales/de.json b/web-frontend/modules/database/locales/de.json index 25e6db2945..bb2df13630 100644 --- a/web-frontend/modules/database/locales/de.json +++ b/web-frontend/modules/database/locales/de.json @@ -44,11 +44,6 @@ "content": "Dieser Webhook wurde deaktiviert, weil zu viele aufeinanderfolgende Fehler aufgetreten sind. Bitte überprüfen Sie das Aufrufprotokoll für weitere Details. Klicken Sie auf die Schaltfläche unten, um ihn wieder zu aktivieren. Vergessen Sie nicht, den Webhook nach dem Aktivieren zu speichern.", "activate": "Aktivierung" }, - "deprecatedEventType": { - "description": "Dieser Webhook empfängt keine Informationen über alle geänderten Zeilen auf einmal. Bitte konvertieren Sie ihn in den Ereignistyp \"Batch\". Dadurch wird die JSON-Nutzlast in ein Format geändert, das mehrere Zeilen enthält.", - "title": "Veralteter Ereignistyp", - "convert": "Konvertieren" - }, "triggerWhenFieldsHaveChanged": "Löse aus, wenn Felder verändert wurden", "helpTriggerWhenFieldsHaveChanged": "Wird nur ausgelöst, wenn sich der Zellwert der gewählten Felder verändert." }, @@ -68,19 +63,24 @@ "createTable": "Neue Tabelle" }, "sidebarItem": { - "exportTable": "Exportieren der Tabelle", + "exportTable": "Tabelle exportieren", "webhooks": "Webhooks", "lastSynced": "Zuletzt synchronisiert", - "notSynced": "nicht sychnronisiert", + "notSynced": "nicht synchronisiert", "sync": "Tabelle synchronisieren", "updateSyncConfig": "Sync-Konfiguration aktualisieren" }, + "duplicateTableJobType": { + "name": "Tabelle duplizieren", + "duplicating": "Duplizieren", + "duplicatedTitle": "Tabelle dupliziert" + }, "apiToken": { "create": "erstellen", "read": "lesen", - "update": "Aktualisierung", + "update": "aktualisieren", "delete": "löschen", - "tokenPrefix": "Wertmarke:", + "tokenPrefix": "Token:", "viewAPIDocs": "API-Dokumentation anzeigen", "generateNewToken": "Neues Token generieren", "showOrHide": "Das Token ein- oder ausblenden", @@ -91,8 +91,8 @@ "title": "Datenbank-Token", "createToken": "Token erstellen", "noTokensMessage": "Sie haben noch kein Datenbank-Token erstellt. Sie können Datenbank-Tokens verwenden, um sich bei den REST-API-Endpunkten zu authentifizieren, wo Sie Zeilen erstellen, lesen, aktualisieren und löschen können. Es ist möglich, Berechtigungen auf Tabellenebene festzulegen.", - "hasFullPermissions": "Hat volle Berechtigung, auch für alle Kinder.", - "hasOnlySelectedPermissions": "Hat nur Berechtigungen für die ausgewählten Kinder.", + "hasFullPermissions": "Hat volle Berechtigungen, auch für alle untergeordneten Elemente.", + "hasOnlySelectedPermissions": "Hat nur Berechtigungen für die ausgewählten untergeordneten Elemente.", "noPermissions": "Hat keine Berechtigungen.", "createNewTitle": "Neues Datenbank-Token erstellen", "backToOverview": "Zurück zur Übersicht" @@ -105,16 +105,16 @@ "needOneDatabase": "Sie müssen mindestens eine Datenbank haben, um die API-Dokumentation anzuzeigen." }, "apiDocsExample": { - "requestSample": "Beispiel anfordern", - "responseSample": "Antwortbeispiel", + "requestSample": "Beispielanfrage", + "responseSample": "Beispielantwort", "userFieldNames": "Namen der Benutzerfelder" }, "apiDocsParameter": { - "optional": "Optional", + "optional": "optional", "defaultValue": "Standardwert: {value}" }, "apiDocsTableGetRow": { - "description": "Holt eine einzelne Zeile {Name}.", + "description": "Ruft eine einzelne {name}-Zeile ab.", "rowId": "Der eindeutige Bezeichner der angeforderten Zeile." }, "apiDocsErrors": { @@ -145,15 +145,16 @@ "size": "Legt fest, wie viele Zeilen pro Seite zurückgegeben werden sollen.", "userFieldNames": "Wenn der GET-Parameter \"user_field_names\" vorhanden ist und dessen Inhalt einem dieser Werte entspricht (`y`, `yes`, `true`, `t`, `on`, `1`, oder eine leere Zeichenfolge), sind die von diesem Endpunkt zurückgegebenen Feldnamen die tatsächlichen Namen der Felder.\n\nWenn der GET-Parameter \"user_field_names\" nicht angegeben wird oder nicht einem der oben angegebenen Werte entspricht, lauten alle zurückgegebenen Feldnamen \"field_\", gefolgt von der ID des Feldes. Zum Beispiel bezieht sich \"field_1\" auf das Feld mit der ID \"1\".\n\n Wenn `user_field_names` gesetzt ist, ändert sich außerdem das Verhalten der anderen GET-Parameter `order_by`, `include` und `exclude`. Sie erwarten stattdessen kommagetrennte Listen mit den tatsächlichen Feldnamen.", "search": "Wenn angegeben, werden nur Zeilen mit Daten zurückgegeben, die der Suchanfrage entsprechen.", + "test": "`{'{'}\"filter_type\": \"AND\", \"filters\": [{'{'}\"field\": \"Name\", \"type\": \"equal\", \"value\": \"test\"{'}'}]{'}'}", "orderBy": "Optional können die Zeilen nach durch Komma getrennten Feldern geordnet werden. Standardmäßig oder wenn einem Feld ein '+' vorangestellt wird, ist es aufsteigend (A-Z) geordnet, aber durch Voranstellen eines '-' kann es absteigend (Z-A) geordnet werden.\n #### Mit`user_field_names`:\n\n `order_by`sollte eine durch ein Komma getrennte Liste der Feldnamen sein, nach denen geordnet werden soll. Wenn Sie beispielsweise den folgenden GET-Parameter angeben: `order_by=My Field,-My Field 2`, werden die Zeilen nach dem Feld mit der Bezeichnung `My Field`in aufsteigender Reihenfolge geordnet. Wenn einige Felder denselben Wert haben, wird diese Teilmenge nach dem Feld `My Field 2` in absteigender Reihenfolge geordnet.\n\n Stellen Sie sicher, dass Feldern, deren Namen mit einem `+` oder `-` beginnen, ausdrücklich ein weiteres `+` oder `-` vorangestellt wird. Z.B.`+-Name`.\n\n\n Feldnamen, die Kommas enthalten, müssen in Anführungszeichen eingeschlossen werden: `\"Name ,\"`. Wenn Feldnamen Anführungszeichen enthalten, müssen sie mit dem Zeichen `\\` geschützt werden. Beispiel: `Name `.\n\n#### Ohne `user_field_names`:\n\n `order_by` sollte eine durch das Komma getrennte Liste von `field_` sein, gefolgt von der ID des Feldes, nach dem geordnet werden soll. Wenn Sie zum Beispiel den folgenden GET-Parameter angeben: `order_by=field_1,-field_2`, werden die Zeilen nach `field_1` in aufsteigender Reihenfolge geordnet. Wenn einige Felder denselben Wert haben, wird diese Teilmenge nach `field_2` in absteigender Reihenfolge geordnet.", + "filters": "Die Zeilen können optional mit denselben Ansichtsfiltern gefiltert werden, die auch für die Ansichten verfügbar sind. Dieser Parameter akzeptiert eine serialisierte JSON-Zeichenkette, die den Filterbaum enthält, der auf diese Ansicht anzuwenden ist. Der Filterbaum ist eine verschachtelte Struktur, die die anzuwendenden Filter enthält. \n\n#### Mit `user_field_names`:\n\nEin Beispiel für einen gültigen Filterbaum ist der Folgende: `{'{'}\\\"filter_type\\\": \\\"AND\\\", \\\"filters\\\": [{'{'}\\\"field\\\": \\\"Name\\\", \\\"type\\\": \\\"equal\\\", \\\"value\\\": \\\"test\\\"{'}'}]{'}'}`.\n\n#### Ohne `user_field_names`:\n\nWenn Sie zum Beispiel optional den folgenden GET-Parameter angeben: `{'{'}\\\"filter_type\\\": \\\"AND\\\", \\\"filters\\\": [{'{'}\\\"field\\\": 1, \\\"type\\\": \\\"equal\\\", \\\"value\\\": \\\"test\\\"{'}'}]{'}'}`\n\nBitte beachten Sie, dass bei Angabe dieses Parameters alle anderen `filter__{field}__{filter}` ignoriert werden, ebenso wie der Parameter \\\"filter_type\\\".", "filter": "Die Zeilen können optional mit denselben Ansichtsfiltern gefiltert werden, die auch für die Ansichten verfügbar sind. Es können mehrere Filter angewandt werden, wenn sie das gleiche Format haben. Die Variablen `field` und `filter` geben an, wie bzw. wo der Filter angewendet werden soll.\n\n#### Mit `user_field_names`:\n\nWenn Sie zum Beispiel optional den folgenden GET-Parameter angeben: `filter__Name__equal=test`, werden nur Zeilen zurückgegeben, in denen der Wert von `Name` gleich 'test' ist. Diese Methode ist abwärtskompatibel und prüft gegen `field_id`, wenn sie am Namen fehlschlägt.\n\n#### Ohne `user_field_names`:\n\nWenn Sie zum Beispiel optional den folgenden GET-Parameter angeben: `filter__field_1__equal=test`, werden nur Zeilen zurückgegeben, bei denen der Wert von `field_1` gleich 'test' ist.\n\nBitte beachten Sie, dass dieser Parameter ignoriert wird, wenn der Parameter filters angegeben wird. ", "filterLink": "Eine Liste mit allen Filtern finden Sie hier.", "filterType": "- `AND`: Gibt an, dass die Zeilen allen angegebenen Filtern entsprechen müssen.\n- `OR`: Gibt an, dass die Zeilen nur einem der Filter entsprechen müssen.\n\n Dies funktioniert nur, wenn zwei oder mehr Filter vorhanden sind.", "include": "Alle Felder werden standardmäßig in die Antwort aufgenommen. Sie können eine Teilmenge der einzuschließenden Felder auswählen, indem Sie den Abfrageparameter include angeben.\n\n #### Mit `user_field_names`:\n\n Include\" sollte eine durch das Komma getrennte Liste von Feldnamen sein, die in die Ergebnisse aufgenommen werden sollen. Wenn Sie zum Beispiel den folgenden GET-Parameter angeben: `include=My Field,-My Field 2`, dann werden nur diese Felder eingeschlossen (es sei denn, sie werden ausdrücklich ausgeschlossen).\n\n Der Name des Feldes, das die Felder enthält, muss mit einem Hinweis versehen werden: `name ,'. Enthält der Feldname Schrägstriche, so müssen diese unter Verwendung des Zeichens `\\` geschützt werden. Ex : `Name \\'.\n\n #### Ohne `user_field_names`:\n\n `include` sollte eine durch das Komma getrennte Liste von `field_` sein, gefolgt von der ID des Feldes, das in die Ergebnisse aufgenommen werden soll. Zum Beispiel: Wenn Sie den folgenden GET-Parameter `include=field_1,field_2` angeben, werden nur die Felder mit der ID `1` und der ID `2` einbezogen (es sei denn, sie werden ausdrücklich ausgeschlossen).", "exclude": "Alle Felder werden standardmäßig in die Antwort aufgenommen. Sie können eine Untergruppe von Feldern auswählen, die ausgeschlossen werden sollen, indem Sie den Abfrageparameter exclude angeben.\n\n #### Mit \"user_field_names\":\n\n`exclude` sollte eine durch das Komma getrennte Liste von Feldern sein, die von den Ergebnissen ausgeschlossen werden sollen. Wenn Sie zum Beispiel den folgenden GET-Parameter angeben: `exclude=My Field,-My Field 2` dann werden diese Felder ausgeschlossen.\n\n Der Name des Feldes, das die Felder enthält, muss mit einem Hinweis versehen sein: \"name,\". Wenn der Feldname Schrägstriche enthält, müssen diese ebenfalls mit dem Zeichen \"name\" geschützt werden. Ex : `name\\\"`.\n\n #### Ohne `user_field_names`:\n\n `exclude` sollte eine durch das Komma getrennte Liste von `field_` sein, gefolgt von der ID des Feldes, das von den Ergebnissen ausgeschlossen werden soll. Zum Beispiel: Wenn Sie den folgenden GET-Parameter `exclude=field_1,field_2` angeben, werden die Felder mit der id `1` und id `2` ausgeschlossen.", "viewId": "Standardmäßig werden keine Filter und Sortierungen außerhalb der in den Abfrageparametern definierten angewendet. Sie können die Filter und Sortierungen einer Ansicht hinzufügen, indem Sie deren `id` im GET-Parameter `view_id` angeben. Wenn Sie z. B. den folgenden GET-Parameter angeben: \"view_id=1\", werden die in der Ansicht mit der ID \"1\" definierten Filter und Sortierungen angewandt. Sie können die `view_id` im Kontextmenü einer beliebigen Ansicht finden. Es ist die Zahl in Klammern hinter dem Namen der Ansicht. \n\n #### Mit `filter__{field}__{filter}` \n\n Es werden sowohl der im Abfrageparameter angegebene Filter als auch die in der Ansicht definierten Filter angewendet.\n\n #### Mit `order_by` \n\n Wenn `order_by` angegeben wird, wird die in der Ansicht definierte Sortierung ignoriert.", - "filtersBuilder": "Öffnet den Filter-Parameter-Builder", - "filters": "Die Zeilen können optional mit denselben Ansichtsfiltern gefiltert werden, die auch für die Ansichten verfügbar sind. Dieser Parameter akzeptiert eine serialisierte JSON-Zeichenkette, die den Filterbaum enthält, der auf diese Ansicht anzuwenden ist. Der Filterbaum ist eine verschachtelte Struktur, die die anzuwendenden Filter enthält. \n\n#### Mit `user_field_names`:\n\nEin Beispiel für einen gültigen Filterbaum ist der Folgende: `{'{'}\\\"filter_type\\\": \\\"AND\\\", \\\"filters\\\": [{'{'}\\\"field\\\": \\\"Name\\\", \\\"type\\\": \\\"equal\\\", \\\"value\\\": \\\"test\\\"{'}'}]{'}'}`.\n\n#### Ohne `user_field_names`:\n\nWenn Sie zum Beispiel optional den folgenden GET-Parameter angeben: `{'{'}\\\"filter_type\\\": \\\"AND\\\", \\\"filters\\\": [{'{'}\\\"field\\\": 1, \\\"type\\\": \\\"equal\\\", \\\"value\\\": \\\"test\\\"{'}'}]{'}'}`\n\nBitte beachten Sie, dass bei Angabe dieses Parameters alle anderen `filter__{field}__{filter}` ignoriert werden, ebenso wie der Parameter \\\"filter_type\\\".", + "filtersBuilder": "Filter-Parameter-Builder öffnen", "join": "Ermöglicht die Abfrage von Feldwerten aus einer Zieltabelle über vorhandene Verknüpfungszeilenfelder. Der Parametername muss der Name eines bestehenden Link-Zeilenfeldes sein, gefolgt von __join. Der Wert sollte eine Liste von Feldnamen sein, für die zusätzliche Werte abgefragt werden sollen. Sie können ein oder mehrere Zielfelder angeben. Es ist nicht möglich, den Wert eines Link-Zeilenfeldes in der Zieltabelle zu suchen.\n\n #### Mit `user_field_names`:\n\n `join` sollte eine durch Komma getrennte Liste von Feldnamen sein, die in die Ergebnisse aufgenommen werden sollen. Zum Beispiel: Wenn Sie den folgenden GET-Parameter `LinkRowField__join=MyField,MyField2` angeben, werden die Werte von `MyField` und `My Field2` in der durch `LinkRowField` verknüpften Tabelle in die Antwort aufgenommen.\n\n#### Ohne `user_field_names`:\n\n `join` sollte eine durch Komma getrennte Liste von `field_` sein, gefolgt von der ID des Feldes, das in die Ergebnisse aufgenommen werden soll. Zum Beispiel: Wenn Sie den folgenden GET-Parameter angeben: `field_1__join=field_2,field_3`, werden die Werte von `field_2` und `field_3` in der mit `field_1` verknüpften Tabelle in die Antwort aufgenommen." }, "apiDocsIntro": { @@ -168,32 +169,52 @@ "resultFieldProperties": "Eigenschaften des Ergebnisfeldes", "id": "Primärschlüssel des Feldes. Kann verwendet werden, um den Namen der Datenbankspalte durch Hinzufügen des Präfixes `field_` zu generieren.", "name": "Name des Feldes.", - "tableId": "Zugehörige Tabelle id.", + "tableId": "Zugehörige Tabellen-ID.", "order": "Reihenfolge der Felder in der Tabelle. 0 für das erste Feld.", - "primary": "Gibt an, wenn das Feld ein Primärfeld ist. Wenn `true`, kann das Feld nicht gelöscht werden und der Wert sollte die gesamte Zeile repräsentieren.", + "primary": "Gibt an, ob das Feld ein Primärfeld ist. Wenn `true`, kann das Feld nicht gelöscht werden und der Wert sollte die gesamte Zeile repräsentieren.", "type": "Für dieses Feld definierter Typ.", "extraProps": "Einige zusätzliche Eigenschaften werden hier nicht beschrieben, da sie typspezifisch sind.", "readOnly": "Zeigt an, ob das Feld ein schreibgeschütztes Feld ist. Wenn \"true\", kann der Wert der Zelle nicht aktualisiert werden.", "descriptionField": "Feldbeschreibung" }, "apiDocsTableDeleteRow": { - "description": "Löscht eine vorhandene {name} Zeile.", + "description": "Löscht eine vorhandene {name}-Zeile.", "rowId": "Der eindeutige Bezeichner der Zeile, die gelöscht werden muss." }, + "apiDocsTableDeleteRows": { + "description": "Löscht vorhandene {name}-Zeilen.", + "items": "Ein Array von Zeilen-IDs, die gelöscht werden sollen." + }, "apiDocsTableMoveRow": { - "description": "Verschiebt eine vorhandene Zeile {name} vor eine andere Zeile. Wenn keine `before_id` angegeben wird, dann wird die Zeile an das Ende der Tabelle verschoben.", + "description": "Verschiebt eine vorhandene {name}-Zeile vor eine andere Zeile. Wenn keine `before_id` angegeben wird, dann wird die Zeile an das Ende der Tabelle verschoben.", "rowId": "Verschiebt die mit dem Wert verbundene Zeile.", "before": "Verschiebt die Zeile mit der angegebenen `row_id` vor die Zeile mit dem angegebenen Wert. Wenn nicht angegeben, wird die Zeile an das Ende verschoben." }, + "apiDocsUploadFile": { + "description": "Lädt eine Datei auf Baserow hoch, indem der Dateiinhalt direkt hochgeladen wird. Es wird ein Multipart `file` erwartet, der den Inhalt der Datei enthält. Die Antwort kann dann zum [Hochladen einer Datei in eine Zeile]({PUBLIC_BACKEND_URL}/api/redoc/#tag/Database-table-rows/operation/update_database_table_row) verwendet werden.", + "file": "Der `file` Multipart, der den Dateiinhalt enthält." + }, + "apiDocsUploadFileViaURL": { + "description": "Lädt eine Datei in Baserow hoch, indem es sie von der angegebenen URL herunterlädt. Die Antwort kann dann zum [Hochladen einer Datei in eine Zeile]({PUBLIC_BACKEND_URL}/api/redoc/#tag/Database-table-rows/operation/update_database_table_row) verwendet werden.", + "url": "Die URL, die Baserow in Ihrem Namen herunterladen und hochladen soll." + }, "apiDocsTableUpdateRow": { - "description": "Aktualisiert eine vorhandene {name} Zeile.", + "description": "Aktualisiert eine vorhandene {name}-Zeile.", "rowId": "Der eindeutige Bezeichner der Zeile, die aktualisiert werden muss.", "before": "Wenn angegeben, wird die neu erstellte Zeile vor der Zeile mit der angegebenen id positioniert." }, + "apiDocsTableUpdateRows": { + "description": "Aktualisiert bestehende {name}-Zeilen.", + "id": "Die Zeilen-ID." + }, "apiDocsTableCreateRow": { - "description": "Erstellen Sie eine neue {name} Zeile.", + "description": "Erstellen Sie eine neue {name}-Zeile.", "before": "Wenn angegeben, wird die neu erstellte Zeile vor der Zeile mit der angegebenen id positioniert." }, + "apiDocsTableCreateRows": { + "description": "Neue {name}-Zeilen erstellen.", + "before": "Falls angegeben, werden die neu erstellten Zeilen vor der Zeile mit der angegebenen id positioniert." + }, "apiDocsAuth": { "description": "Baserow verwendet eine einfache tokenbasierte Authentifizierung. Sie müssen mindestens ein Datenbank-Token in Ihrem {settingsLink} erzeugen, um die unten beschriebenen Endpunkte zu verwenden. Es ist möglich, per Token Berechtigungen zum Erstellen, Lesen, Aktualisieren und Löschen bis zur Tabellenebene zu vergeben. Sie können sich bei der API authentifizieren, indem Sie Ihren Token im HTTP-Authorization Bearer Token Header angeben. Alle API-Anfragen müssen authentifiziert sein und über HTTPS erfolgen.", "settingsLink": "Einstellungen" @@ -201,40 +222,69 @@ "apiDocsFilters": { "filter": "Filter", "exampleValue": "Beispielwert", - "example": "Volles Beispiel", - "field": "feld {name}", + "example": "Vollständiges Beispiel", + "field": "Feld {name}", "deprecated": "veraltet" }, + "apiDocsFiltersBuilderModal": { + "title": "Filter-Parameter-Builder", + "userFieldNames": "Namen der Benutzerfelder", + "json": "JSON", + "queryParameter": "Abfrageparameter" + }, + "apiDocsPasswordFieldAuthentication": { + "title": "{name} Authentifizierung", + "description": "Prüft, ob das angegebene Passwort und die Zeile mit dem in der Zelle gespeicherten Wert übereinstimmen.", + "fieldId": "Die Feld-ID, für die das Passwort geprüft werden soll.", + "rowId": "Die Zeilen-ID, für die das Passwort geprüft werden soll.", + "password": "Das Passwort, das auf Korrektheit geprüft werden soll." + }, + "apiDocsListTables": { + "listTables": "Alle Tabellen auflisten", + "listTablesDescription": "Dieser Endpunkt funktioniert nur in Kombination mit der Token-Authentifizierung. Er listet alle Tabellen auf, für die das Token Erstellungs-, Lese-, Aktualisierungs- oder Löschberechtigungen hat." + }, "fieldTextSubForm": { "placeholder": "Standardtext" }, "fieldSingleSelectSubForm": { - "optionsLabel": "Optionen" + "optionsLabel": "Optionen", + "defaultOptionLabel": "Standardoption" + }, + "fieldMultipleSelectSubForm": { + "optionsLabel": "Optionen", + "defaultOptionsLabel": "Standardoptionen" }, "fieldSingleSelectDropdown": { "notFound": "Option nicht gefunden" }, + "fieldmultipleCollaboratorsDropdown": { + "notFound": "Mitarbeiter nicht gefunden" + }, "fieldDateSubForm": { "dateFormatLabel": "Datumsformat", "dateFormatEuropean": "Europäisch", "dateFormatUS": "US", "dateFormatISO": "ISO", "includeTimeLabel": "Zeit einbeziehen", - "timeFormatLabel": "Zeitformat", - "24Hour": "24 Stunden", - "12Hour": "12 Stunden", "showTimezoneLabel": "Zeitzone anzeigen", - "forceTimezoneLabel": "Legen Sie die Zeitzone für alle Mitarbeiter fest", + "forceTimezoneLabel": "Zeitzone für alle Mitarbeiter festlegen", "forceTimezoneValue": "Zeitzone", "addTimezoneOffsetLabel": "Werte umrechnen ({utcOffsetDiff} Minuten hinzufügen)", - "subTimezoneOffsetLabel": "Werte umrechnen ({utcOffsetDiff} Minuten subtrahieren)" + "subTimezoneOffsetLabel": "Werte umrechnen ({utcOffsetDiff} Minuten subtrahieren)", + "timeFormatLabel": "Zeitformat", + "24Hour": "24 Stunden", + "12Hour": "12 Stunden" }, "fieldLinkRowSubForm": { "noTable": "Sie benötigen mindestens eine weitere Tabelle in derselben Datenbank, auf die Sie verweisen können.", "selectTableLabel": "Wählen Sie eine Tabelle für die Verknüpfung", "hasRelatedFieldLabel": "Verknüpftes Feld in verknüpfter Tabelle erstellen", "limitToView": "Auswahl auf Ansicht beschränken", - "limitToViewDescription": "Beachten Sie, dass dies nur visuell ist. Es ist immer noch möglich, Beziehungen außerhalb der Ansicht über die Bezugstabelle oder API herzustellen." + "limitToViewDescription": "Beachten Sie, dass dies nur visuell ist. Es ist immer noch möglich, Beziehungen außerhalb der Ansicht über die Bezugstabelle oder API herzustellen.", + "allowMultipleRelations": "Mehrere Beziehungen zulassen" + }, + "fieldBooleanSubForm": { + "defaultValue": "Standard" }, "fieldSelectOptions": { "add": "Eine Option hinzufügen" @@ -251,9 +301,14 @@ "prefixAndSuffixLabel": "Präfix / Suffix", "spaceComma": "Leerzeichen, Komma (1 000 000,00)", "spacePeriod": "Leerzeichen, Punkt (1 000 000.00)", - "commaPeriod": "Komma, Leerzeichen (1,000,000.00)", + "commaPeriod": "Komma, Punkt (1,000,000.00)", "periodComma": "Punkt, Komma (1.000.000,00)", - "noFormatting": "Keine Formatierung" + "noFormatting": "Keine Formatierung", + "defaultValueLabel": "Standardwert", + "defaultValuePlaceholder": "Geben Sie einen Standardwert ein" + }, + "fieldDurationSubForm": { + "durationFormatLabel": "Format der Dauer" }, "fieldContext": { "editField": "Feld bearbeiten", @@ -264,15 +319,26 @@ }, "fieldForm": { "name": "Name", + "description": "Beschreibung", "fieldAlreadyExists": "Ein Feld mit diesem Namen existiert bereits.", "nameNotAllowed": "Dieser Feldname ist nicht zulässig.", "nameTooLong": "Der Name dieses Feldes ist zu lang.", - "description": "Beschreibung", - "addDescription": "Beschreibung hinzufügen" + "addDescription": "Beschreibung hinzufügen", + "dbIndex": "Index", + "dbIndexError": "Dieser Feldtyp kann keinen Index haben. Bitte entfernen Sie ihn vor dem Speichern oder ändern Sie den Feldtyp.", + "dbIndexDescription": "Indizierung kann die Filterleistung erheblich verbessern, verlangsamt jedoch Erstellungs-, Aktualisierungs- und Löschvorgänge.", + "defaultValueDisabledByConstraint": "Es kann kein Standardwert mit einer Eindeutigkeits-Constraint festgelegt werden", + "dbIndexDisabledTooltip": "Indizierung ist für diesen Feldtyp nicht verfügbar." + }, + "fieldSelectThroughFieldSubForm": { + "noTable": "Sie benötigen mindestens ein Verknüpfungszeilenfeld, um dieses Feld zu erstellen.", + "selectThroughFieldLabel": "Wählen Sie ein Verknüpfungszeilenfeld" + }, + "fieldRollupSubForm": { + "label": "Rollup-Funktion", + "selectTargetFieldLabel": "Wählen Sie ein Feld aus, für das ein Rollup durchgeführt werden soll" }, "fieldLookupSubForm": { - "noTable": "Sie benötigen mindestens ein Verknüpfungszeilenfeld, um ein Nachschlagefeld zu erstellen.", - "selectThroughFieldLabel": "Wählen Sie ein Link-Zeilenfeld", "selectTargetFieldLabel": "Wählen Sie ein Feld zum Nachschlagen" }, "fieldFormulaNumberSubForm": { @@ -291,15 +357,19 @@ "addField": "Feld hinzufügen" }, "selectRowContent": { - "search": "Zeilen suchen" + "search": "Zeilen suchen", + "hideFields": "Felder ausblenden" }, "rowEditModal": { "addField": "Feld hinzufügen", "showHiddenFields": "Ausgeblendete Felder anzeigen", - "hideHiddenFields": "Versteckte Felder ausblenden" + "hideHiddenFields": "Ausgeblendete Felder verbergen" }, "rowEditFieldMultipleSelect": { - "addOption": "Wähle eine Option" + "addOption": "Wählen Sie eine Option" + }, + "rowEditFieldMultipleCollaborators": { + "addCollaborator": "Wählen Sie einen Mitarbeiter" }, "rowEditFieldFile": { "addFile": "Eine Datei hinzufügen", @@ -313,7 +383,8 @@ } }, "rowEditFieldLinkRow": { - "addLink": "Wählen Sie einen Link" + "addLink": "Wählen Sie einen Link", + "keepOnlyOneValue": "Nur einen Wert behalten. Dieses Feld unterstützt nur eine Beziehung. Der Wert wird gespeichert, wenn nur noch eine Beziehung übrig ist." }, "tableCSVImporter": { "chooseFileLabel": "CSV-Datei auswählen", @@ -328,6 +399,14 @@ "limitError": "Es ist nicht möglich, mehr als {limit} Zeilen zu importieren.", "emptyCSV": "Diese CSV-Datei ist leer." }, + "importer": { + "fieldDefaultName": "Feld {count}", + "loading": "Datei wird geladen", + "decoding": "Dekodierung von Daten", + "parsing": "Analysieren von Daten", + "preparing": "Aufbereitung der Daten", + "inProgress": "In Arbeit..." + }, "tableForm": { "name": "Name" }, @@ -346,55 +425,73 @@ "chooseButton": "JSON-Datei auswählen", "encodingLabel": "Kodierung", "processingError": "Beim Analysieren von JSON ist ein Fehler aufgetreten: {error}", - "arrayError": "Die JSON-Datei ist kein Arrangement.", + "arrayError": "Die JSON-Datei ist kein Array.", "emptyError": "Diese JSON-Datei ist leer.", "limitFileSize": "Die maximale Dateigröße beträgt {limit}MB.", "limitError": "Es ist nicht möglich, mehr als {limit} Zeilen zu importieren." }, "tablePasteImporter": { - "pasteLabel": "Einfügen der Tabellendaten", + "pasteLabel": "Tabellendaten einfügen", "pasteDescription": "Sie können die Zellen aus einer Kalkulationstabelle kopieren und unten einfügen.", "firstRowHeader": "Erste Zeile ist Kopfzeile", "limitError": "Es ist nicht möglich, mehr als {limit} Zeilen zu importieren." }, - "importFileModal": { - "title": "Neue Tabelle erstellen", - "importLabel": "Möchten Sie vorhandene Daten importieren?", - "newTable": "Beginnen Sie mit einer neuen Tabelle", + "createTableModal": { + "title": "Neue Tabelle anlegen", + "defaultName": "Tabelle", + "importLabel": "Möchten Sie bestehende Daten importieren?", + "newTable": "Mit einer neuen Tabelle starten" + }, + "createTable": { + "showTable": "Tabelle anzeigen", "addButton": "Tabelle hinzufügen", "uploading": "Hochladen...", "preparing": "Daten werden vorbereitet...", - "importError": "Beim Dateiimport ist etwas schief gelaufen", - "statePreValidation": "Validierung von Daten...", - "stateCreateTable": "Tabelle wird erstellt...", - "reportMessage": "Die folgenden Zeilenindizes konnten nicht importiert werden:", + "importError": "Beim Import der Datei ist etwas schiefgelaufen", + "stateRowCreation": "Importieren...", + "statePreValidation": "Daten werden validiert...", + "stateCreateTable": "Tabelle wird erstellt..." + }, + "importErrorReport": { + "reportTitleFailure": "Fehlgeschlagene Zeilen", + "reportTitleSuccess": "Import war erfolgreich, allerdings...", + "reportMessage": "Die folgenden Zeilenindizes konnten nicht importiert werden:" + }, + "importFileModal": { + "defaultName": "Tabelle", "additionalImportTitle": "In {table} importieren", + "importLabel": "Möchten Sie vorhandene Daten importieren?", + "newTable": "Mit einer neuen Tabelle starten", "showTable": "Tabelle anzeigen", "importButton": "Importieren", - "openCreatedTable": "Erstellte Tabelle öffnen", - "showReport": "Fehlerbericht anzeigen", - "stateRowCreation": "Importieren...", + "uploading": "Hochladen...", + "preparing": "Daten werden vorbereitet...", + "importError": "Beim Dateiimport ist etwas schiefgelaufen", "fieldMappingTitle": "Feldzuordnung", "fieldMappingDescription": "Wir haben die Spalten der Baserow-Felder in Ihrer Tabelle automatisch zugewiesen. Sie können sie unten ändern. Jede nicht kompatible Zelle bleibt nach dem Import leer.", "selectImportMessage": "Bitte wählen Sie die zu importierenden Daten aus.", - "reportTitleSuccess": "Import erfolgreich, aber...", - "reportTitleFailure": "Fehlerhafte Zeilen", "filePreview": "Vorschau des Dateiinhalts", "importPreview": "Importvorschau", - "changeImporterType": "Importtyp ändern", - "defaultName": "Tabelle" + "useUpsertField": "Zeilen aktualisieren, falls sie bereits existieren", + "upsertTooltip": "Vorhandene Zeilen über ein eindeutiges Feld abgleichen, um Daten mit den importierten Werten zu überschreiben.", + "stateRowCreation": "Importieren...", + "statePreValidation": "Daten werden validiert...", + "stateCreateTable": "Tabelle wird erstellt..." }, "formulaAdvancedEditContext": { "textAreaFormulaInputPlaceholder": "Klicken Sie zum Bearbeiten der Formel", "fields": "Felder", "functions": "Funktionen", "operators": "Operatoren", - "fieldType": "Ein {type} Feld" + "fieldType": "Ein {type}-Feld" }, "fieldFormulaInitialSubForm": { "formulaInputPlaceholder": "Klicken Sie zum Bearbeiten der Formel", "refreshFormulaOptions": "Formeloptionen aktualisieren" }, + "fieldLongTextSubForm": { + "enableRichTextFormatting": "Rich-Text-Formatierung aktivieren" + }, "formulaFieldItemDescription": { "syntax": "Syntax", "examples": "Beispiele" @@ -404,16 +501,24 @@ "hideNotMatching": "nicht übereinstimmende Zeilen ausblenden" }, "viewsContext": { - "searchView": "Suchen nach Ansichten", + "searchView": "Ansichten suchen", "noViews": "Keine Ansichten gefunden", "collaborative": "Kollaborativ" }, "viewFilterTypeLinkRow": { "unnamed": "unbenannte Zeile {value}", - "choose": "Reihe auswählen" + "choose": "Zeile auswählen" + }, + "viewFieldConditionsForm": { + "addCondition": "Bedingung hinzufügen", + "addConditionGroup": "Bedingungsgruppe hinzufügen" + }, + "viewFieldConditionItem": { + "filterMisconfigured": "Das Feld, mit dem dieser Filter verbunden ist, wurde gelöscht." }, "viewFilterContext": { "addFilter": "Filter hinzufügen", + "addFilterGroup": "Filtergruppe hinzufügen", "disableAllFilters": "alle deaktiviert", "noFilterTitle": "Sie haben noch keinen Filter erstellt", "noFilterText": "Mit Hilfe von Filtern können Sie Zeilen anzeigen, die auf Ihre Bedingungen zutreffen.", @@ -423,47 +528,88 @@ "relatedFieldNotFound": "Das zugehörige Feld wurde nicht gefunden.", "filterTypeNotFound": "Der Filtertyp ist nicht kompatibel.", "noCompatibleFilterTypesErrorTitle": "Keine kompatiblen Filtertypen", - "noCompatibleFilterTypesErrorMessage": "Keines Ihrer Felder hat einen kompatiblen Filtertyp", - "addFilterGroup": "Filtergruppe hinzufügen" + "noCompatibleFilterTypesErrorMessage": "Keines Ihrer Felder hat einen kompatiblen Filtertyp" }, "viewFilterTypeFileTypeDropdown": { "image": "Bild", "document": "Dokument" }, "createViewModal": { - "createNew": "Neue {Ansicht} erstellen", - "add": "Hinzufügen {view}" + "createNew": "Neue {view} erstellen", + "add": "{view} hinzufügen" + }, + "createViewLink": { + "inCompatibleWithDataSync": "Dieser Ansichtstyp ist nicht mit einer Datenabgleichs-Tabelle kompatibel." }, "shareViewLink": { + "shareViewText": "Ein privater, gemeinsam nutzbarer Link erlaubt es jedem, die Daten in dieser Ansicht zu sehen.", "shareView": "{viewTypeSharingLinkName} teilen", + "createPrivateLink": "Einen privaten Link erstellen", "shareViewTitle": "Sie haben die Ansicht noch nicht geteilt", - "sharedViewTitle": "Dieser {ViewTypeSharingLinkName} ist derzeit über einen privaten Link freigegeben", - "sharedViewDescription": "Personen, die den Link haben, können den {ViewTypeSharingLinkName} sehen.", + "sharedViewTitle": "Diese {viewTypeSharingLinkName} ist derzeit über einen privaten Link freigegeben", + "sharedViewDescription": "Personen, die den Link haben, können die {viewTypeSharingLinkName} sehen.", "disableLink": "Freigegebenen Link deaktivieren", - "generateNewUrl": "neue Url generieren", + "generateNewUrl": "neue URL generieren", "copyURL": "URL kopieren", + "EnablePassword": "Zugriff mit einem Passwort beschränken", "DisablePassword": "Zugriff ist passwortgeschützt", - "EnablePassword": "Beschränken Sie den Zugriff mit einem Passwort", "ChangePassword": "Ändern", - "createPrivateLink": "Einen privaten Link erstellen", - "shareViewText": "Ein privater, gemeinsam nutzbarer Link erlaubt es jedem, die Daten in dieser Ansicht zu sehen.", - "notSharedYetText": "Erlauben Sie jedem, die Daten in dieser Ansicht zu sehen, oder synchronisieren Sie Ereignisse mit Ihrem externen Kalender." + "notSharedYetText": "Erlauben Sie jedem, die Daten in dieser Ansicht zu sehen, oder synchronisieren Sie Ereignisse mit Ihrem externen Kalender.", + "shareViewWarningTitle": "Warnung" + }, + "viewGroupByContext": { + "noGroupByTitle": "Sie haben noch keine Gruppierungen erstellt", + "noGroupByText": "Zeilen nach einem Feld gruppieren.", + "groupBy": "Gruppieren nach", + "thenBy": "dann nach", + "addGroupBy": "Wählen Sie ein Feld, nach dem gruppiert werden soll", + "hiddenFieldWarning": "Eine oder mehrere Gruppierungen verweisen auf ausgeblendete Felder, die für Editoren und niedrigere Rollen nicht sichtbar sind." + }, + "viewGroupBy": { + "groupBy": "Gruppieren | Gruppieren nach 1 Feld | Gruppieren nach {count} Feldern" }, "viewSortContext": { - "noSortTitle": "Sie haben noch keine Sortierungen erstellt", + "noSortTitle": "Sie haben noch keine Sortierung erstellt", "noSortText": "Mit Sortierungen können Sie Zeilen nach einem Feld sortieren.", "sortBy": "Sortieren nach", - "thenBy": "Dann durch", - "addSort": "ein Feld zum Sortieren auswählen" + "thenBy": "Dann nach", + "addSort": "ein Feld zum Sortieren auswählen", + "hiddenFieldWarning": "Eine oder mehrere Sortierungen verweisen auf ausgeblendete Felder, die für Editoren und niedrigere Rollen nicht sichtbar sind." }, "viewSort": { - "sort": "Sortieren | 1 Sortieren | {count} Sortiert" + "sort": "Sortieren | 1 Sortierung | {count} Sortierungen" + }, + "viewDecorator": { + "decorator": "Farbe | 1 Farbe | {count} Farben", + "hiddenFieldWarning": "Verzierungen werden für Editoren und niedrigere Rollen entfernt, da sie auf ausgeblendete Felder verweisen können." }, "viewRotateSlugModal": { "title": "URL aktualisieren", "refreshWarning": "Sind Sie sicher, dass Sie die URL von {viewName} aktualisieren möchten? Nach der Aktualisierung wird eine neue URL generiert und es ist nicht möglich, über die alte URL auf {viewTypeSharingLinkName} zuzugreifen. Alle Personen, für die Sie die URL freigegeben haben, können nicht mehr auf {viewTypeSharingLinkName} zugreifen.", "generateNewURL": "Neue URL generieren" }, + "shareViewEnablePasswordModal": { + "newPasswordTitle": "Geben Sie ein Passwort ein", + "newPasswordDescription": "Der öffentliche Link ist erst nach Eingabe des Passworts zugänglich. Dieses Passwort wird verschlüsselt gespeichert.", + "newPasswordSave": "Passwort setzen", + "changePasswordTitle": "Passwort ändern", + "changePasswordDescription": "Durch das Ändern des Passworts funktioniert das vorherige nicht mehr. Dieses Passwort wird verschlüsselt gespeichert.", + "changePasswordSave": "Passwort ändern" + }, + "shareViewDisablePasswordModal": { + "title": "Passwortschutz deaktivieren", + "description": "Möchten Sie den Passwortschutz für diesen öffentlichen Link wirklich deaktivieren? Durch die Deaktivierung wird das Passwort gelöscht und kann nicht wiederhergestellt werden", + "disable": "Deaktivieren" + }, + "publicViewAuthLogin": { + "title": "Diese Seite ist passwortgeschützt", + "description": "Geben Sie das richtige Passwort ein, um auf die Seite zuzugreifen.", + "enter": "Eingeben", + "error": { + "incorrectPasswordTitle": "Falsches Passwort", + "incorrectPasswordText": "Das angegebene Passwort ist falsch." + } + }, "viewFieldsContext": { "coverField": "Coverfeld", "noCover": "Kein Cover", @@ -472,29 +618,36 @@ "showAll": "Alle anzeigen" }, "viewFilterTypeBoolean": { - "selected": "Ausgewählte" + "selected": "Ausgewählt" }, "viewFilter": { - "filter": "Filter | 1 Filter | {count} Filters", + "filter": "Filter | 1 Filter | {count} Filter", "hasAllValuesEqual": "hat alle Werte gleich", + "hasValueHigherThan": "hat einen Wert größer als", "hasValueHigherThanOrEqual": "hat einen Wert größer oder gleich", "hasValueLowerThan": "hat einen Wert kleiner als", "hasValueLowerThanOrEqual": "hat einen Wert kleiner oder gleich", "hasNotValueHigherThan": "hat keinen Wert größer als", - "hasValueHigherThan": "hat einen Wert größer als", "hasNotValueHigherThanOrEqual": "hat keinen Wert größer oder gleich", "hasNotValueLowerThan": "hat keinen Wert kleiner als", "hasNotValueLowerThanOrEqual": "hat keinen Wert kleiner oder gleich" }, "viewContext": { "exportView": "Ansicht exportieren", + "duplicateView": "Ansicht duplizieren", + "defaultRowValues": "Standardwerte für Zeilen", "renameView": "Ansicht umbenennen", - "deleteView": "Ansicht löschen", + "toPersonal": "Zu persönlich", + "toCollaborative": "Zu kollaborativ", "webhooks": "Webhooks", - "duplicateView": "Ansicht duplizieren", "importFile": "Datei importieren", - "toCollaborative": "Zu Kollaborativ", - "toPersonal": "Zu Persönlich" + "deleteView": "Ansicht löschen" + }, + "defaultValuesModal": { + "title": "Standardwerte für {name}", + "setDefaultValue": "Standardwert festlegen", + "removeDefaultValue": "Standardwert entfernen", + "staticValue": "Statischer Wert" }, "deleteViewModal": { "title": "Löschen {name}", @@ -503,22 +656,28 @@ }, "viewForm": { "name": "Name", - "whoCanEdit": "Wer kann bearbeiten" + "whoCanEdit": "Wer kann diese Ansicht bearbeiten?" + }, + "viewOwnershipType": { + "collaborative": "Kollaborativ", + "collaborativeDescription": "Jeder kann alle Daten sehen und die Eigenschaften ändern, sofern er die entsprechenden Berechtigungen hat." }, "galleryViewHeader": { "customizeCards": "Karten individuell gestalten" }, "gridViewHide": { - "hideField": "Felder ausblenden | 1 verstecktes Feld | {count} versteckte Felder" + "hideField": "Felder ausblenden | 1 ausgeblendetes Feld | {count} ausgeblendete Felder" }, "gridViewFieldType": { - "createFilter": "Filter erstellen", - "sortField": "Sortieren", - "hideField": "Feld ausblenden", "insertLeft": "Links einfügen", "insertRight": "Rechts einfügen", + "createFilter": "Filter erstellen", "duplicate": "Feld duplizieren", - "dataSyncField": "Das Feld ist schreibgeschützt und Teil des Datenabgleichs der Tabelle." + "sortField": "Sortieren", + "hideField": "Feld ausblenden", + "dataSyncField": "Das Feld ist schreibgeschützt und Teil des Datenabgleichs der Tabelle.", + "dataSyncFieldTwoWaySync": "Das Feld wird mit dem Datenabgleich der Tabelle synchronisiert.", + "noWriteValues": "Änderungen an diesem Feld sind eingeschränkt." }, "gridViewRow": { "rowNotMatchingFilters": "Zeile entspricht nicht den Filtern", @@ -526,43 +685,63 @@ "rowHasMoved": "Zeile hat sich verschoben" }, "gridView": { + "selectRow": "Zeile auswählen", "insertRowAbove": "Zeile oben einfügen", "insertRowBelow": "Zeile unten einfügen", + "duplicateRow": "Zeile duplizieren", + "copyRowURL": "Zeilen-URL kopieren", + "copiedRowURL": "Zeilen-URL kopiert", + "copiedRowURLMessage": "Die URL aus Zeile {id} wurde in die Zwischenablage kopiert.", "enlargeRow": "Zeile vergrößern", "deleteRow": "Zeile löschen", - "rowCount": "Keine Zeilen | 1 Zeile | {count} Zeilen", - "selectRow": "Zeile auswählen", - "duplicateRow": "Zeile duplizieren", "deleteRows": "Zeilen löschen", "copyCells": "Zellen kopieren", + "copyCellsWithHeader": "Zellen mit Kopfbereich kopieren", + "generateCellsValues": "Werte mit KI generieren", + "generateAllAiValues": "Alle KI-Werte generieren", + "rowCount": "Keine Zeilen | 1 Zeile | {count} Zeilen", "hiddenRowsInsertedTitle": "Zeilen hinzugefügt", "hiddenRowsInsertedMessage": "{number} neu hinzugefügte Zeilen wurden hinzugefügt, sind aber wegen der aktiven Filter nicht sichtbar.", - "tooManyItemsDescription": "Es ist nicht möglich, mehr als {limit} Zeilen auf einmal zu aktualisieren, also wurde nur die erste Zeile aktualisiert.", - "copyRowURL": "Zeilen-URL kopieren", - "copiedRowURL": "Zeilen-URL kopiert", - "copiedRowURLMessage": "Die URL aus Zeile {id} wurde in die Zwischenablage kopiert.", "tooManyItemsTitle": "Zu viele Elemente", + "tooManyItemsDescription": "Es ist nicht möglich, mehr als {limit} Zeilen auf einmal zu aktualisieren, also wurde nur die erste Zeile aktualisiert.", "AIValuesGenerationErrorTitle": "Werterstellung mittels KI fehlgeschlagen", - "AIValuesGenerationErrorMessage": "Bitte überprüfen Sie Ihren API_KEY und das ausgewählte Modell.", - "generateCellsValues": "Mit KI Werte generieren", - "copyCellsWithHeader": "Zellen mit Kopfbereich kopieren" + "AIValuesGenerationErrorMessage": "Bitte überprüfen Sie Ihren API_KEY und das ausgewählte Modell." + }, + "gridViewFieldFile": { + "dropHere": "Hier ablegen", + "dropFileHere": "Dateien hier ablegen" }, "gridViewFieldLinkRow": { - "unnamed": "unbenannte Zeile {value}" + "unnamed": "unbenannte Zeile {value}", + "keepOnlyOneValue": "Nur einen Wert behalten" }, "gridViewIdentifierOptions": { - "id": "Spalten Identifikator", - "count": "Spalten Position" + "id": "Zeilenkennung", + "count": "Anzahl" + }, + "gridViewRowsAddContext": { + "title": "Mehrere Zeilen erstellen", + "choice": "{rowAmountChoice} Zeilen hinzufügen" + }, + "formViewMeta": { + "includeRowId": "Verwenden Sie {row_id}, um die neu erstellte Zeilen-ID in die URL aufzunehmen." + }, + "formViewMetaControls": { + "whenSubmittedLabel": "Wenn das Formular abgeschickt wurde", + "showMessage": "Eine Nachricht anzeigen", + "urlRedirect": "Weiterleiten zu einer URL", + "theMessage": "Die Nachricht", + "theURL": "Die URL" }, "previewAny": { "externalWarning": "Wenn Sie Ihre Datei über einen externen Dienst öffnen, wird Ihre Datei auf dessen Servern veröffentlicht." }, "exportTableModal": { + "title": "{name} exportieren", "failedTitle": "Export fehlgeschlagen", "failedDescription": "Der Export ist aufgrund eines Serverfehlers fehlgeschlagen.", "cancelledTitle": "Export abgebrochen", - "cancelledDescription": "Die Exportaktion wurde abgebrochen.", - "title": "{name} exportieren" + "cancelledDescription": "Die Exportaktion wurde abgebrochen." }, "exporterTypeChoices": { "formatLabel": "In welches Format möchten Sie exportieren?" @@ -583,7 +762,6 @@ "recordSeparator": "Datensatz-Trennzeichen", "unitSeparator": "Teilgruppentrennzeichen", "encodingLabel": "Kodierung", - "firstRowIsHeaderLabel": "Erste Zeile ist Kopfzeile", "includeHeader": "Feldnamen als Überschrift einfügen" }, "apiDocsDatabase": { @@ -600,195 +778,154 @@ "back": "Zurück zum Dashboard" }, "viewAggregationType": { - "min": "Min", - "max": "Max", - "earliestDate": "Frühestes Datum", + "count": "Anzahl", + "notEmptyCount": "Gefüllt", + "emptyPercentage": "Prozent leer", + "notEmptyPercentage": "Prozent gefüllt", "checkedCount": "Geprüft", "notCheckedCount": "Ungeprüft", "checkedPercentage": "Prozent markiert", "notCheckedPercentage": "Prozentsatz nicht geprüft", + "min": "Min", + "max": "Max", + "earliestDate": "Frühestes Datum", "earliestDateShort": "Früheste", "latestDate": "Letztes Datum", "latestDateShort": "Letztes", "uniqueCount": "Eindeutig", "sum": "Summe", + "average": "Durchschnitt", "median": "Median", "stdDev": "Standardabweichung", - "variance": "Varianz", - "average": "Durchschnitt", "stdDevShort": "Std Abw", - "emptyCount": "(Leer)", - "notEmptyCount": "Gefüllt", - "emptyPercentage": "Prozent leer", - "notEmptyPercentage": "Prozent gefüllt", - "count": "Anzahl" + "variance": "Varianz", + "distribution": "Verteilung", + "othersCount": "Andere", + "emptyCount": "(Leer)" }, "databaseForm": { "importLabel": "Möchten Sie vorhandene Daten importieren?", "emptyLabel": "Neu anfangen", - "airtableLabel": "Importieren von Airtable (beta)" + "airtableLabel": "Importieren von Airtable" }, "importFromAirtable": { - "airtableShareLinkTitle": "Teilen Sie einen Link zu Ihrer Basis", - "airtableShareLinkBeta": "Beachten Sie, dass sich diese Funktion noch in Beta befindet. Ihre Tabellen, Felder (außer formula, lookup, und count) und Daten werden importiert. Ihre Views werden nicht importiert.", + "airtableShareLinkTitle": "Teilen Sie einen Link zu Ihrer Base", + "airtableShareLinkDescription": "Um Ihre Airtable-Base zu importieren, müssen Sie einen geteilten Link zu Ihrer gesamten Base haben. Klicken Sie in Airtable auf die Schaltfläche „Share“ in der oberen rechten Ecke, nachdem Sie Ihre Base geöffnet haben. Danach müssen Sie die Option „Share via link“ wählen. Im Share-Modal können Sie auf den Tab „Share publicly“ klicken und dann auf „Enable shared base link“. Kopieren Sie den öffentlichen Link und fügen Sie ihn unten in das Eingabefeld ein.", + "airtableShareLinkBeta": "Diese Funktion importiert die meisten Daten, es gibt jedoch Inkompatibilitäten. Daher wird eine Tabelle namens „Airtable import report“ hinzugefügt, die eine Liste der Dinge enthält, die nicht oder nur teilweise importiert wurden.", "airtableShareLinkPaste": "Den Link hier einfügen", "importButtonLabel": "Importieren von Airtable", "openButtonLabel": "Importierte Datenbank öffnen", "importError": "Etwas ist schief gelaufen", - "statePending": "Warten", + "statePending": "Warten auf Start", "stateFailed": "Fehlgeschlagen", "stateFinished": "Abgeschlossen", - "stateDownloadingBase": "Herunterladen das Baseschemas", + "stateDownloadingBase": "Herunterladen des Base-Schemas", "stateConverting": "Konvertierung zu Baserow", "stateDownloadingFiles": "Herunterladen von Dateien", "stateImporting": "Importieren", - "stateImportingTable": "Tabelle importieren {table}", - "airtableShareLinkDescription": "Um Ihre Airtable Base zu importieren, müssen Sie einen Link zu Ihrer gesamten Base haben. Klicken Sie in Airtable auf die \"Share\" taste in der oberen rechten Ecke, nachdem Sie Ihre Base geöffnet haben. Danach müssen Sie die Option \"Access to base\" wählen. Im modal drücken Sie auf \"Create a shared link to the whole base\" und dann auf \"Private read-only link\". Kopieren Sie den Link und fügen Sie ihn in das unten stehende Feld ein.", - "errorJobAlreadyRunningTitle": "Schon läuft", + "stateImportingTable": "Tabelle {table} wird importiert", + "errorJobAlreadyRunningTitle": "Bereits in Arbeit", "errorJobAlreadyRunningDescription": "Ein weiterer Importauftrag ist bereits in Arbeit. Sie müssen abwarten, bis dieser Vorgang abgeschlossen ist, bevor Sie einen weiteren beginnen.", - "linkError": "Der Link sollte wie folgt aussehen: https://airtable.com/shrxxxxxxxxxxxxxxx" + "linkError": "Der Link sollte wie folgt aussehen: https://airtable.com/shrxxxxxxxxxxxxxx", + "skipFiles": "Import von Dateien überspringen", + "skipFilesHelper": "Eine Airtable-Base mit vielen Dateien kann den Import verlangsamen. Wenn Sie dies aktivieren, wird der Import der Dateien übersprungen.", + "useSession": "Sitzungs-Authentifizierung", + "useSessionHelper": "Verwenden Sie dies, wenn die öffentlich geteilte Base eine Authentifizierung erfordert.", + "sessionDescription": "Wenn der Import mit „The Airtable base requires authentication.“ antwortet, dann verhindern möglicherweise die Organisationseinstellungen in Airtable den Zugriff auf die Airtable-Base ohne vorherige Authentifizierung. Dazu müssen Sitzung und Signatur manuell extrahiert werden. Rufen Sie die URL der öffentlich geteilten Base in Ihrem Browser auf und melden Sie sich gegebenenfalls an. Klicken Sie auf das Anwendungsmenü, indem Sie in der oberen rechten Ecke klicken -> „More tools“ -> „Developer tools“. Öffnen Sie den Tab „Application“ (in Firefox „Storage“) und klicken Sie auf „https://airtable.com“. Suchen Sie nun die Cookie-Werte „__Host-airtable-session“ und „__Host-airtable-session.sig“ und fügen Sie diese in die unten stehenden Eingabefelder ein.", + "sessionLabel": "Sitzungs-Cookie (__Host-airtable-session)", + "sessionSignatureLabel": "Sitzungs-Signatur-Cookie (__Host-airtable-session.sig)" }, "chooseSingleSelectField": { "addSelectField": "Einzelnes Auswahlfeld hinzufügen", "warningWhenNothingToChooseOrCreate": "Es gibt keine einzelnen Auswahlfelder, aus denen Sie auswählen können, und Sie haben keine Berechtigung, eines zu erstellen." }, - "shareViewEnablePasswordModal": { - "newPasswordTitle": "Geben Sie ein Passwort ein", - "changePasswordSave": "Passwort ändern", - "newPasswordSave": "Passwort setzen", - "changePasswordTitle": "Passwort ändern", - "changePasswordDescription": "Durch das Ändern des Passworts funktioniert das vorherige nicht mehr. Dieses Passwort wird verschlüsselt gespeichert.", - "newPasswordDescription": "Der öffentliche Link ist erst nach Eingabe des Passworts zugänglich. Dieses Passwort wird verschlüsselt gespeichert." - }, - "shareViewDisablePasswordModal": { - "title": "Passwortschutz deaktivieren", - "description": "Möchten Sie den Passwortschutz für diesen öffentlichen Link wirklich deaktivieren? Durch die Deaktivierung wird das Passwort gelöscht und kann nicht wiederhergestellt werden", - "disable": "Deaktivieren" - }, - "publicViewAuthLogin": { - "title": "Diese Seite ist passwortgeschützt", - "enter": "Eingeben", - "error": { - "incorrectPasswordTitle": "Falsches Passwort", - "incorrectPasswordText": "Das angegebene Passwort ist falsch." - }, - "description": "Geben Sie das richtige Passwort ein, um auf die Seite zuzugreifen." - }, "viewDecoratorContext": { "addDecorator": "Verzierung hinzufügen" }, - "viewDecorator": { - "decorator": "Farbe | 1 Farbe | {count} Farben" - }, - "apiDocsTableUpdateRows": { - "description": "Aktualisiert bestehende {name} Zeilen.", - "id": "Die Zeilen-ID." - }, - "apiDocsTableCreateRows": { - "before": "Falls angegeben, werden die neu erstellten Zeilen vor der Zeile mit der angegebenen id positioniert.", - "description": "Neue Zeilen {name} erstellen." - }, - "importer": { - "loading": "Datei wird geladen", - "decoding": "Dekodierung von Daten", - "inProgress": "In Arbeit...", - "parsing": "Analysieren von Daten", - "preparing": "Aufbereitung der Daten", - "fieldDefaultName": "Feld {count}" - }, - "apiDocsTableDeleteRows": { - "description": "Löscht die vorhandenen Zeilen {name}.", - "items": "Ein Array von Zeilennummern, die gelöscht werden sollen." - }, - "formViewMeta": { - "includeRowId": "Verwenden Sie {row_id}, um die neu erstellte Zeilen-ID in die URL aufzunehmen." - }, - "databaseDashboardSidebarLinks": { - "apiDocumentation": "API-Dokumentation" + "databaseDashboardResourceLinks": { + "title": "API-Dokumentation", + "description": "Erfahren Sie mehr über unseren Code" }, "formViewField": { "required": "erforderlich", + "descriptionPlaceholder": "Beschreibung", + "includeAllSelectOptions": "alle Auswahloptionen einschließen", + "includeAllSelectOptionsHelper": "Wählen Sie über dieses Dropdown die Auswahloptionen, die im Formular enthalten sein sollen", "showWhenMatchingConditions": "anzeigen, wenn die Bedingungen erfüllt sind", "addCondition": "Bedingung hinzufügen", - "descriptionPlaceholder": "Beschreibung", "addConditionGroup": "Bedingungsgruppe hinzufügen", - "showFieldAs": "Feld anzeigen als" + "showFieldAs": "Feld anzeigen als", + "noSelectOptions": "Es sind keine Auswahloptionen verfügbar.", + "noCollaboratorsAvailable": "Es sind keine Mitarbeiter verfügbar.", + "cannotSumitValues": "Dieses Feld ist schreibgeschützt und wird nicht im Formular angezeigt." }, "duplicateFieldContext": { "duplicate": "Feld duplizieren", "cloneData": "Daten kopieren", - "soon": "In Kürze verfügbar", "readOnlyField": "Die Zellenwerte werden automatisch ausgefüllt." }, + "changePrimaryFieldModal": { + "title": "Primäres Feld ändern", + "change": "Ändern", + "primaryFieldLabel": "Primäres Feld", + "existingPrimary": "„{name}“ ist derzeit das primäre Feld." + }, "snapshotsModal": { - "descriptionLimits": "Sie können maximal {n} Snapshots pro Arbeitsbereich haben. | Sie können maximal {n} Snapshots pro Arbeitsbereich haben. | Sie können maximal {n} Snapshots pro Arbeitsbereich haben.", - "createLabel": "Erstelle einen neuen Snapshot", - "description": "Snapshots sind eine vollständige Kopie von {applicationTypeName} zu dem Zeitpunkt, an dem sie erstellt wurde. Bei der Wiederherstellung wird ein Duplikat dieser Daten erstellt. Snapshots werden nach einem Jahr automatisch gelöscht.", + "title": "Snapshots", + "description": "Snapshots sind eine vollständige Kopie Ihres {applicationTypeName} zum Zeitpunkt der Erstellung. Bei der Wiederherstellung wird ein Duplikat dieser Daten erstellt. Snapshots werden nach einem Jahr automatisch gelöscht.", + "descriptionLimits": "Sie können maximal {n} Snapshots pro Arbeitsbereich haben. | Sie können maximal {n} Snapshot pro Arbeitsbereich haben. | Sie können maximal {n} Snapshots pro Arbeitsbereich haben.", + "createLabel": "Einen neuen Snapshot erstellen", "create": "Snapshot erstellen", + "cancel": "Abbrechen", "snapshotRestoredErrorTitle": "Ein Fehler ist aufgetreten", - "title": "snapshots", "snapshotRestoredErrorMessage": "Der Snapshot konnte nicht wiederhergestellt werden. Bitte versuchen Sie es später noch einmal.", "snapshotDeletedErrorTitle": "Fehler aufgetreten", "snapshotDeletedErrorMessage": "Der Snapshot konnte nicht gelöscht werden. Bitte versuchen Sie es später noch einmal.", "limitReached": "Das Limit der maximalen Snapshots wurde erreicht.", "snapshot": "Snapshot", "importingState": "Erstellen", - "reset": "Erstellen eines weiteren" - }, - "snapshotListItem": { - "created": "erstellt", - "restore": "wiederherstellen", - "delete": "Löschen" + "reset": "Einen weiteren erstellen", + "noSnapshots": "Noch keine Snapshots für diese Anwendung.", + "nameAlreadyExists": "Ein Snapshot mit diesem Namen existiert bereits." }, "deleteSnapshotModal": { "title": "Snapshot löschen", "content": "Sind Sie sicher, dass Sie den Snapshot {name} dauerhaft löschen möchten?", "confirm": "Löschen" }, - "duplicateTableJobType": { - "duplicating": "Duplizieren", - "duplicatedTitle": "Tabelle dupliziert", - "name": "Tabelle duplizieren" + "snapshotListItem": { + "restore": "wiederherstellen", + "delete": "löschen", + "created": "erstellt" + }, + "formViewModeType": { + "form": "Formular", + "formDescription": "Alle Felder sind sichtbar und vertikal gestapelt." + }, + "formViewHeader": { + "mode": "Modus", + "preview": "Vorschau", + "fields": "Felder" }, "formViewModePreviewForm": { - "titlePlaceholder": "Titel", - "descriptionPlaceholder": "Beschreibung", "addCoverImage": "Ein Titelbild hinzufügen", "addLogo": "Ein Logo hinzufügen", - "noFields": "Dieses Formular hat noch keine Felder. Klicken Sie auf ein Feld in der linken Seitenleiste, um eines hinzuzufügen." - }, - "apiDocsUploadFile": { - "description": "Lädt eine Datei auf Baserow hoch, indem der Dateiinhalt direkt hochgeladen wird. Es wird ein Multipart `file` erwartet, der den Inhalt der Datei enthält. Die Antwort kann dann zum [Hochladen einer Datei in eine Zeile]({PUBLIC_BACKEND_URL}/api/redoc/#tag/Database-table-rows/operation/update_database_table_row) verwendet werden.", - "file": "Der `file` Multipart, der den Dateiinhalt enthält." + "titlePlaceholder": "Titel", + "descriptionPlaceholder": "Beschreibung", + "noFieldsTitle": "Dieses Formular hat noch keine Felder", + "noFieldsContent": "Klicken Sie auf ein Feld in der linken Seitenleiste, um eines hinzuzufügen." }, "table": { - "chooseView": "Ansicht wählen", "adjacentRow": { - "notification": { - "notFound": { - "previous": { - "title": "Keine Zeilen mehr", - "message": "Es gibt keine vorherige Zeile" - }, - "next": { - "message": "Es gibt keine nächste Zeile", - "title": "Keine Zeilen mehr" - } - }, - "error": { - "title": "Fehler aufgetreten", - "message": "Beim Abrufen der angrenzenden Zeile ist ein Fehler aufgetreten" - } - }, "toast": { "notFound": { - "previous": { - "message": "Es gibt keine vorherige Zeile", - "title": "Keine Zeilen mehr" - }, "next": { "title": "Keine Zeilen mehr", "message": "Es gibt keine nächste Zeile" + }, + "previous": { + "title": "Keine Zeilen mehr", + "message": "Es gibt keine vorherige Zeile" } }, "error": { @@ -796,92 +933,44 @@ "message": "Beim Abrufen der angrenzenden Zeile ist ein Fehler aufgetreten" } } - } - }, - "fieldmultipleCollaboratorsDropdown": { - "notFound": "Mitarbeiter nicht gefunden" - }, - "formViewHeader": { - "preview": "Vorschau", - "mode": "Modus", - "fields": "Felder" - }, - "apiDocsUploadFileViaURL": { - "description": "Lädt eine Datei in Baserow hoch, indem es sie von der angegebenen URL herunterlädt. Die Antwort kann dann zum [Hochladen einer Datei in eine Zeile]({PUBLIC_BACKEND_URL}/api/redoc/#tag/Database-table-rows/operation/update_database_table_row) verwendet werden.", - "url": "Die URL, die Baserow in Ihrem Namen herunterladen und hochladen soll." - }, - "rowEditFieldMultipleCollaborators": { - "addCollaborator": "Wählen Sie einen Mitarbeiter" - }, - "gridViewFieldFile": { - "dropFileHere": "Dateien hier ablegen", - "dropHere": "Hier ablegen" - }, - "formViewModeType": { - "form": "Formular", - "formDescription": "Alle Felder sind sichtbar und vertikal gestapelt." + }, + "chooseView": "Ansicht wählen" }, "fileField": { - "errorEmptyFileNameMessage": "Sie können keinen leeren Namen für eine Datei angeben.", - "errorEmptyFileNameTitle": "Ungültiger Dateiname" - }, - "gridViewRowsAddContext": { - "title": "Mehrere Zeilen erstellen", - "choice": "Fügen Sie {rowAmountChoice} Zeilen hinzu" - }, - "viewOwnershipType": { - "personal": "Persönlich", - "collaborative": "Kollaborativ" - }, - "fieldSelectThroughFieldSubForm": { - "noTable": "Sie benötigen mindestens einen Link zum Tabellenfeld, um dieses Feld zu erstellen.", - "selectThroughFieldLabel": "Wählen Sie eine Verknüpfung zum Tabellenfeld aus" - }, - "fieldRollupSubForm": { - "selectTargetFieldLabel": "Wählen Sie ein Feld aus, für das ein Rollup durchgeführt werden soll", - "label": "Rollup-Funktion" - }, - "viewGroupByContext": { - "noGroupByText": "Zeilen nach einem Feld gruppieren.", - "groupBy": "Gruppieren nach", - "thenBy": "dann nach", - "addGroupBy": "Wählen Sie ein Feld, nach dem gruppiert werden soll", - "noGroupByTitle": "Sie haben noch keine Gruppierungen erstellt" - }, - "viewGroupBy": { - "groupBy": "Gruppieren | Gruppieren nach 1 Feld | Gruppieren nach {count} Feldern" - }, - "apiDocsFiltersBuilderModal": { - "userFieldNames": "Benutzerfeld-Namen", - "queryParameter": "Abfrageparameter", - "json": "JSON", - "title": "Filter-Parameter-Builder" - }, - "rowHistorySidebar": { - "name": "Historie", - "empty": "Noch keine Änderungen. Sie können alle Änderungen an dieser Zeile hier verfolgen.", - "you": "Sie" - }, - "fieldDurationSubForm": { - "durationFormatLabel": "Format der Dauer" - }, - "viewFieldConditionsForm": { - "addCondition": "Bedingung hinzufügen", - "addConditionGroup": "Bedingungsgruppe hinzufügen" + "errorEmptyFileNameTitle": "Ungültiger Dateiname", + "errorEmptyFileNameMessage": "Sie können keinen leeren Namen für eine Datei angeben." }, "fieldCollaboratorSubForm": { "notifyUserWhenAdded": "Benutzer beim Hinzufügen benachrichtigen" }, "collaboratorAddedToRowNotification": { - "title": "{sender} hat Sie dem {fieldName} in Zeile {rowId} in {tableName} zugewiesen", - "deletedUser": "Gelöschter Benutzer" + "title": "{sender} hat Sie {fieldName} in Zeile {rowId} in {tableName} zugewiesen", + "unknownUser": "Ein unbekannter Benutzer" }, "formSubmittedNotification": { "title": "{formName} wurde in Tabelle {tableName} abgesendet:", "moreValues": "0 | und 1 weiteres Feld. | und {count} weitere Felder." }, - "fieldLongTextSubForm": { - "enableRichTextFormatting": "Rich-Text-Formatierung aktivieren" + "rowHistorySidebar": { + "name": "Historie", + "empty": "Noch keine Änderungen. Sie können alle Änderungen an dieser Zeile hier verfolgen.", + "you": "Sie", + "created": "hat diese Zeile erstellt", + "updated": "hat diese Zeile aktualisiert", + "submitted": "hat diese Zeile abgesendet", + "deleted": "hat diese Zeile gelöscht", + "restored": "hat diese Zeile wiederhergestellt", + "createdUndo": "Zeilenerstellung rückgängig machen", + "updatedUndo": "Zeilenaktualisierung rückgängig machen", + "deletedUndo": "Zeilenlöschung rückgängig machen" + }, + "fieldPasswordSubForm": { + "allowEndpointAuthentication": "API-Endpunkt-Authentifizierung erlauben", + "allowEndpointAuthenticationHelp": "Dies stellt einen Endpunkt zur Verfügung, an dem geprüft werden kann, ob die Zeilen-ID und das Passwort korrekt sind. Damit kann Baserow als Authentifizierungs-Backend genutzt werden.", + "description": "Das Passwortfeld kann auch von der Benutzerauthentifizierung im Application Builder verwendet werden." + }, + "rowEditFieldPassword": { + "setPassword": "Passwort festlegen" }, "rowHistoryFieldPassword": { "passwordSet": "Das Passwort wurde festgelegt", @@ -891,86 +980,207 @@ "dataProviderTypes": { "fieldsName": "Felder" }, + "userMentionInRichTextFieldNotification": { + "title": "{sender} hat Sie in Feld {fieldName} aus Zeile {rowId} in {tableName} erwähnt", + "deletedUser": "Ein gelöschter Benutzer" + }, + "databaseImportStep": { + "title": "Importieren Sie Ihre Daten", + "description": "Verschieben Sie Ihre Daten mit nur wenigen Klicks in Baserow.", + "tableNameLabel": "Tabellenname", + "tableNamePrefill": "Tabelle von {name}" + }, + "databaseScratchTrackFieldsStep": { + "title": "Felder für jede Zeile auswählen", + "description": "Wählen Sie bis zu {selectedFieldsLimitCount} Felder. Sie können später weitere hinzufügen.", + "fieldName": "Name", + "fieldType": "Feldtyp", + "fieldDescription": "Beschreibung", + "fieldDetails": "Details", + "fieldNumber": "Nummer", + "fieldDate": "Datum", + "fieldBoolean": "Abgeschlossen", + "fieldDuration": "Dauer", + "fieldUrl": "URL", + "fieldEmail": "E-Mail", + "fieldRating": "Bewertung", + "fieldCategory": "Kategorie", + "fieldKickoffDate": "Startdatum", + "fieldDueDate": "Fälligkeitsdatum", + "fieldBudget": "Budget", + "fieldCompleted": "Abgeschlossen", + "fieldNotes": "Notizen", + "fieldRole": "Rolle", + "fieldPhone": "Telefon", + "fieldActive": "Aktiv", + "fieldEstimatedDays": "Geschätzte Tage", + "fieldStartDate": "Anfangsdatum", + "fieldEndDate": "Enddatum", + "projectsCategoryDesign": "Design", + "projectsCategoryDevelopment": "Entwicklung", + "projectsCategoryMarketing": "Marketing", + "projectsNotesRow1": "Acme sucht ein vollständiges Rebranding seiner Website mit den folgenden Vorgaben.", + "projectsNotesRow2": "Recherchieren, ob die aktuellen Nutzer von Soylent an einem neuen Benutzerportal interessiert sind.", + "projectsNotesRow3": "Es ist fraglich, ob sich dies nach dem Facebook-Werbeboykott noch lohnt. Studien zeigen, dass bezahlte Anzeigenkampagnen zunehmend weniger effektiv geworden sind.", + "teamsRoleDesigner": "Designer", + "teamsRoleDeveloper": "Entwickler", + "teamsRoleMarketer": "Marketer", + "tasksDetailsRow1": "Das Logo muss verbessert werden, um den CTA klarer zu machen.", + "tasksDetailsRow2": "Die Struktur ist etwas durcheinander, daher müssen wir hier möglicherweise auch die Sitemap anpassen.", + "tasksDetailsRow3": "Die neue Fußzeile sollte unsere Kontaktinformationen sowie einen kleinen (aber klaren) CTA enthalten.", + "campaignsDetailsRow1": "Heizen Sie Ihre Ersparnisse mit unserem heißen Sommerschlussverkauf an, mit unschlagbaren Rabatten auf alle Ihre Lieblingsprodukte!", + "campaignsDetailsRow2": "Steigern Sie die Kundenbindung und das Engagement mit unserem attraktiven Treueprogramm, das darauf ausgelegt ist, Ihre treuesten Kunden zu belohnen.", + "campaignsDetailsRow3": "Beleben Sie Ihr Unternehmen neu und begeistern Sie Ihr Publikum mit einem dynamischen Markenrelaunch, der perfekt zu den heutigen Markttrends und Kundenwünschen passt.", + "customFieldsDescriptionRow1": "Turpis massa tincidunt dui ut ornare lectus sit amet est.", + "customFieldsDescriptionRow2": "Vitae justo eget magna fermentum iaculis eu non diam.", + "customFieldsDescriptionRow3": "Convallis tellus id interdum velit laoreet id donec ultrices tincidunt." + }, "databaseScratchTrackStep": { - "teamsRow3": "Marketing", - "tasks": "Aufgaben", - "tasksRow1": "Logo-Redesign", - "tasksRow2": "E-Mail versenden", - "tasksRow3": "Blogpost schreiben", - "campaigns": "Kampagnen", + "title": "Was möchten Sie verfolgen?", + "description": "Wählen Sie aus gängigen Anwendungsfällen oder erstellen Sie Ihre eigenen.", + "addYourOwn": "Erstellen Sie Ihren eigenen", "tableName": "Tabellenname", + "rowName": "Zeilenname", + "thisIncludes": "Das beinhaltet:", + "projects": "Projekte", + "productsRow1": "Rebranding-Website", "productsRow2": "Kundenbefragung", "productsRow3": "Bezahlte Anzeigenkampagne", "teams": "Teams", "teamsRow1": "Verkauf", "teamsRow2": "Personalwesen", + "teamsRow3": "Marketing", + "tasks": "Aufgaben", + "tasksRow1": "Logo-Redesign", + "tasksRow2": "E-Mail versenden", + "tasksRow3": "Blogpost schreiben", + "campaigns": "Kampagnen", "campaignsRow1": "Sommerschlussverkauf", "campaignsRow2": "Treueprämien", - "title": "Was möchten Sie verfolgen?", - "campaignsRow3": "Marken-Relaunch", - "productsRow1": "Rebranding-Website", - "description": "Wählen Sie aus gängigen Anwendungsfällen oder erstellen Sie Ihre eigenen.", - "addYourOwn": "Erstellen Sie Ihren eigenen", - "rowName": "Zeilenname", - "thisIncludes": "Das beinhaltet:", - "projects": "Projekte" - }, - "fieldPasswordSubForm": { - "description": "Es ist noch nicht möglich, direkt etwas mit dem Passwortfeld zu tun. Dieses wird nur von der Benutzerauthentifizierung im Application Builder verwendet." - }, - "rowEditFieldPassword": { - "setPassword": "Passwort festlegen" - }, - "databaseImportStep": { - "title": "Importieren Sie Ihre Daten", - "description": "Verschieben Sie Ihre Daten mit nur wenigen Klicks in Baserow.", - "tableNameLabel": "Tabellenname" + "campaignsRow3": "Marken-Relaunch" }, "databaseStep": { - "scratch": "Von Grund auf", - "import": "Aus einer Datei", "title": "Erstellen Sie Ihre erste Datenbank", - "airtable": "Von Airtable", + "description": "Wählen Sie aus, womit Sie beginnen möchten:", "databaseNameLabel": "Datenbankname", - "description": "Lassen Sie uns wissen, woran Sie gerade arbeiten." - }, - "userMentionInRichTextFieldNotification": { - "deletedUser": "Ein gelöschter Benutzer", - "title": "{sender} hat Sie in Feld {fieldName} aus Zeile {rowId} in {tableName} erwähnt" + "databaseNamePrefill": "Datenbank von {name}", + "scratch": "Von Grund auf", + "import": "Datei", + "airtable": "Airtable", + "template": "Vorlage", + "workspaceName": "Arbeitsbereich von {name}" }, "ViewFilterTypeDateUpgradeToMultiStep": { "migrateButtonText": "Umstellung auf mehrstufigen Datumsfilter", "migrateButtonTooltip": "Neuer Filter verfügbar. Zum Aktualisieren anklicken. Er funktioniert genauso." }, - "createTableModal": { - "title": "Neue Tabelle anlegen", - "defaultName": "Tabelle", - "importLabel": "Möchten Sie bestehende Daten importieren?", - "newTable": "Starten Sie mit einer neuen Tabelle" - }, - "createTable": { - "showTable": "Tabelle anzeigen", - "addButton": "Tabelle hinzufügen", - "uploading": "Lade hoch...", - "preparing": "Bereite Daten vor...", - "importError": "Beim Import der Datei ist etwas schiefgelaufen", - "stateRowCreation": "Importiere...", - "statePreValidation": "Prüfe Daten...", - "stateCreateTable": "Erstelle Tabelle..." - }, - "importErrorReport": { - "reportTitleSuccess": "Import war erfolgreich, allerdings...", - "reportMessage": "Die folgenden Zeilenindizes konnten nicht importiert werden:", - "reportTitleFailure": "Fehlgeschlagene Zeilen" - }, - "formViewMetaControls": { - "showMessage": "Eine Nachricht anzeigen", - "theMessage": "Die Nachricht", - "theURL": "Die URL", - "whenSubmittedLabel": "Wenn das Formular abgeschickt wurde", - "urlRedirect": "Weiterleiten zu einer URL" - }, - "createViewLink": { - "inCompatibleWithDataSync": "Dieser Ansichtstyp ist nicht mit einer Datenabgleichs-Tabelle kompatibel." + "dataSyncType": { + "syncError": "Sync-Fehler", + "icalCalendar": "iCal-Feed synchronisieren", + "postgresql": "PostgreSQL-Tabelle synchronisieren" + }, + "iCalCalendarDataSync": { + "name": "iCal-URL", + "description": "Der iCal-Kalender-Sync synchronisiert sich automatisch mit den Einträgen in der Kalenderdatei der URL. Es werden nur ICS-Dateien (Internet Calendar and Scheduling) unterstützt." + }, + "postgreSQLDataSync": { + "description": "Synchronisiert eine PostgreSQL-Tabelle mit einer Baserow-Tabelle, die den unten angegebenen Details entspricht. Beachten Sie, dass beim Start der Synchronisation alle Zeilen in der angegebenen Tabelle ausgewählt werden. Auch wenn Baserow nur Daten auswählt, empfehlen wir dringend, den Benutzer auf eine schreibgeschützte Verbindung zu beschränken.", + "host": "Host", + "username": "Benutzername", + "password": "Passwort", + "database": "Datenbank", + "schema": "Schema", + "table": "Tabelle", + "port": "Port", + "sslMode": "SSL-Modus" + }, + "createDataSync": { + "next": "Weiter", + "fields": "Wählen Sie die Felder aus, die Sie synchronisieren möchten", + "create": "Tabelle erstellen und synchronisieren", + "error": "Bei der Synchronisation ist etwas schiefgelaufen", + "autoAddLabel": "Neue Eigenschaften automatisch hinzufügen", + "autoAddHelper": "Fügt automatisch neu verfügbare Eigenschaften aus der Datenquelle in die Baserow-Tabelle ein und synchronisiert sie. Damit dies funktioniert, müssen alle Eigenschaften synchronisiert werden.", + "twoWaySyncLabel": "Bidirektionale Synchronisation" + }, + "syncTableModal": { + "title": "{name} synchronisieren", + "description": "Diese Tabelle ist mit einem Datenabgleich verknüpft. Wenn Sie auf die Schaltfläche „Synchronisieren“ klicken, werden die Daten mit der Quelle synchronisiert. Während dieses Vorgangs wird eine Sperre auf die aktualisierten Zeilen gelegt, was API-Anfragen oder Tabellenänderungen vorübergehend verlangsamen kann.", + "sync": "Tabelle synchronisieren", + "hide": "Ausblenden" + }, + "gridViewRowHeight": { + "name": "Höhe", + "small": "Klein", + "medium": "Mittel", + "large": "Groß" + }, + "gridViewFreezeHandle": { + "freeze": "0 Spalten fixieren | 1 Spalte fixieren | {count} Spalten fixieren", + "hoverHint": "Ziehen, um Spalten zu fixieren" + }, + "configureDataSyncModal": { + "title": "Datenabgleich", + "syncedFields": "Synchronisierte Felder", + "syncSettings": "Sync-Einstellungen" + }, + "configureDataSyncVisibleFields": { + "title": "Synchronisierte Felder ändern", + "fields": "Synchronisierte Felder", + "syncTable": "Beim Speichern synchronisieren" + }, + "configureDataSyncSettings": { + "title": "Datenabgleich ändern", + "syncTable": "Beim Speichern synchronisieren" + }, + "webhookDeactivatedNotification": { + "body": "Der Webhook {name} wurde deaktiviert, weil er zu oft hintereinander fehlgeschlagen ist." + }, + "webhookPayloadTooLargeNotification": { + "body": "Die Nutzlast für den Webhook {name} mit der Ereignis-ID {event_id} war zu groß. Der Inhalt wurde in mehrere Batches aufgeteilt, aber Daten oberhalb des Batch-Limits von {batch_limit} wurden verworfen." + }, + "tablesGuidedTourStep": { + "title": "Tabellen einrichten", + "content": "Tabellen speichern Ihre Informationen übersichtlich. Erstellen Sie eine neue Tabelle in Ihrer Datenbank, um mit der Strukturierung Ihrer Daten zu beginnen." + }, + "filterSortGroupGuidedTourStep": { + "title": "Daten finden und organisieren", + "content": "Finden Sie Informationen schnell, indem Sie Ihre Zeilen filtern und sortieren. Gruppieren Sie sofort nach beliebigen Feldern, um Muster klar zu visualisieren und Ihre Arbeitsabläufe zu vereinfachen." + }, + "addFieldGuidedTourStep": { + "title": "Daten anpassen", + "content": "Klicken Sie auf „+“, um neue Felder (Spalten) hinzuzufügen. Wählen Sie aus verschiedenen Feldtypen, um genau das zu erfassen, was für Ihr Projekt am wichtigsten ist." + }, + "createViewGuidedTourStep": { + "title": "Ansichten personalisieren", + "content": "Erstellen Sie benutzerdefinierte Ansichten wie Raster, Kalender, Kanban oder Galerie, um Ihre Daten genau so zu visualisieren, wie Sie es möchten." + }, + "createFormViewGuidedTourStep": { + "title": "Ein Formular erstellen", + "content": "Erstellen Sie schnell Formulare aus Ihren Tabellen, um Antworten direkt in Ihrer Tabelle zu sammeln und die Datenerfassung zu optimieren." + }, + "viewOptionsGuidedTourStep": { + "title": "Ansichts-Optionen", + "content": "Klicken Sie auf die drei Punkte neben der Ansicht, um zu exportieren, zu importieren, zu duplizieren und einen Webhook zu konfigurieren." + }, + "fieldRules": { + "errorTitle": "Fehler bei der Verarbeitung der Feldregel", + "ruleDoesNotExist": "Regel existiert nicht", + "ruleTypeDoesNotExist": "Regeltyp existiert nicht", + "ruleAlreadyExists": "Regel existiert bereits" + }, + "fieldFormViewEditRowSubForm": { + "selectFormViewLabel": "Formularansicht", + "description": "Jede Zeile erhält einen eindeutigen Link, der dieses Formular mit den Daten dieser Zeile vorausgefüllt öffnet. Beachten Sie, dass jeder mit Lesezugriff auf die Tabelle und das Feld die Zeile über die Formularansicht bearbeiten kann, einschließlich Betrachtern und Besuchern einer öffentlich geteilten Ansicht.", + "notPublicWarning": "Diese Formularansicht ist nicht öffentlich geteilt. Der Bearbeitungslink funktioniert erst, wenn das Formular öffentlich gemacht wird.", + "notPublic": "(nicht öffentlich)", + "formDoesNotExist": "Das ausgewählte Formular existiert nicht mehr." + }, + "editRowLink": { + "editRow": "Zeile bearbeiten" + }, + "rowEditFieldFormViewEditRow": { + "copyLink": "Link kopieren", + "noFormView": "Keine Formularansicht konfiguriert" } } diff --git a/web-frontend/modules/database/locales/es.json b/web-frontend/modules/database/locales/es.json index 5cb2ed7d17..9c951d9505 100644 --- a/web-frontend/modules/database/locales/es.json +++ b/web-frontend/modules/database/locales/es.json @@ -1218,5 +1218,9 @@ }, "editRowLink": { "editRow": "Editar fila" + }, + "gridViewFreezeHandle": { + "hoverHint": "Arrastrar para congelar columnas", + "freeze": "Congelar 0 columnas | Congelar 1 columna | Congelar {count} columnas" } } diff --git a/web-frontend/modules/database/locales/ko.json b/web-frontend/modules/database/locales/ko.json index 32e6dd275c..9ae9e6a63c 100644 --- a/web-frontend/modules/database/locales/ko.json +++ b/web-frontend/modules/database/locales/ko.json @@ -541,7 +541,8 @@ "noGroupByText": "필드별로 행을 그룹화합니다.", "groupBy": "그룹화 기준", "thenBy": "다음 기준", - "addGroupBy": "그룹화할 필드 선택" + "addGroupBy": "그룹화할 필드 선택", + "hiddenFieldWarning": "하나 이상의 그룹화 기준이 편집자 및 하위 권한 사용자에게 표시되지 않는 숨겨진 필드를 참조합니다." }, "viewGroupBy": { "groupBy": "그룹 | 1개의 필드로 그룹화 | {count}개의 필드로 그룹화" @@ -551,13 +552,15 @@ "noSortText": "정렬을 사용하면 필드별로 행을 정렬할 수 있습니다.", "sortBy": "정렬 기준", "thenBy": "다음 기준", - "addSort": "정렬할 필드 선택" + "addSort": "정렬할 필드 선택", + "hiddenFieldWarning": "하나 이상의 정렬 항목이 편집자 및 하위 역할 사용자에게는 표시되지 않는 숨겨진 필드를 참조합니다." }, "viewSort": { "sort": "정렬 | 1개의 정렬 | {count}개의 정렬" }, "viewDecorator": { - "decorator": "색상 | 1개의 색상 | {count}개의 색상" + "decorator": "색상 | 1개의 색상 | {count}개의 색상", + "hiddenFieldWarning": "편집자 및 하위 직급 사용자의 경우 숨겨진 필드를 참조할 수 있는 장식 요소가 제거됩니다." }, "viewRotateSlugModal": { "title": "URL 새로 고침", @@ -616,7 +619,8 @@ "toCollaborative": "협업으로", "webhooks": "웹훅", "importFile": "파일 가져오기", - "deleteView": "뷰 삭제" + "deleteView": "뷰 삭제", + "defaultRowValues": "기본값 행 값" }, "deleteViewModal": { "title": "{name} 삭제", @@ -1172,5 +1176,15 @@ "rowEditFieldFormViewEditRow": { "copyLink": "링크 복사", "noFormView": "폼 뷰가 구성되지 않았습니다" + }, + "defaultValuesModal": { + "title": "{name}의 기본값", + "setDefaultValue": "기본값 설정", + "removeDefaultValue": "기본값을 제거합니다", + "staticValue": "정적 값" + }, + "gridViewFreezeHandle": { + "freeze": "0개 열 고정 | 1개 열 고정 | {count}개 열 고정", + "hoverHint": "드래그하여 열을 고정하세요" } } diff --git a/web-frontend/modules/integrations/locales/de.json b/web-frontend/modules/integrations/locales/de.json index 7be9b79af4..aa0eb5d847 100644 --- a/web-frontend/modules/integrations/locales/de.json +++ b/web-frontend/modules/integrations/locales/de.json @@ -1,63 +1,33 @@ { - "localBaserowGetRowForm": { - "rowFieldHelpText": "Wert leer lassen, um die erste Zeile abzufragen.", - "rowFieldLabel": "Row-ID", - "invalidFormula": "Die Formel ist ungültig", - "rowFieldPlaceHolder": "Wählen Sie eine Row-ID", - "searchFieldPlaceHolder": "Geben Sie einen Suchbegriff ein...", - "filterTabTitle": "Filter", - "searchTabTitle": "Suche", - "noTableChosenForSorting": "Wählen Sie eine Tabelle um die Datenquellen-Sortierung zu verwenden.", - "noTableChosenForFiltering": "Wählen Sie eine Tabelle, um die Datenquellen-Filter zu nutzen." - }, - "localBaserowTableServiceConditionalForm": { - "noCompatibleFilterTypesErrorTitle": "Keine kompatiblen Filterarten", - "noCompatibleFilterTypesErrorMessage": "Keine Ihrer Felder hat kompatible Filterarten", - "noFilterText": "Datenquellen-Filter ermöglichen Ihnen, nur die Zeilen einer Baserow-Tabelle anzuzeigen, auf welche die Bedingungen zutreffen.", - "relatedFieldNotFound": "Das Bezugsfeld wurde nicht gefunden.", - "filterTypeNotFound": "Die Filterart ist nicht kompatibel.", - "addFilter": "Zusätzliche Filter hinzufügen", - "noFilterTitle": "Sie haben bisher keinen Datenquellen-Filter erstellt", - "formulaFilterInputPlaceholder": "Text eingeben...", - "useFormulaForValue": "Eine Formel für diesen Filter verwenden", - "useDefaultForValue": "Standardfilter für dieses Feld verwenden" - }, - "localBaserowTableServiceSortForm": { - "noTableChosenForSorting": "Wählen Sie eine Tabelle, um die Datenquellen-Sortierung zu verwenden.", - "noSortText": "Sortierung ermöglicht Ihnen, Zeilen nach einem Feld zu sortieren.", - "noSortTitle": "Sie haben noch keine Datenquellen-Sortierung erstellt", - "thenBy": "und nach", - "addSort": "Zusätzliche Sortierung hinzufügen", - "sortBy": "Sortieren nach", - "sortMisconfigured": "Das Feld, zu dem diese Sortierung gehört, wurde verworfen." - }, - "dataProviderType": { - "dataSource": "Datenquelle", - "pageParameter": "Parameter" - }, - "localBaserowTableSelector": { - "tableFieldLabel": "Tabelle", - "viewFieldLabel": "Ansicht", - "chooseNoView": "Nicht ausgewählt", - "databaseFieldLabel": "Datenbank", - "dataSyncedTableDescription": "Tabelle mit synchronisierten Daten" + "integrationsCommon": { + "singleRow": "Einzelne Zeile", + "multipleRows": "Mehrere Zeilen" }, "integrationType": { "localBaserow": "Lokales Baserow", - "localBaserowSummary": "Lokales Baserow - {name}, {username}", - "localBaserowWarning": "Wenn Sie Ihr Konto autorisieren, hat jeder, der Bearbeitungsrechte für die Anwendung hat, vollen Zugriff auf die Daten, auf die auch Sie Zugriff haben. Es ist möglich, einen zweiten Benutzer zu erstellen, ihm die notwendigen Berechtigungen zu geben und stattdessen diesen zu verwenden.", "smtp": "SMTP-E-Mail", "slackBot": "Slack-Bot", - "ai": "AI" + "ai": "KI" + }, + "localBaserowIntegrationType": { + "localBaserowSummary": "Lokales Baserow - {name}, {username}", + "localBaserowNoUser": "Lokales Baserow - Nicht konfiguriert", + "localBaserowWarning": "Wenn Sie Ihr Konto autorisieren, hat jeder mit Bearbeitungsrechten für die Anwendung auch vollen Zugriff auf die Daten, auf welche Sie Zugriff haben. Es ist möglich einen zweiten Benutzer zu erstellen, diesem die passenden Berechtigungen zu geben und stattdessen diesen zu verwenden." + }, + "aiIntegrationType": { + "inheritingWorkspace": "Übernimmt die KI-Einstellungen des Arbeitsbereichs", + "overridingProviders": "Überschreibt {count} Anbieter | Überschreibt {count} Anbieter" + }, + "slackBotIntegrationType": { + "slackBotSummary": "Slack-Bot", + "slackBotNoToken": "Slack-Bot – Nicht konfiguriert" }, "serviceType": { "localBaserowGetRow": "Einzelne Zeile abfragen", - "localBaserowListRows": "Mehrere Zeilen auflisten", - "localBaserowAggregateRows": "Feld zusammenfassen", - "misconfigured": "Fehlkonfiguriert", - "trashedField": "Verworfenes Feld", "localBaserowGetRowDescription": "Eine einzelne Zeile aus einer Baserow-Tabelle lesen.", + "localBaserowListRows": "Mehrere Zeilen auflisten", "localBaserowListRowsDescription": "Liest mehrere Zeilen aus einer Baserow-Tabelle.", + "localBaserowAggregateRows": "Feld zusammenfassen", "localBaserowAggregateRowsDescription": "Fasst ein Feld in einer Baserow-Tabelle zusammen.", "localBaserowCreateRow": "Eine Zeile erstellen", "localBaserowCreateRowDescription": "Erstellt eine neue Zeile in einer Baserow-Tabelle.", @@ -71,30 +41,45 @@ "localBaserowRowsUpdatedDescription": "Wird ausgelöst, wenn Zeilen in einer Baserow-Tabelle aktualisiert werden.", "localBaserowRowsDeleted": "Zeilen werden gelöscht", "localBaserowRowsDeletedDescription": "Wird ausgelöst, wenn Zeilen in einer Baserow-Tabelle gelöscht werden.", + "coreHTTPTrigger": "Eine HTTP-Anfrage empfangen", + "coreHTTPTriggerDescription": "Wird ausgelöst, wenn eine HTTP-Anfrage empfangen wird.", "coreHTTPRequest": "Eine HTTP-Anfrage senden", "coreHTTPRequestDescription": "Sendet eine HTTP-Anfrage an einen angegebenen Endpunkt.", "coreSMTPEmail": "E-Mail versenden", "coreRouter": "Router", - "coreRouterEdgesRequired": "Mindestens ein Edge ist erforderlich", + "coreRouterEdgesRequired": "Mindestens eine Verzweigung ist erforderlich", "coreRouterEdgeLabelRequired": "Eine Zweigbezeichnung ist erforderlich.", "coreRouterEdgeConditionRequired": "Eine Zweigbedingung ist erforderlich.", "coreRouterDescription": "Leitet den Workflow basierend auf einer Bedingung zum nächsten Zweig weiter.", "coreSMTPEmailDescription": "Sendet eine E-Mail unter Verwendung der SMTP-Konfiguration.", + "coreIteration": "Iterator", + "coreIterationDescription": "Über Elemente iterieren.", "errorFromEmailMissing": "Fehlende E-Mail-Eigenschaft \"From\"", "errorToEmailsMissing": "Fehlende E-Mail-Eigenschaft \"To\"", + "misconfigured": "Fehlkonfiguriert", + "trashedField": "Verworfenes Feld", "errorUrlMissing": "Fehlende URL-Eigenschaft", "errorNoTableSelected": "Keine Tabelle ausgewählt", "errorFilterInError": "Mindestens ein Filter ist falsch konfiguriert", - "errorSortingInError": "Midestens eine Sortierung ist falsch konfiguriert", + "errorSortingInError": "Mindestens eine Sortierung ist falsch konfiguriert", "errorNoFieldSelected": "Kein Feld ausgewählt", "errorNoAggregationTypeSelected": "Kein Aggregationstyp ausgewählt", "corePeriodic": "Periodischer Auslöser", "corePeriodicDescription": "Löst den Workflow in regelmäßigen Abständen zu festgelegten Zeitpunkten aus", "corePeriodicErrorIntervalMissing": "Ein Intervall ist erforderlich.", - "coreHTTPTrigger": "Einen HTTP-Request empfangen", - "coreHTTPTriggerDescription": "Wird ausgelöst, wenn ein HTTP-Request empfangen wird.", - "coreIteration": "Iterator", - "coreIterationDescription": "Über Elemente iterieren." + "errorIterationSourceMissing": "Fehlende Quell-Eigenschaft", + "aiAgent": "KI-Prompt", + "aiAgentDescription": "Führt KI-Prompts mithilfe konfigurierter generativer KI-Modelle aus.", + "errorNoIntegrationSelected": "Keine Integration ausgewählt", + "errorNoAIProviderSelected": "Kein KI-Anbieter ausgewählt", + "errorNoAIModelSelected": "Kein KI-Modell ausgewählt", + "errorNoPromptProvided": "Kein Prompt angegeben", + "errorNoChoicesProvided": "Keine Auswahlmöglichkeiten für den Ausgabetyp \"Auswahl\" angegeben", + "slackWriteMessage": "Eine Slack-Nachricht senden", + "slackWriteMessageDescription": "Sendet eine Nachricht an einen bestimmten Slack-#Kanal", + "slackWriteMessageMissingChannel": "Ein Kanal ist erforderlich.", + "slackWriteMessageMissingMessage": "Eine Nachricht ist erforderlich.", + "slackWriteMessageMissingIntegration": "Keine Slack-Integration ausgewählt." }, "userSourceType": { "localBaserow": "Baserow-Tabellen-Authentifizierung" @@ -103,35 +88,52 @@ "user": "Benutzer", "userMessage": "Mit dieser Verbindung autorisieren Sie die Anwendung, Ihr Konto zu verwenden, um Änderungen in Ihrem lokalen Baserow-Arbeitsbereich vorzunehmen." }, + "aiForm": { + "description": "Konfigurieren Sie die Einstellungen des KI-Anbieters für diese Integration. Standardmäßig werden die KI-Einstellungen des Arbeitsbereichs übernommen.", + "workspaceSettingsTitle": "KI-Einstellungen des Arbeitsbereichs", + "workspaceSettingsDescription": "Diese Integration übernimmt standardmäßig die Einstellungen des KI-Anbieters aus Ihrem Arbeitsbereich. Sie können bestimmte Anbieter unten überschreiben.", + "overrideWorkspaceSettings": "Einstellungen des Arbeitsbereichs für diesen Anbieter überschreiben", + "inherited": "Übernommen", + "overridden": "Überschrieben" + }, + "aiAgentServiceForm": { + "integrationLabel": "Integration", + "providerLabel": "KI-Anbieter", + "providerPlaceholder": "Wählen Sie einen KI-Anbieter aus...", + "modelLabel": "KI-Modell", + "modelPlaceholder": "Wählen Sie ein Modell aus...", + "outputTypeLabel": "Ausgabetyp", + "outputTypeHelp": "Wählen Sie aus, wie die KI ihre Antwort formatieren soll. Wenn Sie Auswahlmöglichkeiten festlegen, zwingen Sie das Modell, ausschließlich mit einer dieser Möglichkeiten zu antworten.", + "outputTypeText": "Text", + "outputTypeChoice": "Auswahl", + "temperatureLabel": "Temperatur", + "temperaturePlaceholder": "z. B. 0,7", + "temperatureHelp": "Steuert die Zufälligkeit. Niedrigere Werte (0–0,3) sind fokussierter und deterministischer. Höhere Werte (0,7–2,0) sind kreativer und vielfältiger.", + "promptLabel": "Prompt", + "promptPlaceholder": "Geben Sie hier Ihren Prompt ein...", + "choicesLabel": "Auswahlmöglichkeiten", + "choicePlaceholder": "Geben Sie eine Auswahlmöglichkeit ein...", + "addChoice": "Auswahlmöglichkeit hinzufügen", + "choicesRequired": "Mindestens eine Auswahlmöglichkeit ist erforderlich" + }, + "localBaserowGetRowForm": { + "rowFieldLabel": "Row-ID", + "invalidFormula": "Die Formel ist ungültig", + "rowFieldPlaceHolder": "Wählen Sie eine Row-ID", + "rowFieldHelpText": "Wert leer lassen, um die erste Zeile abzufragen.", + "searchFieldPlaceHolder": "Geben Sie einen Suchbegriff ein...", + "noTableChosenForFiltering": "Wählen Sie eine Tabelle, um die Datenquellen-Filter zu nutzen.", + "noTableChosenForSorting": "Wählen Sie eine Tabelle um die Datenquellen-Sortierung zu verwenden." + }, "localBaserowListRowsForm": { - "sortTabTitle": "Sortiert", - "searchTabTitle": "Suche", - "filterTabTitle": "Filter", - "noTableChosenForSorting": "Wählen Sie eine Tabelle um die Datenquellen-Sortierung zu nutzen.", "searchFieldPlaceHolder": "Geben Sie einen Suchbegriff ein...", "noTableChosenForFiltering": "Wählen Sie eine Tabelle um die Filter der Datenquelle nutzen zu können.", + "noTableChosenForSorting": "Wählen Sie eine Tabelle um die Datenquellen-Sortierung zu nutzen.", "advancedConfig": "Erweitert", "defaultResultCount": "Standardanzahl der Ergebnisse", "defaultResultCountHelp": "Die Standardanzahl der Datensätze, die diese Datenquelle auf Ihrer Seite abruft. Wenn Sie den Wert auf 0 setzen und ihn für ein Sammelelement verwenden, wird die Leistung beim Laden der Seite verbessert, da die Datensätze nur abgerufen werden, wenn das Element paginiert ist.", "defaultResultCountPlaceholder": "Standardwert..." }, - "localBaserowIntegrationType": { - "localBaserowSummary": "Lokales Baserow - {name}, {username}", - "localBaserowNoUser": "Lokales Baserow - Nicht konfiguriert", - "localBaserowWarning": "Wenn Sie Ihr Konto autorisieren, hat jeder mit Bearbeitungsrechten für die Anwendung auch vollen Zugriff auf die Daten, auf welche Sie Zugriff haben. Es ist möglich einen zweiten Benutzer zu erstellen, diesem die passenden Berechtigungen zu geben und stattdessen diesen zu verwenden." - }, - "integrationsCommon": { - "singleRow": "Einzelne Zeile", - "multipleRows": "Mehrere Zeilen" - }, - "localBaserowAggregateRowsForm": { - "filterTabTitle": "Filter", - "searchTabTitle": "Suche", - "aggregationFieldLabel": "Feld", - "aggregationTypeLabel": "Aggregierung", - "searchFieldPlaceHolder": "Geben Sie einen Suchbegriff ein...", - "noTableChosenForFiltering": "Wählen Sie eine Tabelle, um mit der Verwendung von Datenquellenfiltern zu beginnen." - }, "serviceRefinementForms": { "filterTabTitle": "Filter | 1 Filter | {count} Filter", "sortTabTitle": "Sortierung | 1 Sortierung | {count} Sortierungen", @@ -141,6 +143,38 @@ "noTableChosenForSorting": "Wählen Sie eine Tabelle aus, um mit der Verwendung von Datenquellen-Sortierungen zu beginnen.", "refinements": "Verfeinerungen" }, + "localBaserowAggregateRowsForm": { + "aggregationFieldLabel": "Feld", + "aggregationTypeLabel": "Aggregierung", + "searchFieldPlaceHolder": "Geben Sie einen Suchbegriff ein...", + "noTableChosenForFiltering": "Wählen Sie eine Tabelle, um mit der Verwendung von Datenquellenfiltern zu beginnen." + }, + "localBaserowTableServiceConditionalForm": { + "addFilter": "Zusätzliche Filter hinzufügen", + "noFilterTitle": "Sie haben bisher keinen Datenquellen-Filter erstellt", + "noFilterText": "Datenquellen-Filter ermöglichen Ihnen, nur die Zeilen einer Baserow-Tabelle anzuzeigen, auf welche die Bedingungen zutreffen.", + "relatedFieldNotFound": "Das Bezugsfeld wurde nicht gefunden.", + "filterTypeNotFound": "Die Filterart ist nicht kompatibel.", + "noCompatibleFilterTypesErrorTitle": "Keine kompatiblen Filterarten", + "noCompatibleFilterTypesErrorMessage": "Keine Ihrer Felder hat kompatible Filterarten", + "textFilterInputPlaceholder": "Text eingeben...", + "formulaFilterInputPlaceholder": "Wählen Sie eine Formel aus...", + "useFormulaForValue": "Eine Formel für diesen Filter verwenden", + "useDefaultForValue": "Standardfilter für dieses Feld verwenden" + }, + "localBaserowTableServiceSortForm": { + "noSortTitle": "Sie haben noch keine Datenquellen-Sortierung erstellt", + "noSortText": "Sortierung ermöglicht Ihnen, Zeilen nach einem Feld zu sortieren.", + "sortBy": "Sortieren nach", + "thenBy": "und nach", + "addSort": "Zusätzliche Sortierung hinzufügen", + "noTableChosenForSorting": "Wählen Sie eine Tabelle, um die Datenquellen-Sortierung zu verwenden.", + "sortMisconfigured": "Das Feld, zu dem diese Sortierung gehört, wurde verworfen." + }, + "dataProviderType": { + "dataSource": "Datenquelle", + "pageParameter": "Parameter" + }, "coreHTTPRequestServiceForm": { "httpMethod": "HTTP-Methode", "url": "Endpunkt-URL", @@ -164,21 +198,58 @@ "nameFieldInvalid": "Der Name darf nur alphanumerische Zeichen, Bindestriche oder Unterstriche enthalten und darf nicht mit einem Bindestrich oder einem Unterstrich beginnen.", "timeout": "Zeitlimit" }, + "slackBotForm": { + "tokenLabel": "Bot-User-Token", + "tokenPlaceholder": "xoxb-1234-...", + "tokenMustStartWith": "Token muss mit \"xoxb-\" beginnen", + "supportHeading": "Brauchen Sie Hilfe?", + "supportDescription": "Wenn Sie Unterstützung bei der Kopplung mit Ihrer Slack-App benötigen, lesen Sie bitte die unten stehenden Schritte.", + "supportSetupHeading": "1. Einrichtung der App", + "supportSetupDescription": "Abhängig von den Einstellungen Ihres Slack-Arbeitsbereichs können Sie möglicherweise eine neue Slack-App erstellen. Andernfalls muss dies ein Administrator für Sie übernehmen. Wenn Sie eine bestehende App wiederverwenden, die Nachrichten schreiben kann, springen Sie zum Abschnitt „Kopplung mit Ihrer Slack-App\".", + "supportSetupStep1": "Navigieren Sie zur {link} Ihres Arbeitsbereichs.", + "supportSetupStep1Link": "App-Seite", + "supportSetupStep2": "Erstellen Sie eine neue App, wählen Sie „From scratch\" und geben Sie einen Namen ein. Wählen Sie den Arbeitsbereich aus, in dem Ihre App arbeiten soll, und klicken Sie auf „Create\".", + "supportSetupStep3": "Navigieren Sie in der linken Seitenleiste zu „OAuth > Permissions\", scrollen Sie zu „Scopes\" und wählen Sie unter „Bot Token Scopes\" „Add an OAuth Scope\" aus.", + "supportSetupStep4": "Damit Ihre App Nachrichten posten kann, fügen Sie den Scope {scope} hinzu.", + "supportPairingHeading": "2. Kopplung mit Ihrer Slack-App", + "supportPairingStep1": "Falls Ihre App neu ist: Navigieren Sie zu „Settings\" > „Install App\". Klicken Sie auf den grünen Button, um die App in Ihrem Arbeitsbereich zu installieren.", + "supportPairingStep2": "Kopieren Sie Ihr „Bot User OAuth Token\" und speichern Sie es im Feld „Bot-User-Token\" in diesem Formular.", + "supportPairingStep3": "Falls Ihre App neu ist: Laden Sie sie schließlich in Slack mit {command} in Ihren gewünschten Kanal ein." + }, + "slackWriteMessageServiceForm": { + "alertMessage": "Diese Aktion muss mit einer Slack-App gekoppelt werden. Bitte folgen Sie der Anleitung im Integrations-Popup, um zu beginnen.", + "integrationLabel": "Integration", + "channelLabel": "Kanal", + "channelPlaceholder": "Geben Sie einen Kanalnamen ein", + "messageLabel": "Nachricht", + "messagePlaceholder": "Geben Sie eine Nachricht ein...", + "channelNoPrefix": "Entfernen Sie das „#\" vor dem Kanalnamen." + }, + "localBaserowTableSelector": { + "viewFieldLabel": "Ansicht", + "tableFieldLabel": "Tabelle", + "chooseNoView": "Nicht ausgewählt", + "databaseFieldLabel": "Datenbank", + "oneWayDataSyncedTableDescription": "Einseitig synchronisiert", + "twoWayDataSyncedTableDescription": "Zweiseitig synchronisiert" + }, "smtpIntegrationType": { "smtpSummary": "SMTP - {host}:{port}" }, "smtpForm": { "host": "SMTP-Server", - "hostPlaceholder": "smtp.email.com", + "hostPlaceholder": "smtp.gmail.com", "port": "SMTP-Port", "portPlaceholder": "587", "useTls": "TLS verwenden", "username": "Benutzername", - "usernamePlaceholder": "deine-email-adresse{'@'}beispiel.de", + "usernamePlaceholder": "ihre-email{'@'}beispiel.de", "password": "Passwort", - "passwordPlaceholder": "swordfish" + "passwordPlaceholder": "ihr-passwort" }, "smtpEmailForm": { + "smtpConfigurationMode": "SMTP-Konfiguration", + "useInstanceSmtpSettings": "SMTP-Server der Instanz verwenden", "integrationDropdownLabel": "Integration", "fromEmail": "Absender-E-Mailadresse", "fromEmailPlaceholder": "absender{'@'}beispiel.de", @@ -198,15 +269,19 @@ "body": "Body", "bodyPlaceholder": "Ihr E-Mailinhalt..." }, + "coreIterationServiceForm": { + "source": "Quelle", + "sourcePlaceholder": "Wählen Sie eine Quelle aus..." + }, "routerForm": { "defaultEdgeLabelLabel": "Standard-Zweigbezeichnung", "defaultEdgeLabelPlaceholder": "Standard", - "defaultEdgeLabelDescription": "Wählen Sie optional das Label aus, das auf dem Standardzweig angezeigt werden soll.", + "defaultEdgeLabelDescription": "Wählen Sie optional die Bezeichnung aus, die auf dem Standardzweig angezeigt werden soll.", "branchesHeading": "Verzweigungen", "branchesDescription": "Mit Verzweigungen können Sie Knoten nur ausführen, wenn eine Bedingung erfüllt ist. Verzweigungen werden von links nach rechts ausgeführt, bis eine Bedingung erfüllt ist. Andernfalls wird die Standardverzweigung ausgeführt. ", "branchLabel": "Bezeichnung", "branchConditionLabel": "Bedingung", - "branchConditionPlaceholder": "Bedingung eingeben...", + "branchConditionPlaceholder": "Wenn wahr, wird diese Verzweigung ausgeführt.", "addEdge": "Verzweigung hinzufügen", "edgeDefaultName": "Verzweigung", "noLabel": "Keine Bezeichnung", @@ -216,26 +291,43 @@ "periodicForm": { "intervalLabel": "Intervall", "intervalHelper": "Wählen Sie aus, wie oft dieser Workflow ausgeführt werden soll", - "everyMinute": "Jede Minute", + "everyMinute": "Alle {minute} Minuten", + "everyMinuteDefault": "Alle festgelegten Minuten", "everyHour": "Jede Stunde", "everyDay": "Jeden Tag", "everyWeek": "Jede Woche", "everyMonth": "Jeden Monat", "hour": "Stunde", "minute": "Minute", + "minuteFrequency": "Alle Minuten", "dayOfWeek": "Wochentag", "dayOfMonth": "Tag eines Monats", "hourPlaceholder": "0-23", "minutePlaceholder": "0-59", + "minuteFrequencyPlaceholder": "15", "dayOfMonthPlaceholder": "1-31", - "minuteHelper": "Dieser Workflow wird jede Minute ausgeführt" + "minuteHelper": "Dieser Workflow wird in den festgelegten Minutenabständen ausgeführt", + "hourHelper": "Dieser Workflow wird jede Stunde zur angegebenen Minute in Ihrer lokalen Zeitzone ({timezone}) ausgeführt", + "dayHelper": "Dieser Workflow wird jeden Tag zur angegebenen Zeit in Ihrer lokalen Zeitzone ({timezone}) ausgeführt", + "weekHelper": "Dieser Workflow wird jede Woche am angegebenen Tag und zur angegebenen Zeit in Ihrer lokalen Zeitzone ({timezone}) ausgeführt", + "monthHelper": "Dieser Workflow wird jeden Monat am angegebenen Tag und zur angegebenen Zeit in Ihrer lokalen Zeitzone ({timezone}) ausgeführt", + "deactivatedTitle": "Periodischer Auslöser deaktiviert", + "deactivatedText": "Dieser periodische Auslöser wurde aufgrund aufeinanderfolgender Fehler automatisch deaktiviert." }, - "aiIntegrationType": { - "inheritingWorkspace": "Übernimmt die KI-Einstellungen des Workspaces", - "overridingProviders": "Überschreibt {count} Anbieter | Überschreibt {count} Anbieter" + "localBaserowServiceForm": { + "integrationDropdownLabel": "Integration", + "rowIdLabel": "Row-ID", + "rowIdPlaceholder": "Wählen Sie eine Row-ID" }, - "slackBotIntegrationType": { - "slackBotSummary": "Slack-Bot", - "slackBotNoToken": "Slack-Bot – Nicht konfiguriert" + "localBaserowUpsertRowServiceForm": { + "fieldMappingPlaceholderArray": "Wählen Sie einen Array-Wert, z. B. [42]", + "fieldMappingPlaceholderString": "Wählen Sie einen Text-Wert, z. B. \\'baserow\\'", + "fieldMappingPlaceholderNumber": "Wählen Sie einen Zahlenwert, z. B. 42", + "fieldMappingPlaceholderBoolean": "Wählen Sie einen Boolean-Wert, z. B. true", + "fieldMappingPlaceholderDate": "Wählen Sie einen Datumswert, z. B. 2025-07-25", + "fieldMappingPlaceholderDecimal": "Wählen Sie einen Dezimalwert, z. B. 3,14", + "fieldMappingPlaceholderDuration": "Wählen Sie einen Dauerwert, z. B. 1:23:40", + "noTableSelectedMessage": "Wählen Sie eine Tabelle aus, um Ihre Felder zu konfigurieren.", + "noWritableFields": "Diese Tabelle enthält keine beschreibbaren Felder." } } diff --git a/web-frontend/modules/integrations/locales/fr.json b/web-frontend/modules/integrations/locales/fr.json index ac87fd8c90..1ad1b88ebb 100644 --- a/web-frontend/modules/integrations/locales/fr.json +++ b/web-frontend/modules/integrations/locales/fr.json @@ -173,8 +173,8 @@ }, "serviceRefinementForms": { "filterTabTitle": "Filtre | 1 filtre | {count} filtres", - "sortTabTitle": "Spell | 1 Spell | {count} Spells", - "searchTabTitle": "Trier | 1 tri | {count} tris", + "sortTabTitle": "Trier | 1 Tri | {count} Tris", + "searchTabTitle": "Recherche | 1 recherche | {count} recherches", "searchFieldPlaceHolder": "Entrez une recherche...", "noTableChosenForFiltering": "Choisissez une table pour commencer à utiliser les filtres de source de données.", "noTableChosenForSorting": "Choisissez une table pour commencer à utiliser les tris de sources de données.", diff --git a/web-frontend/modules/integrations/locales/ko.json b/web-frontend/modules/integrations/locales/ko.json index 46b6d6a414..2334db5db8 100644 --- a/web-frontend/modules/integrations/locales/ko.json +++ b/web-frontend/modules/integrations/locales/ko.json @@ -306,7 +306,7 @@ "supportPairingHeading": "2. Slack 앱과 페어링", "supportPairingStep1": "앱이 새로 설치된 경우 '설정' > '앱 설치'로 이동하세요. 녹색 버튼을 클릭하여 앱을 작업 공간에 설치합니다.", "supportPairingStep2": "'봇 사용자 OAuth 토큰'을 복사하여 이 양식의 '봇 사용자 토큰' 필드에 저장하세요.", - "supportPairingStep3": "마지막으로, 앱이 새로 개발된 경우 Slack에서 {command} 명령어를 사용하여 원하는 채널에 앱을 초대하세요.", + "supportPairingStep3": "마지막으로, 앱이 새로 개발된 경우 Slack에서 {command} 명령어를 사용하여 원하는 채널에 앱을 초대하세요", "supportSetupStep1Link": "앱 페이지" }, "slackWriteMessageServiceForm": { From 6b4696e782a33b665f9254dedc2bd5a91249e03a Mon Sep 17 00:00:00 2001 From: Davide Silvestri <75379892+silvestrid@users.noreply.github.com> Date: Tue, 5 May 2026 18:36:33 +0200 Subject: [PATCH 2/2] fix: keep primary grid field visible (#5289) --- ...fix_hidden_primary_field_in_grid_view.json | 9 ++++ .../components/view/grid/GridView.vue | 19 ++++--- .../view/grid/GridViewFreezeHandle.vue | 8 ++- .../database/components/view/grid/utils.js | 10 ++++ .../components/view/grid/gridView.spec.js | 53 +++++++++++++++++++ 5 files changed, 84 insertions(+), 15 deletions(-) create mode 100644 changelog/entries/unreleased/bug/5288_fix_hidden_primary_field_in_grid_view.json create mode 100644 web-frontend/modules/database/components/view/grid/utils.js create mode 100644 web-frontend/test/unit/database/components/view/grid/gridView.spec.js diff --git a/changelog/entries/unreleased/bug/5288_fix_hidden_primary_field_in_grid_view.json b/changelog/entries/unreleased/bug/5288_fix_hidden_primary_field_in_grid_view.json new file mode 100644 index 0000000000..d2d3cdf779 --- /dev/null +++ b/changelog/entries/unreleased/bug/5288_fix_hidden_primary_field_in_grid_view.json @@ -0,0 +1,9 @@ +{ + "type": "bug", + "message": "Fixed a bug where changing the primary field to a hidden field could keep it hidden in the grid view.", + "issue_origin": "github", + "issue_number": 5288, + "domain": "database", + "bullet_points": [], + "created_at": "2026-04-30" +} diff --git a/web-frontend/modules/database/components/view/grid/GridView.vue b/web-frontend/modules/database/components/view/grid/GridView.vue index 96719025c1..a037284a87 100644 --- a/web-frontend/modules/database/components/view/grid/GridView.vue +++ b/web-frontend/modules/database/components/view/grid/GridView.vue @@ -455,11 +455,8 @@ import GridViewFreezeHandle from '@baserow/modules/database/components/view/grid import GridViewRowDragging from '@baserow/modules/database/components/view/grid/GridViewRowDragging' import RowEditModal from '@baserow/modules/database/components/row/RowEditModal' import gridViewHelpers from '@baserow/modules/database/mixins/gridViewHelpers' -import { - filterHiddenFieldsFunction, - filterVisibleFieldsFunction, - sortFieldsByOrderAndIdFunction, -} from '@baserow/modules/database/utils/view' +import { sortFieldsByOrderAndIdFunction } from '@baserow/modules/database/utils/view' +import { filterGridViewVisibleFieldsFunction } from '@baserow/modules/database/components/view/grid/utils' import viewHelpers from '@baserow/modules/database/mixins/viewHelpers' import { isElement } from '@baserow/modules/core/utils/dom' import viewDecoration from '@baserow/modules/database/mixins/viewDecoration' @@ -548,7 +545,7 @@ export default { rightVisibleFields() { const fieldOptions = this.fieldOptions return this.rightFields - .filter(filterVisibleFieldsFunction(fieldOptions)) + .filter(filterGridViewVisibleFieldsFunction(fieldOptions)) .sort(sortFieldsByOrderAndIdFunction(fieldOptions, true)) }, /** @@ -556,8 +553,9 @@ export default { */ hiddenFields() { const fieldOptions = this.fieldOptions + const isFieldVisible = filterGridViewVisibleFieldsFunction(fieldOptions) return this.rightFields - .filter(filterHiddenFieldsFunction(fieldOptions)) + .filter((field) => !isFieldVisible(field)) .sort(sortFieldsByOrderAndIdFunction(fieldOptions)) }, viewHasGroupBys() { @@ -585,7 +583,8 @@ export default { }, /** * Returns the fields that should be displayed in the frozen left section. - * Takes the first N *visible* fields in sort order (primary always first). + * Takes the first N fields visible in the grid in sort order. The primary + * field is always included, even if its field options mark it as hidden. */ leftFields() { if (!this.hasFrozenColumns) { @@ -594,7 +593,7 @@ export default { const fieldOptions = this.fieldOptions const sorted = this.fields .slice() - .filter(filterVisibleFieldsFunction(fieldOptions)) + .filter(filterGridViewVisibleFieldsFunction(fieldOptions)) .sort(sortFieldsByOrderAndIdFunction(fieldOptions, true)) return sorted.slice(0, this.frozenColumnCount) }, @@ -1790,7 +1789,7 @@ export default { const fieldOptions = this.fieldOptions const sorted = this.fields .slice() - .filter(filterVisibleFieldsFunction(fieldOptions)) + .filter(filterGridViewVisibleFieldsFunction(fieldOptions)) .sort(sortFieldsByOrderAndIdFunction(fieldOptions, true)) const frozenWidth = sorted .slice(0, this.frozenColumnCount) diff --git a/web-frontend/modules/database/components/view/grid/GridViewFreezeHandle.vue b/web-frontend/modules/database/components/view/grid/GridViewFreezeHandle.vue index 0e2cb6672f..0cb921d3b8 100644 --- a/web-frontend/modules/database/components/view/grid/GridViewFreezeHandle.vue +++ b/web-frontend/modules/database/components/view/grid/GridViewFreezeHandle.vue @@ -32,10 +32,8 @@