diff --git a/ui/src/locales/lang/de_DE/ai-chat.ts b/ui/src/locales/lang/de_DE/ai-chat.ts new file mode 100644 index 00000000000..a0c798eecc1 --- /dev/null +++ b/ui/src/locales/lang/de_DE/ai-chat.ts @@ -0,0 +1,118 @@ +export default { + mine: 'Mein Bereich', + logoutContent: 'Durch das Abmelden gehen keine Daten verloren. Sie können sich weiterhin bei diesem Konto anmelden.', + confirmModification: 'Änderung bestätigen', + noHistory: 'Kein Chat-Verlauf', + createChat: 'Neuen Chat erstellen', + clearChat: 'Chat löschen', + history: 'Chat-Verlauf', + only20history: 'Nur die letzten 20 Chats anzeigen', + question_count: 'Fragen', + exportRecords: 'Chat-Verlauf exportieren', + exportPDF: 'PDF exportieren', + exportImg: 'Bilder exportieren', + preview: 'Vorschau', + chatId: 'Chat-ID', + chatUserId: 'Chat-Benutzer-ID', + chatUserType: 'Chat-Benutzertyp', + userInput: 'Benutzereingabe', + quote: 'Zitat', + download: 'Zum Herunterladen klicken', + noDocument: 'Originaldokument nicht gefunden', + noPermissionDownload: 'Keine Berechtigung zum Herunterladen', + passwordValidator: { + title: 'Passwort eingeben, um Zugriff zu erhalten', + errorMessage1: 'Das Passwort darf nicht leer sein', + errorMessage2: 'Falsches Passwort', + }, + operation: { + play: 'Abspielen', + pause: 'Pause', + regeneration: 'Antwort neu generieren', + like: 'Gefällt mir', + cancelLike: 'Gefällt mir nicht mehr', + oppose: 'Gefällt mir nicht', + cancelOppose: 'Ablehnung zurücknehmen', + continue: 'Fortsetzen', + stopChat: 'Antwort stoppen', + startChat: 'Antwort starten', + }, + tip: { + error500Message: 'Entschuldigung, der Dienst wird derzeit gewartet. Bitte versuchen Sie es später erneut!', + errorIdentifyMessage: 'Benutzeridentität konnte nicht überprüft werden', + errorLimitMessage: + 'Entschuldigung, Sie haben die maximale Anzahl an Fragen erreicht. Bitte versuchen Sie es morgen erneut!', + answerMessage: + 'Entschuldigung, es wurde kein relevanter Inhalt gefunden. Bitte formulieren Sie Ihre Frage um oder geben Sie mehr Details an.', + stopAnswer: 'Antwort gestoppt', + answerLoading: 'Antwort wird generiert', + recorderTip: `

Diese Funktion erfordert den Zugriff auf das Mikrofon. Browser blockieren Aufnahmen auf unsicheren Seiten. Lösungen:
+1. HTTPS aktivieren;
+2. Wenn HTTPS nicht verfügbar ist, passen Sie die Sicherheitseinstellungen des Browsers an. Für Chrome:
+(1) Geben Sie chrome://flags/#unsafely-treat-insecure-origin-as-secure in die Adresszeile ein;
+(2) Fügen Sie Ihre HTTP-Seite hinzu, z. B. http://127.0.0.1:8080.

`, + recorderError: 'Aufnahme fehlgeschlagen', + confirm: 'Verstanden', + requiredMessage: 'Bitte füllen Sie alle Pflichtfelder aus', + inputParamMessage1: 'Bitte geben Sie einen Parameter in der URL an', + inputParamMessage2: 'Wert', + prologueMessage: 'Entschuldigung, der Dienst wird derzeit gewartet. Bitte versuchen Sie es später erneut!', + }, + inputPlaceholder: { + speaking: 'Sprechen', + recorderLoading: 'Transkription läuft', + default: 'Geben Sie Ihre Frage ein', + }, + uploadFile: { + label: 'Datei hochladen', + most: 'Maximal', + limit: 'Dateien erlaubt, jeweils bis zu', + fileType: 'Dateityp', + tipMessage: 'Bitte wählen Sie in den Upload-Einstellungen nur erlaubte Dateitypen aus', + limitMessage1: 'Sie können bis zu', + limitMessage2: 'Dateien hochladen', + sizeLimit: 'Jede Datei darf nicht größer sein als', + sizeLimit2: 'Leere Dateien werden nicht unterstützt', + imageMessage: 'Bitte verarbeiten Sie den Bildinhalt', + documentMessage: 'Bitte verstehen Sie den Dokumentinhalt', + audioMessage: 'Bitte verstehen Sie den Audioinhalt', + otherMessage: 'Bitte verstehen Sie den Dateinhalt', + errorMessage: 'Upload fehlgeschlagen', + fileMessage: 'Bitte verarbeiten Sie den Dateinhalt', + fileRepeat: 'Datei existiert bereits', + }, + executionDetails: { + title: 'Ausführungsdetails', + paramOutputTooltip: 'Jedes Dokument unterstützt eine Vorschau von bis zu 500 Zeichen', + audioFile: 'Audiodatei', + searchContent: 'Suchanfrage', + searchResult: 'Suchergebnisse', + conditionResult: 'Bedingungsbewertung', + currentChat: 'Aktueller Chat', + answer: 'AI-Antwort', + replyContent: 'Antwortinhalt', + textContent: 'Textinhalt', + input: 'Eingabe', + output: 'Ausgabe', + rerankerContent: 'Neu bewerteter Inhalt', + rerankerResult: 'Neubewertungsergebnisse', + paragraph: 'Abschnitt', + noSubmit: 'Keine Eingabe vom Benutzer', + errMessage: 'Fehlerprotokoll', + knowedMessage: 'Bekannte Informationen', + }, + KnowledgeSource: { + title: 'Wissensquelle', + referenceParagraph: 'Zitierter Abschnitt', + consume: 'Tokens', + consumeTime: 'Runtime', + noSource: 'Keine Quelle gefunden', + }, + paragraphSource: { + title: 'Wissenszitat', + question: 'Benutzerfrage', + optimizationQuestion: 'Optimierte Frage', + questionPadded: 'Erweiterte Frage', + }, + editTitle: 'Titel bearbeiten', +} diff --git a/ui/src/locales/lang/de_DE/common.ts b/ui/src/locales/lang/de_DE/common.ts new file mode 100644 index 00000000000..ef598bea20c --- /dev/null +++ b/ui/src/locales/lang/de_DE/common.ts @@ -0,0 +1,117 @@ +export default { + syncSuccess: 'Erfolgreich', + create: 'Erstellen', + createSuccess: 'Erfolgreich', + copy: 'Kopieren', + copySuccess: 'Erfolgreich', + publishStatus: 'Veröffentlichungsstatus', + published: 'Veröffentlicht', + unpublished: 'Nicht veröffentlicht', + copyError: 'Kopieren fehlgeschlagen', + save: 'Speichern', + saveSuccess: 'Erfolgreich', + delete: 'Löschen', + deleteSuccess: 'Erfolgreich', + setting: 'Einstellungen', + settingSuccess: 'Erfolgreich', + submit: 'Absenden', + submitSuccess: 'Erfolgreich', + edit: 'Bearbeiten', + editSuccess: 'Erfolgreich', + modify: 'Ändern', + modifySuccess: 'Erfolgreich', + cancel: 'Abbrechen', + confirm: 'OK', + close: 'Schließen', + tip: 'Hinweise', + add: 'Hinzufügen', + refresh: 'Aktualisieren', + search: 'Suchen', + clear: 'Leeren', + upgrade: 'Upgrade', + createDate: 'Erstellungsdatum', + createTime: 'Erstellungszeit', + operation: 'Aktion', + character: 'Zeichen', + export: 'Exportieren', + exportSuccess: 'Erfolgreich', + unavailable: '(Nicht verfügbar)', + public: 'Öffentlich', + private: 'Privat', + paramSetting: 'Parametereinstellungen', + name: 'Name', + creator: 'Ersteller', + author: 'Autor', + debug: 'Debug', + required: 'Erforderlich', + noData: 'Keine Daten', + result: 'Ergebnis', + remove: 'Entfernen', + classify: 'Klassifizieren', + reason: 'Grund', + removeSuccess: 'Erfolgreich', + searchBar: { + placeholder: 'Nach Namen suchen', + }, + fileUpload: { + document: 'Dokumente', + image: 'Bild', + audio: 'Audio', + video: 'Video', + }, + status: { + label: 'Status', + disable: 'Deaktivieren', + enabled: 'Aktiviert', + disabled: 'Deaktiviert', + enableSuccess: 'Erfolgreich', + disableSuccess: 'Erfolgreich', + }, + param: { + outputParam: 'Ausgabeparameter', + inputParam: 'Eingabeparameter', + initParam: 'Startparameter', + editParam: 'Parameter bearbeiten', + addParam: 'Parameter hinzufügen', + }, + inputPlaceholder: 'Bitte eingeben', + selectPlaceholder: 'Bitte auswählen', + title: 'Titel', + content: 'Inhalt', + rename: 'Umbenennen', + renameSuccess: 'Erfolgreich', + EditAvatarDialog: { + title: 'App-Logo', + customizeUpload: 'Benutzerdefinierter Upload', + upload: 'Hochladen', + default: 'Standardlogo', + sizeTip: 'Empfohlene Größe: 32×32 Pixel. Unterstützt JPG-, PNG- und GIF-Formate. Maximale Größe: 10 MB', + fileSizeExceeded: 'Dateigröße überschreitet 10 MB', + uploadImagePrompt: 'Bitte ein Bild hochladen', + }, + info: 'Basisinformationen', + otherSetting: 'Weitere Einstellungen', + username: 'Benutzername', + importCreate: 'Importieren und Erstellen', + detail: 'Details', + selected: 'Ausgewählt', + notFound: { + title: '404', + NoService: 'Derzeit kein Zugriff auf Dienste möglich', + NoPermission: + 'Der aktuelle Benutzer hat keine Zugriffsberechtigung. Bitte wenden Sie sich an den Administrator.', + operate: 'Zurück zur Startseite', + }, + custom: 'Anpassen', + moveTo: 'Verschieben nach', + deleteConfirm: 'Löschen bestätigen', + expand: 'Erweitern', + collapse: 'Einklappen', + copyTitle: 'Kopieren', + professional: 'Professional Edition erwerben', + sync: 'Synchronisieren', + prompt: { + label: 'Eingabeaufforderung', + placeholder: 'Bitte Eingabeaufforderung eingeben', + }, +} diff --git a/ui/src/locales/lang/de_DE/components.ts b/ui/src/locales/lang/de_DE/components.ts new file mode 100644 index 00000000000..5ad436ea174 --- /dev/null +++ b/ui/src/locales/lang/de_DE/components.ts @@ -0,0 +1,23 @@ +export default { + quickCreatePlaceholder: 'Schnell ein leeres Dokument erstellen', + quickCreateName: 'Dokumentname', + noData: 'Keine Daten', + loading: 'Wird geladen', + noMore: 'Keine weiteren Ergebnisse!', + noDesc: 'Keine Beschreibung', + selectParagraph: { + title: 'Segmente auswählen', + error: 'Nur fehlgeschlagene Segmente verarbeiten', + all: 'Alle Segmente', + }, + folder: { + addFolder: 'Ordner hinzufügen', + addChildFolder: 'Unterordner hinzufügen', + editFolder: 'Ordner bearbeiten', + folderNamePlaceholder: 'Bitte einen Namen eingeben', + description: 'Beschreibung', + descriptionPlaceholder: 'Bitte eine Beschreibung eingeben', + requiredMessage: 'Bitte einen Ordner auswählen', + deleteConfirmMessage: 'Ordner mit Ressourcen werden gelöscht. Bitte vorsichtig sein.', + }, +} diff --git a/ui/src/locales/lang/de_DE/dynamics-form.ts b/ui/src/locales/lang/de_DE/dynamics-form.ts new file mode 100644 index 00000000000..6ab4e3223d4 --- /dev/null +++ b/ui/src/locales/lang/de_DE/dynamics-form.ts @@ -0,0 +1,133 @@ +export default { + input_type_list: { + TextInput: 'Eingabe', + PasswordInput: 'Passwort', + Slider: 'Schieberegler', + SwitchInput: 'Schalter', + SingleSelect: 'Einzelauswahl', + MultiSelect: 'Mehrfachauswahl', + DatePicker: 'Datumsauswahl', + JsonInput: 'JSON', + RadioCard: 'Radiokarte', + RadioRow: 'Radiozeile', + UploadInput: 'Datei-Upload', + TextareaInput: 'Mehrzeilige Eingabe', + MultiRow: 'Mehrzeilige Reihe', + }, + default: { + label: 'Standard', + placeholder: 'Bitte einen Standardwert eingeben', + requiredMessage: ' ist eine erforderliche Eigenschaft', + show: 'Standard anzeigen', + }, + tip: { + requiredMessage: 'darf nicht leer sein', + jsonMessage: 'Falsches JSON-Format', + }, + searchBar: { + placeholder: 'Bitte Stichwörter zur Suche eingeben', + }, + paramForm: { + field: { + label: 'Parameter', + placeholder: 'Bitte einen Parameter eingeben', + requiredMessage: 'Parameter ist eine erforderliche Eigenschaft', + requiredMessage2: 'Nur Buchstaben, Zahlen und Unterstriche sind erlaubt', + }, + name: { + label: 'Name', + placeholder: 'Bitte einen Namen eingeben', + requiredMessage: 'Name ist eine erforderliche Eigenschaft', + }, + tooltip: { + label: 'Tooltip', + placeholder: 'Bitte einen Tooltip eingeben', + }, + required: { + label: 'Erforderlich', + requiredMessage: 'Erforderlich ist eine Pflichtangabe', + }, + input_type: { + label: 'Typ', + placeholder: 'Bitte einen Typ auswählen', + requiredMessage: 'Typ ist eine erforderliche Eigenschaft', + }, + }, + DatePicker: { + placeholder: 'Datum auswählen', + year: 'Jahr', + month: 'Monat', + date: 'Datum', + datetime: 'Datum und Uhrzeit', + dataType: { + label: 'Datentyp', + placeholder: 'Bitte einen Datentyp auswählen', + }, + format: { + label: 'Format', + placeholder: 'Bitte ein Format auswählen', + }, + }, + Select: { + label: 'Optionswert', + placeholder: 'Bitte einen Optionswert eingeben', + }, + tag: { + label: 'Tag', + placeholder: 'Bitte ein Optionslabel eingeben', + }, + Slider: { + showInput: { + label: 'Eingabefeld anzeigen', + }, + valueRange: { + label: 'Wertebereich', + minRequired: 'Minimalwert ist erforderlich', + maxRequired: 'Maximalwert ist erforderlich', + }, + step: { + label: 'Schrittweite', + requiredMessage1: 'Schrittweite ist erforderlich', + requiredMessage2: 'Schrittweite darf nicht 0 sein', + }, + }, + TextInput: { + length: { + label: 'Textlänge', + minRequired: 'Minimale Länge ist erforderlich', + maxRequired: 'Maximale Länge ist erforderlich', + requiredMessage1: 'Länge muss zwischen', + requiredMessage2: 'und', + requiredMessage3: 'Zeichen liegen', + requiredMessage4: 'Textlänge ist ein erforderlicher Parameter', + }, + }, + UploadInput: { + limit: { + label: 'Maximale Anzahl an Dateien pro Upload', + required: 'Maximale Dateianzahl ist erforderlich', + }, + max_file_size: { + label: 'Maximale Dateigröße (MB)', + required: 'Maximale Dateigröße ist erforderlich', + }, + accept: { + label: 'Dateityp', + required: 'Dateityp ist erforderlich', + }, + }, + AssignmentMethod: { + label: 'Zuweisungsmethode', + custom: { + label: 'Benutzerdefiniert', + }, + ref_variables: { + label: 'Referenzvariablen', + popover: 'Variablenwerte müssen dem', + json_format: 'JSON-Format entsprechen', + popover_label: 'Bezeichnung', + popover_value: 'Wert', + popover_default: 'Ist Standard', + }, + }, +} diff --git a/ui/src/locales/lang/de_DE/index.ts b/ui/src/locales/lang/de_DE/index.ts new file mode 100644 index 00000000000..8034c2c1a1b --- /dev/null +++ b/ui/src/locales/lang/de_DE/index.ts @@ -0,0 +1,19 @@ +import en from 'element-plus/es/locale/lang/en' +import components from './components' +import layout from './layout' +import views from './views' +import theme from './theme' +import common from './common' +import dynamicsForm from './dynamics-form' +import chat from './ai-chat' +export default { + lang: 'Deutsch', + layout, + views, + theme, + components, + en, + common, + dynamicsForm, + chat +} diff --git a/ui/src/locales/lang/de_DE/layout.ts b/ui/src/locales/lang/de_DE/layout.ts new file mode 100644 index 00000000000..771b7a0a337 --- /dev/null +++ b/ui/src/locales/lang/de_DE/layout.ts @@ -0,0 +1,34 @@ +export default { + github: 'Projektadresse', + wiki: 'Benutzerhandbuch', + forum: 'Forum für Unterstützung', + logout: 'Abmelden', + apiKey: 'API-Schlüssel', + apiServiceAddress: 'API-Serviceadresse', + language: 'Sprache', + isExpire: 'Lizenz nicht hochgeladen oder abgelaufen', + about: { + title: 'Über', + expiredTime: 'Ablaufdatum', + edition: { + label: 'Edition', + community: 'Community Edition', + professional: 'Professional Edition', + enterprise: 'Enterprise Edition', + }, + version: 'Version', + serialNo: 'Seriennummer', + remark: 'Bemerkungen', + update: 'Aktualisieren', + authorize: 'Autorisiert', + }, + time: { + daysLater: 'Tage später', + hoursLater: 'Stunden später', + expired: 'abgelaufen', + expiringSoon: 'läuft bald ab' + }, + copyright: 'Copyright © 2014–2025 FIT2CLOUD, Alle Rechte vorbehalten.', + userManualUrl: 'http://docs.maxkb.hk/', + forumUrl: 'https://github.com/1Panel-dev/MaxKB/discussions' +} diff --git a/ui/src/locales/lang/de_DE/theme.ts b/ui/src/locales/lang/de_DE/theme.ts new file mode 100644 index 00000000000..20153ba12bb --- /dev/null +++ b/ui/src/locales/lang/de_DE/theme.ts @@ -0,0 +1,43 @@ +export default { + title: 'Darstellungseinstellungen', + defaultSlogan: 'Eine Open-Source-Plattform zur Erstellung von Enterprise-Agents', + platformDisplayTheme: 'Plattform-Design-Thema', + customTheme: 'Benutzerdefiniertes Theme', + platformLoginSettings: 'Login-Einstellungen der Plattform', + pagePreview: 'Seitenvorschau', + default: 'Standard', + restoreDefaults: 'Standardeinstellungen wiederherstellen', + orange: 'Orange', + green: 'Grün', + purple: 'Violett', + red: 'Rot', + custom: 'theme.custom', + loginBackground: 'Login-Hintergrundbild', + loginLogo: 'Login-Logo', + websiteLogo: 'Website-Logo', + replacePicture: 'Bild ersetzen', + websiteLogoTip: + 'Logo, das oben auf der Website angezeigt wird. Empfohlene Größe: 48x48. Unterstützt JPG, PNG, GIF. Maximale Größe: 10 MB', + loginLogoTip: + 'Logo auf der rechten Seite der Login-Seite. Empfohlene Größe: 204x52. Unterstützt JPG, PNG, GIF. Maximale Größe: 10 MB', + loginBackgroundTip: + 'Hintergrundbild auf der linken Seite. Vektorgrafiken: empfohlene Größe 576x900; Bitmaps: empfohlene Größe 1152x1800. Unterstützt JPG, PNG, GIF. Maximale Größe: 10 MB', + websiteName: 'Website-Name', + websiteNamePlaceholder: 'Bitte den Website-Namen eingeben', + websiteNameTip: 'Der Plattformname, der im Browser-Tab angezeigt wird', + websiteSlogan: 'Begrüßungsslogan', + websiteSloganPlaceholder: 'Bitte den Begrüßungsslogan eingeben', + websiteSloganTip: 'Der Begrüßungsslogan unter dem Produktlogo', + + defaultTip: 'Standardmäßig ist das MaxKB-Interface aktiv, benutzerdefinierte Einstellungen sind möglich', + logoDefaultTip: 'Standardmäßig ist das MaxKB-Login-Interface aktiv, benutzerdefinierte Einstellungen sind möglich', + platformSetting: 'Plattform-Einstellungen', + showUserManual: 'Benutzerhandbuch anzeigen', + showForum: 'Forum-Unterstützung anzeigen', + showProject: 'Projektadresse anzeigen', + urlPlaceholder: 'Bitte die URL-Adresse eingeben', + abandonUpdate: 'Aktualisierung verwerfen', + saveAndApply: 'Speichern und anwenden', + fileMessageError: 'Dateigröße überschreitet 10 MB', + saveSuccess: 'Darstellungseinstellungen erfolgreich übernommen', +} diff --git a/ui/src/locales/lang/de_DE/views/application-overview.ts b/ui/src/locales/lang/de_DE/views/application-overview.ts new file mode 100644 index 00000000000..d9bd70cc74d --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/application-overview.ts @@ -0,0 +1,102 @@ +export default { + title: 'Übersicht', + appInfo: { + header: 'App-Informationen', + publicAccessLink: 'Öffentliche URL', + openText: 'Ein', + closeText: 'Aus', + copyLinkText: 'Link kopieren', + refreshLinkText: 'Link aktualisieren', + demo: 'Vorschau', + embedInWebsite: 'Einbettungscode abrufen', + accessControl: 'Zugriffskontrolle', + displaySetting: 'Anzeigeeinstellungen', + apiAccessCredentials: 'API-Zugangsdaten', + apiKey: 'API-Schlüssel', + refreshToken: { + msgConfirm1: 'Sind Sie sicher, dass Sie die öffentliche URL neu generieren möchten?', + msgConfirm2: + 'Das Neugenerieren der öffentlichen URL wirkt sich auf alle bestehenden eingebetteten Codes auf Drittanbieter-Websites aus. Sie müssen den Einbettungscode aktualisieren und erneut integrieren. Bitte gehen Sie vorsichtig vor!', + refreshSuccess: 'Erfolgreich aktualisiert', + }, + APIKeyDialog: { + saveSettings: 'Einstellungen speichern', + msgConfirm1: 'Sind Sie sicher, dass Sie den API-Schlüssel löschen möchten?', + msgConfirm2: + 'Diese Aktion ist unwiderruflich. Nach dem Löschen kann der API-Schlüssel nicht wiederhergestellt werden. Möchten Sie fortfahren?', + }, + EmbedDialog: { + fullscreenModeTitle: 'Vollbildmodus', + copyInstructions: 'Kopieren Sie den folgenden Code zum Einbetten', + floatingModeTitle: 'Schwebemodus', + mobileModeTitle: 'Mobilmodus', + }, + LimitDialog: { + clientQueryLimitLabel: 'Abfragelimit pro Client', + authentication: 'Authentifizierung', + authenticationValue: 'Passwortzugriff', + timesDays: 'Abfragen pro Tag', + whitelistLabel: 'Zulässige Domains', + whitelistPlaceholder: + 'Geben Sie zulässige Drittanbieter-Domains ein, eine pro Zeile. Beispiel:\nhttp://127.0.0.1:5678\nhttps://dataease.io', + loginMethod: 'Anmeldemethode', + loginMethodRequired: 'Bitte Anmeldemethode auswählen', + toSettingChatUser: 'Zum Konfigurieren des Chat-Benutzers gehen', + displayCodeRequired: 'Bitte die Anzahl der Fehlversuche eingeben', + }, + SettingAPIKeyDialog: { + allowCrossDomainLabel: 'Cross-Domain-Zugriff erlauben', + crossDomainPlaceholder: + 'Geben Sie zulässige Cross-Domain-Adressen ein. Wenn aktiviert, aber leer gelassen, gelten keine Einschränkungen.\nEine Adresse pro Zeile, z. B.:\nhttp://127.0.0.1:5678\nhttps://dataease.io', + }, + }, + SettingDisplayDialog: { + showSourceLabel: 'Wissensquelle anzeigen', + showExecutionDetail: 'Ausführungsdetails anzeigen', + restoreDefault: 'Standard wiederherstellen', + customThemeColor: 'Benutzerdefinierte Themenfarbe', + headerTitleFontColor: 'Schriftfarbe der Kopfzeile', + default: 'Standard', + askUserAvatar: 'Benutzeravatar (Fragesteller)', + replace: 'Ersetzen', + imageMessage: + 'Empfohlene Größe: 32×32 Pixel. Unterstützt JPG-, PNG- und GIF-Formate. Maximale Größe: 10 MB', + AIAvatar: 'AI-Avatar', + floatIcon: 'Schwebendes Symbol', + iconDefaultPosition: 'Standardposition des Symbols', + iconPosition: { + left: 'Links', + right: 'Rechts', + bottom: 'Unten', + top: 'Oben', + }, + draggablePosition: 'Position verschiebbar', + showHistory: 'Chat-Verlauf anzeigen', + displayGuide: 'Anleitungsbild anzeigen (Schwebemodus)', + disclaimer: 'Haftungsausschluss', + disclaimerValue: 'Dieser Inhalt wurde von AI generiert und dient nur als Referenz.', + chatBackground: 'Chat-Hintergrund', + chatBackgroundMessage: 'Unterstützte Formate: JPG, PNG, GIF. Maximale Größe: 10 MB.', + }, + monitor: { + monitoringStatistics: 'Überwachungsstatistiken', + customRange: 'Benutzerdefinierter Zeitraum', + startDatePlaceholder: 'Startdatum', + endDatePlaceholder: 'Enddatum', + pastDayOptions: { + past7Days: 'Letzte 7 Tage', + past30Days: 'Letzte 30 Tage', + past90Days: 'Letzte 90 Tage', + past183Days: 'Letzte 6 Monate', + }, + charts: { + customerTotal: 'Gesamtanzahl Benutzer', + customerNew: 'Neue Benutzer', + queryCount: 'Gesamtanzahl Abfragen', + tokensTotal: 'Gesamtzahl verwendeter Tokens', + userSatisfaction: 'Benutzerfeedback-Metriken', + approval: 'Gefällt mir', + disapproval: 'Gefällt mir nicht', + }, + }, +} diff --git a/ui/src/locales/lang/de_DE/views/application-workflow.ts b/ui/src/locales/lang/de_DE/views/application-workflow.ts new file mode 100644 index 00000000000..66d7470d7c3 --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/application-workflow.ts @@ -0,0 +1,418 @@ +export default { + node: 'Knoten', + nodeName: 'Knotenname', + baseComponent: 'Basis', + nodeSetting: 'Knoten-Einstellungen', + workflow: 'Workflow', + searchBar: { + placeholder: 'Nach Namen suchen', + }, + info: { + previewVersion: 'Vorschauversion:', + saveTime: 'Zuletzt gespeichert:', + }, + setting: { + restoreVersion: 'Vorherige Version wiederherstellen"', + restoreCurrentVersion: 'Auf diese Version wiederherstellen', + addComponent: 'Hinzufügen', + releaseHistory: 'Versionsverlauf', + autoSave: 'Automatisches Speichern', + latestRelease: 'Neueste Veröffentlichung', + copyParam: 'Parameter kopieren', + debug: 'Ausführen', + exit: 'Beenden', + exitSave: 'Speichern & Beenden', + }, + tip: { + noData: 'Keine passenden Ergebnisse gefunden', + nameMessage: 'Name darf nicht leer sein!', + onlyRight: 'Verbindungen dürfen nur vom rechten Anker hergestellt werden', + notRecyclable: 'Schleifenverbindungen sind nicht erlaubt', + onlyLeft: 'Verbindungen dürfen nur zum linken Anker hergestellt werden', + applicationNodeError: 'Diese Anwendung ist nicht verfügbar', + toolNodeError: 'Dieser Tool-Knoten ist nicht verfügbar', + repeatedNodeError: 'Ein Knoten mit diesem Namen existiert bereits', + cannotCopy: 'Kann nicht kopiert werden', + copyError: 'Knoten bereits kopiert', + paramErrorMessage: 'Parameter existiert bereits: ', + saveMessage: 'Aktuelle Änderungen wurden nicht gespeichert. Vor dem Beenden speichern?', + }, + delete: { + confirmTitle: 'Diesen Knoten wirklich löschen?', + deleteMessage: 'Dieser Knoten kann nicht gelöscht werden', + }, + control: { + zoomOut: 'Verkleinern', + zoomIn: 'Vergrößern', + fitView: 'An Bildschirm anpassen', + retract: 'Alle einklappen', + extend: 'Alle ausklappen', + beautify: 'Automatisch anordnen', + }, + variable: { + label: 'Variable', + global: 'Globale Variable', + Referencing: 'Referenzierte Variable', + ReferencingRequired: 'Referenzierte Variable ist erforderlich', + ReferencingError: 'Ungültige referenzierte Variable', + NoReferencing: 'Referenzierte Variable existiert nicht', + placeholder: 'Bitte eine Variable auswählen', + }, + condition: { + title: 'Ausführungsbedingung', + front: 'Voraussetzung', + AND: 'Alle', + OR: 'Beliebige', + text: 'Nachdem der verbundene Knoten ausgeführt wurde, den aktuellen Knoten ausführen', + }, + validate: { + startNodeRequired: 'Startknoten ist erforderlich', + startNodeOnly: 'Es ist nur ein Startknoten zulässig', + baseNodeRequired: 'Basisknoten ist erforderlich', + baseNodeOnly: 'Es ist nur ein Basisknoten zulässig', + notInWorkFlowNode: 'Knoten nicht im Workflow', + noNextNode: 'Nächster Knoten existiert nicht', + nodeUnavailable: 'Knoten nicht verfügbar', + needConnect1: 'Der Zweig des Knotens muss verbunden werden', + cannotEndNode: 'Dieser Knoten kann nicht als Endknoten verwendet werden', + loopNodeBreakNodeRequired: 'Endlosschleife muss einen Break-Knoten haben', + }, + nodes: { + classify: { + aiCapability: 'AI-Fähigkeit', + businessLogic: 'Geschäftslogik', + other: 'Sonstiges', + }, + startNode: { + label: 'Start', + question: 'Benutzerfrage', + currentTime: 'Aktuelle Zeit', + }, + baseNode: { + label: 'Basisinformationen', + appName: { + label: 'App-Name', + }, + appDescription: { + label: 'App-Beschreibung', + }, + fileUpload: { + label: 'Datei-Upload', + tooltip: 'Wenn aktiviert, wird auf der Q&A-Seite eine Datei-Upload-Schaltfläche angezeigt.', + }, + FileUploadSetting: { + title: 'Einstellungen für Datei-Upload', + maxFiles: 'Max. Anzahl an Dateien pro Upload', + fileLimit: 'Maximale Größe pro Datei (MB)', + fileUploadType: { + label: 'Für Upload zulässige Dateitypen', + documentText: 'Erfordert den Knoten „Document Content Extraction“, um Dokumentinhalte zu analysieren', + imageText: 'Erfordert den Knoten „Image Understanding“, um Bildinhalte zu analysieren', + audioText: 'Erfordert den Knoten „Speech-to-Text“, um Audioinhalte zu analysieren', + }, + }, + }, + aiChatNode: { + label: 'AI-Chat', + text: 'Mit einem AI-Modell chatten', + answer: 'AI-Inhalt', + returnContent: { + label: 'Rückgabeinhalt', + tooltip: `Wenn ausgeschaltet, wird der Inhalt dieses Knotens nicht an den Benutzer ausgegeben. + Wenn der Benutzer die Ausgabe dieses Knotens sehen soll, bitte den Schalter einschalten.`, + }, + defaultPrompt: 'Bekannte Informationen', + think: 'Denkprozess', + }, + searchKnowledgeNode: { + label: 'Wissensrecherche', + text: 'Ermöglicht das Abfragen von Textinhalten aus dem Wissen, die sich auf Benutzerfragen beziehen', + paragraph_list: 'Liste der abgerufenen Segmente', + is_hit_handling_method_list: 'Liste der Segmente, die Kriterien für Direktantwort erfüllen', + result: 'Suchergebnis', + directly_return: 'Inhalt der Segmente, die Kriterien für Direktantwort erfüllen', + searchParam: 'Abrufparameter', + searchQuestion: { + label: 'Frage', + placeholder: 'Bitte eine Suchfrage auswählen', + requiredMessage: 'Bitte eine Suchfrage auswählen', + }, + }, + questionNode: { + label: 'Fragenoptimierung', + text: 'Optimiert die aktuelle Frage basierend auf Chat-Verlauf, um Wissenssegmente besser zuzuordnen', + result: 'Ergebnis der optimierten Frage', + systemDefault: `#Role +You are a master of problem optimization, adept at accurately inferring user intentions based on context and optimizing the questions raised by users. + +##Skills +###Skill 1: Optimizing Problems +2. Receive user input questions. +3. Carefully analyze the meaning of the problem based on the context. +4. Output optimized problems. + +##Limitations: +-Only return the optimized problem without any additional explanation or clarification. +-Ensure that the optimized problem accurately reflects the original problem intent and does not alter the original intention.`, + }, + conditionNode: { + label: 'Bedingte Verzweigung', + text: 'Verschiedene Knoten basierend auf Bedingungen auslösen', + branch_name: 'Zweigname', + conditions: { + label: 'Bedingungen', + info: 'Erfüllt Folgendes', + requiredMessage: 'Bitte Bedingungen auswählen', + }, + valueMessage: 'Bitte einen Wert eingeben', + addCondition: 'Bedingung hinzufügen', + addBranch: 'Zweig hinzufügen', + }, + replyNode: { + label: 'Vorgegebene Antwort', + text: 'Antwortinhalt festlegen; referenzierte Variablen werden zur Ausgabe in Zeichenfolgen umgewandelt', + content: 'Inhalt', + replyContent: { + label: 'Antwortinhalt', + reference: 'Referenzvariable', + }, + }, + rerankerNode: { + label: 'Mehrpfad-Recall', + text: 'Verwenden Sie ein Reranking-Modell, um Abrufresultate aus mehreren Wissensquellen zu verfeinern', + result_list: 'Liste der neu bewerteten Ergebnisse', + result: 'Neubewertungsergebnis', + rerankerContent: { + label: 'Neubewertungsinhalt', + requiredMessage: 'Bitte Neubewertungsinhalt auswählen', + }, + higher: 'Höher', + ScoreTooltip: 'Je höher der Score, desto stärker die Relevanz.', + max_paragraph_char_number: 'Maximale Zeichenanzahl', + reranker_model: { + label: 'Rerank', + placeholder: 'Bitte Rerank auswählen', + }, + }, + formNode: { + label: 'Formulareingabe', + text: 'Benutzereingaben während Q&A erfassen und in nachfolgenden Prozessen verwenden', + form_content_format1: 'Hallo, bitte füllen Sie das folgende Formular aus:', + form_content_format2: 'Klicken Sie nach dem Ausfüllen auf [Absenden].', + form_data: 'Gesamter Formularinhalt', + formContent: { + label: 'Ausgabeinhalt des Formulars', + requiredMessage: + 'Bitte den Ausgabeinhalt dieses Knotens festlegen; { form } ist ein Platzhalter für das Formular.', + tooltip: 'Definieren Sie den Ausgabeinhalt dieses Knotens. { form } ist ein Platzhalter für das Formular', + }, + formAllContent: 'Gesamter Formularinhalt', + formSetting: 'Formularkonfiguration', + }, + documentExtractNode: { + label: 'Dokumentinhalts-Extraktion', + text: 'Inhalte aus Dokumenten extrahieren', + content: 'Dokumentinhalt', + }, + imageUnderstandNode: { + label: 'Bildverständnis', + text: 'Bilder analysieren, Objekte und Szenen erkennen und Antworten bereitstellen', + answer: 'AI-Inhalt', + model: { + label: 'Vision-Modell', + requiredMessage: 'Bitte ein Vision-Modell auswählen', + }, + image: { + label: 'Bild auswählen', + requiredMessage: 'Bitte ein Bild auswählen', + }, + }, + variableAssignNode: { + label: 'Variable zuweisen', + text: 'Wert der globalen Variable aktualisieren', + assign: 'Wert setzen', + }, + mcpNode: { + label: 'MCP-Knoten', + text: 'Externe MCP-Dienste aufrufen, um Daten zu verarbeiten', + getToolsSuccess: 'Tools erfolgreich abgerufen', + getTool: 'Tools abrufen', + toolParam: 'Tool-Parameter', + mcpServerTip: 'Bitte MCP-Serverkonfiguration im JSON-Format eingeben', + mcpToolTip: 'Bitte ein Tool auswählen', + configLabel: 'MCP-Serverkonfiguration (nur SSE/Streamable HTTP-Aufrufe werden unterstützt)', + reference: 'MCP referenzieren', + }, + imageGenerateNode: { + label: 'Bildgenerierung', + text: 'Bilder auf Basis des bereitgestellten Textinhalts generieren', + answer: 'AI-Inhalt', + model: { + label: 'Bildgenerierungsmodell', + requiredMessage: 'Bitte ein Bildgenerierungsmodell auswählen', + }, + prompt: { + label: 'Positiver Prompt', + tooltip: 'Beschreiben Sie Elemente und visuelle Merkmale, die im generierten Bild enthalten sein sollen', + }, + negative_prompt: { + label: 'Negativer Prompt', + tooltip: 'Beschreiben Sie Elemente, die im generierten Bild ausgeschlossen werden sollen', + placeholder: + 'Bitte Inhalte beschreiben, die nicht generiert werden sollen, z. B. Farbe, blutige Inhalte', + }, + }, + textToVideoGenerate: { + label: 'Text-zu-Video', + text: 'Video basierend auf bereitgestelltem Textinhalt generieren', + answer: 'AI-Antwortinhalt', + model: { + label: 'Text-zu-Video-Modell', + requiredMessage: 'Bitte ein Text-zu-Video-Modell auswählen', + }, + prompt: { + label: 'Prompt (Positiv)', + tooltip: + 'Positiver Prompt, zur Beschreibung der erwarteten Elemente und visuellen Merkmale im generierten Video', + }, + negative_prompt: { + label: 'Prompt (Negativ)', + tooltip: + "Negativer Prompt, zur Beschreibung von Inhalten, die Sie im Video nicht sehen möchten und die die Videogenerierung einschränken können", + placeholder: + "Bitte Videoinhalte beschreiben, die nicht generiert werden sollen, z. B.: Farben, blutige Inhalte", + }, + }, + imageToVideoGenerate: { + label: 'Image-to-Video', + text: 'Video basierend auf bereitgestellten Bildern generieren', + answer: 'AI-Antwortinhalt', + model: { + label: 'Image-to-Video-Modell', + requiredMessage: 'Bitte ein Image-to-Video-Modell auswählen', + }, + prompt: { + label: 'Prompt (Positiv)', + tooltip: + 'Positiver Prompt, zur Beschreibung der erwarteten Elemente und visuellen Merkmale im generierten Video', + }, + negative_prompt: { + label: 'Prompt (Negativ)', + tooltip: + "Negativer Prompt, zur Beschreibung von Inhalten, die Sie im Video nicht sehen möchten und die die Videogenerierung einschränken können", + placeholder: + "Bitte Videoinhalte beschreiben, die nicht generiert werden sollen, z. B.: Farben, blutige Inhalte", + }, + first_frame: { + label: 'Erstes Einzelbild', + requiredMessage: 'Bitte das erste Einzelbild auswählen', + }, + last_frame: { + label: 'Letztes Einzelbild', + requiredMessage: 'Bitte das letzte Einzelbild auswählen', + }, + }, + speechToTextNode: { + label: 'Speech2Text', + text: 'Audio mittels Spracherkennungsmodell in Text umwandeln', + stt_model: { + label: 'Spracherkennungsmodell', + }, + audio: { + label: 'Audiodatei auswählen', + placeholder: 'Bitte eine Audiodatei auswählen', + }, + }, + textToSpeechNode: { + label: 'TTS', + text: 'Text mittels Sprachsynthesemodell in Audio umwandeln', + tts_model: { + label: 'Sprachsynthesemodell', + }, + content: { + label: 'Textinhalt auswählen', + }, + }, + toolNode: { + label: 'Benutzerdefiniertes Tool', + text: 'Benutzerdefinierte Skripte ausführen, um Daten zu verarbeiten', + }, + intentNode: { + label: 'IntentNode', + text: 'Benutzerfragen mit benutzerdefinierten Intent-Klassifikationen abgleichen', + other: 'andere', + error2: 'Intent wiederholt', + placeholder: 'Bitte eine Klassifikationsoption wählen', + classify: { + label: 'Intent klassifizieren', + placeholder: 'Bitte eingeben', + }, + input: { + label: 'Eingabe', + }, + }, + applicationNode: { + label: 'APP-Knoten', + }, + loopNode: { + label: 'Schleifen-Knoten', + text: 'Eine Reihe von Aufgaben wiederholen, indem Anzahl und Logik der Schleifen festgelegt werden', + loopType: { + label: 'Schleifentyp', + requiredMessage: 'Bitte einen Schleifentyp auswählen', + arrayLoop: 'Array-Schleife', + numberLoop: 'Schleife für eine festgelegte Anzahl', + infiniteLoop: 'Endlosschleife', + }, + loopNumber: { + label: 'Schleifenanzahl', + requiredMessage: 'Bitte die Anzahl der Schleifen eingeben', + }, + loopArray: { + label: 'Zirkuläres Array', + requiredMessage: 'Zirkuläres Array ist erforderlich', + placeholder: 'Bitte ein zirkuläres Array auswählen', + }, + loopSetting: 'Schleifeneinstellungen', + loopDetail: 'Schleifendetails', + }, + loopStartNode: { + label: 'Schleifenstart', + loopIndex: 'Index', + loopItem: 'Schleifenelement', + loopVariable: 'Schleifenvariable', + }, + loopBodyNode: { + label: 'Schleifenkörper', + text: 'Schleifenkörper', + }, + loopContinueNode: { + label: 'Fortsetzen', + text: 'Wird verwendet, um die aktuelle Schleife zu beenden und zur nächsten fortzufahren.', + isContinue: 'Fortsetzen', + }, + loopBreakNode: { + label: 'Abbrechen', + text: 'Aktuelle Schleife beenden und den Schleifenkörper verlassen', + isBreak: 'Abbrechen', + }, + }, + compare: { + is_null: 'Ist null', + is_not_null: 'Ist nicht null', + contain: 'Enthält', + not_contain: 'Enthält nicht', + eq: 'Gleich', + ge: 'Größer gleich', + gt: 'Größer als', + le: 'Kleiner gleich', + lt: 'Kleiner als', + len_eq: 'Länge gleich', + len_ge: 'Länge größer/gleich', + len_gt: 'Länge größer als', + len_le: 'Länge kleiner/gleich', + len_lt: 'Länge kleiner als', + }, + SystemPromptPlaceholder: 'System-Prompt, kann Variablen im System referenzieren, wie', + UserPromptPlaceholder: 'User-Prompt, kann Variablen im System referenzieren, wie', +} diff --git a/ui/src/locales/lang/de_DE/views/application.ts b/ui/src/locales/lang/de_DE/views/application.ts new file mode 100644 index 00000000000..cbf218957a4 --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/application.ts @@ -0,0 +1,254 @@ +export default { + title: 'APP', + createApplication: 'Einfache APP erstellen', + createWorkFlowApplication: 'Workflow-APP erstellen', + importApplication: 'APP importieren', + copyApplication: 'APP kopieren', + workflow: 'WORKFLOW', + simple: 'EINFACH', + simplePlaceholder: 'Geeignet für Einsteiger, um einen Assistenten über Formulareinstellungen zu erstellen', + workflowPlaceholder: + 'Geeignet für fortgeschrittene Benutzer, um komplexe logische AI-Assistenten mit Low-Code-Drag-and-Drop zu erstellen', + appTest: 'Debug-Vorschau', + searchBar: { + placeholder: 'Nach Namen suchen', + }, + status: { + published: 'Veröffentlicht', + unpublished: 'Nicht veröffentlicht', + }, + operation: { + addModel: 'Modell hinzufügen', + toChat: 'Chat', + publish: 'Veröffentlichen', + }, + delete: { + confirmTitle: 'Sind Sie sicher, dass Sie diese APP löschen möchten: ', + confirmMessage: + 'Das Löschen dieser APP beendet deren Dienste. Bitte gehen Sie vorsichtig vor.', + }, + tip: { + publishSuccess: 'Erfolgreich veröffentlicht', + ExportError: 'Export fehlgeschlagen', + professionalMessage: + 'Die Community Edition unterstützt bis zu 5 APPs. Wenn Sie mehr benötigen, aktualisieren Sie bitte auf die Professional Edition.', + saveErrorMessage: 'Speichern fehlgeschlagen. Bitte überprüfen Sie Ihre Eingaben oder versuchen Sie es später erneut.', + loadingErrorMessage: 'Konfiguration konnte nicht geladen werden. Bitte überprüfen Sie Ihre Eingaben oder versuchen Sie es später erneut.', + }, + + form: { + appName: { + label: 'Name', + placeholder: 'Bitte den APP-Namen eingeben', + requiredMessage: 'APP-Name ist erforderlich', + }, + appDescription: { + label: 'Beschreibung', + placeholder: + 'Beschreiben Sie das Szenario und die Verwendung der APP, z. B.: XXX-Assistent, der Benutzerfragen zur Nutzung des XXX-Produkts beantwortet', + }, + appType: { + label: 'Typ', + simplePlaceholder: 'Geeignet für Einsteiger zur Erstellung eines Assistenten.', + workflowPlaceholder: 'Geeignet für fortgeschrittene Benutzer, um den Workflow des Assistenten anzupassen', + }, + appTemplate: { + blankApp: { + title: 'Leere APP', + }, + assistantApp: { + title: 'Wissensassistent', + description: 'Geeignet für fortgeschrittene Benutzer zur Anpassung des Workflows des Assistenten', + }, + }, + aiModel: { + label: 'AI-Modell', + placeholder: 'Bitte ein AI-Modell auswählen', + }, + roleSettings: { + label: 'System-Prompt', + placeholder: + 'System-Prompt. Sie können Variablen im System referenzieren: {data} ist das im Wissensspeicher gefundene Segment; {question} ist die vom Benutzer gestellte Frage.', + tooltip: 'Legen Sie die Rolle oder Anweisungen fest, denen das Modell folgen soll', + }, + + prompt: { + label: 'Benutzer-Prompt', + noReferences: '(Kein referenziertes Wissen)', + references: ' (Referenziertes Wissen)', + placeholder: + 'Benutzer-Prompt. Sie können Variablen im System referenzieren: {data} ist das im Wissensspeicher gefundene Segment; {question} ist die vom Benutzer gestellte Frage', + requiredMessage: 'Bitte Benutzer-Prompt eingeben', + tooltip: + 'Die Frage oder der Befehl, den der Benutzer an das Modell richtet', + + noReferencesTooltip: + 'Durch Anpassen des Prompt-Inhalts können Sie die Richtung des Modells steuern. Dieser Prompt wird am Anfang des Kontexts fixiert. Verwendete Variable: {question} ist die vom Benutzer gestellte Frage.', + referencesTooltip: + 'Durch Anpassen des Prompt-Inhalts können Sie die Richtung des Modells steuern. Dieser Prompt wird am Anfang des Kontexts fixiert. Verwendete Variablen: {data} enthält bekannte Informationen aus dem Wissen; {question} ist die vom Benutzer gestellte Frage.', + defaultPrompt: `Bekannte Informationen: {data} + Frage: {question} + Antwortanforderungen: + - Bitte verwenden Sie eine präzise und professionelle Ausdrucksweise, um die Frage des Benutzers zu beantworten. + `, + }, + historyRecord: { + label: 'Chat-Verlauf', + }, + relatedKnowledge: { + label: 'Verknüpftes Wissen', + placeholder: 'Verknüpfte Wissenselemente werden hier angezeigt', + }, + multipleRoundsDialogue: 'Mehrstufiger Dialog', + + prologue: 'Einleitung', + defaultPrologue: + 'Hallo, ich bin der XXX-Assistent. Sie können mir Fragen zur Verwendung von XXX stellen.\n- Welche Hauptfunktionen hat XXX?\n- Welches LLM unterstützt XXX?\n- Welche Dokumenttypen unterstützt XXX?', + problemOptimization: { + label: 'Fragenoptimierung', + tooltip: + 'Optimiert die aktuelle Frage basierend auf dem Chat-Verlauf, um die Wissenspunkte besser zuzuordnen.', + }, + + voiceInput: { + label: 'Spracheingabe', + placeholder: 'Bitte ein Spracherkennungsmodell auswählen', + requiredMessage: 'Bitte ein Sprachmodell für die Eingabe auswählen', + autoSend: 'Automatisches Senden', + }, + voicePlay: { + label: 'Sprachausgabe', + placeholder: 'Bitte ein Sprachsynthesemodell auswählen', + requiredMessage: 'Bitte ein Modell für die Sprachausgabe auswählen', + autoPlay: 'Automatische Wiedergabe', + browser: 'Wiedergabe im Browser (kostenlos)', + tts: 'TTS-Modell', + listeningTest: 'Vorschau', + }, + reasoningContent: { + label: 'Ausgabe – Denkprozess', + tooltip: + 'Bitte das Denk-Label basierend auf der Modellausgabe festlegen. Der Inhalt zwischen den Labels wird als Denkprozess erkannt.', + start: 'Start', + end: 'Ende', + }, + mcp_output_enable: 'Ausgabe MCP/Tool-Ausführungsprozess', + }, + generateDialog: { + label: 'Generieren', + generatePrompt: 'Prompt generieren', + placeholder: 'Bitte das Thema des Prompts eingeben', + title: 'Der Prompt wird hier angezeigt', + remake: 'Neu generieren', + stop: 'Generierung stoppen', + continue: 'Weiter generieren', + replace: 'Ersetzen', + exit: 'Sind Sie sicher, dass Sie beenden und den von der AI erzeugten Inhalt verwerfen möchten?', + loading: 'Wird generiert...', + }, + dialog: { + addKnowledge: 'Verknüpftes Wissen hinzufügen', + addKnowledgePlaceholder: 'Das ausgewählte Wissen muss dasselbe Embedding-Modell verwenden', + selectSearchMode: 'Suchmodus auswählen', + vectorSearch: 'Vektorsuche', + vectorSearchTooltip: + 'Die Vektorsuche basiert auf Distanzberechnungen zwischen Vektoren und eignet sich für große Datenmengen im Wissen.', + fullTextSearch: 'Volltextsuche', + fullTextSearchTooltip: + 'Die Volltextsuche basiert auf Textähnlichkeit und eignet sich für kleine Datenmengen im Wissen.', + hybridSearch: 'Hybridsuche', + hybridSearchTooltip: + 'Die Hybridsuche kombiniert Vektor- und Textähnlichkeit und eignet sich für mittlere Datenmengen im Wissen.', + similarityThreshold: 'Ähnlichkeit höher als', + similarityTooltip: 'Je höher die Ähnlichkeit, desto stärker die Korrelation.', + topReferences: 'Top-N-Segmente', + maxCharacters: 'Maximale Zeichen pro Referenz', + noReferencesAction: 'Wenn keine Wissensreferenzen vorhanden sind', + continueQuestioning: 'Weitere Fragen an das AI-Modell stellen', + provideAnswer: 'Antwortinhalt festlegen', + designated_answer: + 'Hallo, ich bin der XXX-Assistent. Mein Wissen enthält nur Informationen zu XXX-Produkten. Bitte formulieren Sie Ihre Frage um.', + defaultPrompt1: + "Der Inhalt in den Klammern () stellt die Frage des Benutzers dar. Bitte ergänzen Sie basierend auf dem Kontext die Benutzerfrage ({question}). Die Ausgabe soll eine vollständige Frage enthalten und diese in das", + defaultPrompt2: 'Tag einfügen', + }, + applicationAccess: { + title: 'APP-Zugriff', + wecom: 'WeCom', + wecomTip: 'Intelligente WeCom-APP erstellen', + wecomBot: 'WeCom-Bot', + wecomBotTip: 'Intelligenten WeCom-Bot erstellen', + dingtalk: 'DingTalk', + dingtalkTip: 'Intelligente DingTalk-APP erstellen', + wechat: 'WeChat', + wechatTip: 'Intelligente WeChat-APP erstellen', + lark: 'Lark', + larkTip: 'Intelligente Lark-APP erstellen', + setting: 'Einstellungen', + callback: 'Callback-Adresse', + callbackTip: 'Bitte die Callback-Adresse ausfüllen', + wecomPlatform: 'WeCom Open Platform', + wechatPlatform: 'WeChat Open Platform', + dingtalkPlatform: 'DingTalk Open Platform', + larkPlatform: 'Lark Open Platform', + slack: 'Slack', + slackTip: 'Intelligente Slack-APP erstellen', + wecomSetting: { + title: 'WeCom-Konfiguration', + cropId: 'Crop ID', + cropIdPlaceholder: 'Bitte Crop ID eingeben', + agentIdPlaceholder: 'Bitte Agent ID eingeben', + secretPlaceholder: 'Bitte Secret eingeben', + tokenPlaceholder: 'Bitte Token eingeben', + encodingAesKeyPlaceholder: 'Bitte EncodingAESKey eingeben', + authenticationSuccessful: 'Erfolgreich', + urlInfo: + '-APP-Verwaltung → Selbst erstellt → Erstellte APP → Nachrichten empfangen → „URL“ für API festlegen', + }, + dingtalkSetting: { + title: 'DingTalk-Konfiguration', + clientIdPlaceholder: 'Bitte Client ID eingeben', + clientSecretPlaceholder: 'Bitte Client Secret eingeben', + urlInfo: + '-Auf der Bot-Seite den „Nachrichtenempfangsmodus“ auf HTTP stellen und die obige URL in „Nachrichtenempfangsadresse“ einfügen', + }, + wechatSetting: { + title: 'WeChat-Konfiguration', + appId: 'APP ID', + appIdPlaceholder: 'Bitte APP ID eingeben', + appSecret: 'APP SECRET', + appSecretPlaceholder: 'Bitte APP SECRET eingeben', + token: 'TOKEN', + tokenPlaceholder: 'Bitte TOKEN eingeben', + aesKey: 'Nachrichtenverschlüsselungsschlüssel', + aesKeyPlaceholder: 'Bitte den Nachrichtenverschlüsselungsschlüssel eingeben', + urlInfo: + '-Einstellungen und Entwicklung → Grundkonfiguration → „Server Address URL“ in der Serverkonfiguration', + }, + wecomBotSetting: { + title: 'WeCom-Bot-Konfiguration', + urlInfo: '-Verwaltungstools → Intelligenter Bot → Bot erstellen → API-Modus „URL“ festlegen', + }, + larkSetting: { + title: 'Lark-Konfiguration', + appIdPlaceholder: 'Bitte APP ID eingeben', + appSecretPlaceholder: 'Bitte APP Secret eingeben', + verificationTokenPlaceholder: 'Bitte Verifikationstoken eingeben', + urlInfo: + '-Ereignisse und Rückrufe → Ereigniskonfiguration → „Anfrageadresse“ der Abonnementmethode konfigurieren', + }, + slackSetting: { + title: 'Slack-Konfiguration', + signingSecretPlaceholder: 'Bitte Signing Secret eingeben', + botUserTokenPlaceholder: 'Bitte Bot User Token eingeben', + }, + copyUrl: 'Link kopieren und einfügen', + }, + hitTest: { + title: 'Retrieval-Test', + text: 'Testen Sie die Trefferwirkung des Wissens basierend auf der angegebenen Suchanfrage.', + emptyMessage1: 'Ergebnisse des Retrieval-Tests werden hier angezeigt', + emptyMessage2: 'Keine passenden Abschnitte gefunden', + }, + publishTime: 'Veröffentlichungszeit', +} diff --git a/ui/src/locales/lang/de_DE/views/chat-log.ts b/ui/src/locales/lang/de_DE/views/chat-log.ts new file mode 100644 index 00000000000..bd034ac1417 --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/chat-log.ts @@ -0,0 +1,42 @@ +export default { + title: 'Chat-Protokolle', + delete: { + confirmTitle: 'Löschung der Frage bestätigen:', + confirmMessage1: 'Das Löschen dieser Frage hebt die Verknüpfung von', + confirmMessage2: 'Segmenten auf. Bitte gehen Sie vorsichtig vor.' + }, + buttons: { + clearStrategy: 'Bereinigungsstrategie', + prev: 'Zurück', + next: 'Weiter' + }, + table: { + abstract: 'Titel', + username: 'Benutzer', + chat_record_count: 'Gesamtzahl der Nachrichten', + user: 'Benutzer', + feedback: { + label: 'Benutzerfeedback', + star: 'Zustimmen', + trample: 'Ablehnen' + }, + mark: 'Markierungen', + recenTimes: 'Letzte Chat-Zeit' + }, + addToKnowledge: 'Zum Wissen hinzufügen', + daysText: 'Tage zuvor', + selectKnowledge: 'Wissen auswählen', + selectKnowledgePlaceholder: 'Bitte ein Wissen auswählen', + saveToDocument: 'In Dokument speichern', + documentPlaceholder: 'Bitte ein Dokument auswählen', + editContent: 'Inhalt bearbeiten', + editMark: 'Label bearbeiten', + form: { + content: { + placeholder: 'Bitte den Inhalt eingeben' + }, + title: { + placeholder: 'Bitte einen Titel für den aktuellen Inhalt zur Verwaltung und Anzeige festlegen' + } + } +} diff --git a/ui/src/locales/lang/de_DE/views/chat-user.ts b/ui/src/locales/lang/de_DE/views/chat-user.ts new file mode 100644 index 00000000000..d2f8af937de --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/chat-user.ts @@ -0,0 +1,32 @@ +export default { + title: 'Chat-Benutzer', + syncUsers: 'Benutzer synchronisieren', + syncUsersTip: 'Nur neu hinzugefügte Benutzer synchronisieren', + setUserGroups: 'Benutzergruppen konfigurieren', + knowledgeTitleTip: + 'Diese Konfiguration tritt erst in Kraft, nachdem die Chat-Benutzer-Authentifizierung in der zugehörigen Anwendung aktiviert wurde.', + applicationTitleTip: + 'Diese Konfiguration erfordert, dass die Anmeldeauthentifizierung in der Anwendung aktiviert ist.', + autoAuthorization: 'Automatische Autorisierung', + authorization: 'Autorisierung', + batchDeleteUser: 'Ausgewählte {count} Benutzer löschen?', + settingMethod: 'Konfigurationsmethode', + append: 'Anhängen', + group: { + title: 'Benutzergruppen', + name: 'Name der Benutzergruppe', + requiredMessage: 'Bitte Benutzergruppe auswählen', + usernameOrName: 'Benutzername/Name', + delete: { + confirmTitle: 'Löschen der Benutzergruppe bestätigen:', + confirmMessage: + 'Alle Mitglieder dieser Gruppe werden nach dem Löschen entfernt. Bitte vorsichtig fortfahren!', + }, + batchDeleteMember: 'Ausgewählte {count} Mitglieder entfernen?', + }, + syncMessage: { + title: '{count} Benutzer erfolgreich synchronisiert', + usernameExist: 'Die folgenden Benutzernamen existieren bereits:', + nicknameExist: 'Die folgenden Spitznamen existieren bereits:', + }, +} diff --git a/ui/src/locales/lang/de_DE/views/document.ts b/ui/src/locales/lang/de_DE/views/document.ts new file mode 100644 index 00000000000..0ead4ebe09d --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/document.ts @@ -0,0 +1,191 @@ +export default { + uploadDocument: 'Dokument hochladen', + importDocument: 'Dokument importieren', + syncDocument: 'Dokument synchronisieren', + items: 'Einträge', + migrateDocument: 'Migrieren nach', + searchBar: { + placeholder: 'Nach Dokumentnamen suchen', + }, + setting: { + migration: 'Verschieben', + cancelGenerateQuestion: 'Fragen-Generierung abbrechen', + cancelVectorization: 'Vektorisierung abbrechen', + cancelGenerate: 'Generierung abbrechen', + export: 'Exportieren nach', + download: 'Herunterladen', + }, + + tip: { + saveMessage: 'Aktuelle Änderungen wurden nicht gespeichert. Möchten Sie den Vorgang wirklich beenden?', + cancelSuccess: 'Erfolgreich', + sendMessage: 'Erfolgreich', + vectorizationSuccess: 'Erfolgreich', + nameMessage: 'Dokumentname darf nicht leer sein!', + importMessage: 'Erfolgreich', + migrationSuccess: 'Erfolgreich', + fileLimitCountTip1: 'Maximaler Upload pro Vorgang:', + fileLimitCountTip2: 'Dateien', + fileLimitSizeTip1: 'jede Datei darf nicht größer sein als', + }, + upload: { + selectFile: 'Datei auswählen', + selectFiles: 'Ordner auswählen', + uploadMessage: 'Dateien hierher ziehen, um sie hochzuladen oder', + formats: 'Unterstützte Formate:', + requiredMessage: 'Bitte eine Datei hochladen', + errorMessage1: 'Die Dateigröße überschreitet 100 MB', + errorMessage2: 'Nicht unterstütztes Dateiformat', + errorMessage3: 'Datei darf nicht leer sein', + errorMessage4: 'Es können maximal 50 Dateien gleichzeitig hochgeladen werden', + template: 'Vorlage', + download: 'Herunterladen', + }, + + fileType: { + txt: { + label: 'Textdatei', + tip1: '1. Es wird empfohlen, Segmentierungsmarkierungen im Dokument vor dem Hochladen zu standardisieren.', + tip2: '2. Bis zu 50 Dateien können gleichzeitig hochgeladen werden, wobei jede Datei 100 MB nicht überschreiten darf.', + }, + table: { + label: 'Tabelle', + tip1: '1. Klicken Sie, um die entsprechende Vorlage herunterzuladen und die Informationen zu vervollständigen:', + tip2: '2. Die erste Zeile muss Spaltenüberschriften enthalten, die aussagekräftige Begriffe darstellen. Jeder Datensatz in der Tabelle wird als Segment behandelt.', + tip3: '3. Jedes Tabellenblatt in der hochgeladenen Datei wird als Dokument behandelt, wobei der Blattname als Dokumentname dient.', + tip4: '4. Bis zu 50 Dateien können gleichzeitig hochgeladen werden, wobei jede Datei 100 MB nicht überschreiten darf.', + }, + QA: { + label: 'QA-Paare', + tip1: '1. Klicken Sie, um die entsprechende Vorlage herunterzuladen und die Informationen zu vervollständigen:', + tip2: '2. Jedes Tabellenblatt in der hochgeladenen Datei wird als Dokument behandelt, wobei der Blattname als Dokumentname dient.', + tip3: '3. Bis zu 50 Dateien können gleichzeitig hochgeladen werden, wobei jede Datei 100 MB nicht überschreiten darf.', + }, + }, + setRules: { + title: { + setting: 'Segmentierungsregeln festlegen', + preview: 'Vorschau', + }, + intelligent: { + label: 'Automatische Segmentierung (empfohlen)', + text: 'Wenn Sie sich bei der Festlegung der Segmentierungsregeln unsicher sind, wird die automatische Segmentierung empfohlen.', + }, + advanced: { + label: 'Erweiterte Segmentierung', + text: 'Benutzer können Trennzeichen, Segmentlängen und Bereinigungsregeln gemäß Dokumentstandard selbst definieren.', + }, + patterns: { + label: 'Segment-Trennzeichen', + tooltip: + 'Rekursiv gemäß der gewählten Symbole in Reihenfolge trennen. Wenn das Ergebnis die Segmentlänge überschreitet, wird es auf diese Länge gekürzt.', + placeholder: 'Bitte auswählen', + }, + limit: { + label: 'Segmentlänge', + }, + with_filter: { + label: 'Automatische Bereinigung', + text: 'Doppelte Sonderzeichen, Leerzeichen, Leerzeilen und Tabulatoren entfernen.', + }, + checkedConnect: { + label: 'Beim Importieren von QA-Paaren mit Fragen einen Abschnitt „Verwandte Fragen“ hinzufügen.', + }, + }, + buttons: { + prev: 'Zurück', + next: 'Weiter', + import: 'Import starten', + preview: 'Anwenden', + }, + table: { + name: 'Dokumentname', + char_length: 'Zeichen', + paragraph: 'Segment', + all: 'Alle', + updateTime: 'Aktualisierungszeit', + }, + fileStatus: { + label: 'Dateistatus', + SUCCESS: 'Erfolgreich', + FAILURE: 'Fehlgeschlagen', + EMBEDDING: 'Indexierung', + PENDING: 'In Warteschlange', + GENERATE: 'Wird generiert', + SYNC: 'Wird synchronisiert', + REVOKE: 'Wird abgebrochen', + finish: 'Abgeschlossen', + }, + enableStatus: { + label: 'Status', + enable: 'Aktiviert', + close: 'Deaktiviert', + }, + sync: { + label: 'Synchronisieren', + confirmTitle: 'Dokumentensynchronisierung bestätigen?', + confirmMessage1: + 'Beim Synchronisieren werden vorhandene Daten gelöscht und neue Daten abgerufen. Bitte vorsichtig fortfahren.', + confirmMessage2: 'Synchronisierung nicht möglich – bitte zuerst die Dokument-URL festlegen.', + successMessage: 'Erfolgreich', + }, + delete: { + confirmTitle1: 'Batch-Löschung von', + confirmTitle2: 'Dokumenten bestätigen?', + confirmMessage: + 'Segmente innerhalb der ausgewählten Dokumente werden ebenfalls gelöscht. Bitte vorsichtig fortfahren.', + successMessage: 'Erfolgreich', + confirmTitle3: 'Löschen des Dokuments bestätigen:', + confirmMessage1: 'Unter diesem Dokument', + confirmMessage2: 'werden alle Segmente gelöscht. Bitte vorsichtig vorgehen.', + }, + form: { + source_url: { + label: 'Dokument-URL', + placeholder: 'Dokument-URL eingeben, eine pro Zeile. Falsche URLs führen zu Importfehlern.', + requiredMessage: 'Bitte eine Dokument-URL eingeben', + }, + selector: { + label: 'Selektor', + placeholder: 'Standard ist body; Sie können .classname / #idname / tagname eingeben', + }, + hit_handling_method: { + label: 'Abrufen-Antworten', + tooltip: 'Wenn der Benutzer eine Frage stellt, werden passende Segmente gemäß der festgelegten Methode behandelt.', + }, + similarity: { + label: 'Ähnlichkeit höher als', + placeholder: 'Segmentinhalt direkt zurückgeben', + requiredMessage: 'Bitte Ähnlichkeitswert eingeben', + }, + allow_download: { + label: 'Download in der Wissensbasisquelle erlauben', + } + }, + hitHandlingMethod: { + optimization: 'Modelloptimierung', + directly_return: 'Direkt antworten', + }, + movePosition: { + title: 'Position verschieben', + moveUp: 'Nach oben', + moveDown: 'Nach unten', + }, + generateQuestion: { + title: 'Fragen generieren', + successMessage: 'Erfolgreich', + tip1: 'Das {data} in der Eingabeaufforderung ist ein Platzhalter für segmentierte Inhalte, der beim Ausführen durch den tatsächlichen Inhalt ersetzt und an das AI-Modell gesendet wird.', + tip2: 'Das AI-Modell generiert relevante Fragen auf Basis des segmentierten Inhalts. Bitte platzieren Sie die generierten Fragen innerhalb der', + tip3: 'Tags, damit das System sie automatisch zuordnen kann.', + tip4: 'Das Ergebnis hängt vom gewählten Modell und der Eingabeaufforderung ab. Benutzer können Anpassungen vornehmen, um das beste Ergebnis zu erzielen.', + prompt1: + 'Inhalt: {data}\n\n Bitte fassen Sie den obigen Inhalt zusammen und erstellen Sie 5 Fragen auf Grundlage der Zusammenfassung.\nAntwortanforderungen:\n - Bitte nur Fragen ausgeben;\n - Jede Frage in', + prompt2: 'Tag setzen.', + }, + feishu: { + selectDocument: 'Dokument auswählen', + tip1: 'Nur Dokumente und Tabellen werden unterstützt. Dokumente werden anhand der Titel segmentiert, Tabellen werden vor der Segmentierung in Markdown-Format konvertiert.', + tip2: 'Vor dem Import wird empfohlen, Segmentierungsmarkierungen im Dokument zu standardisieren.', + allCheck: 'Alle auswählen', + }, +} diff --git a/ui/src/locales/lang/de_DE/views/index.ts b/ui/src/locales/lang/de_DE/views/index.ts new file mode 100644 index 00000000000..d5af697347c --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/index.ts @@ -0,0 +1,38 @@ +import login from './login' +import model from './model' +import knowledge from './knowledge' +import tool from './tool' +import document from './document' +import system from './system' +import userManage from './user-manage' +import role from './role' +import workspace from './workspace' +import application from './application' +import problem from './problem' +import applicationOverview from './application-overview' +import applicationWorkflow from './application-workflow' +import paragraph from './paragraph' +import chatLog from './chat-log' +import chatUser from './chat-user' +import operateLog from './operate-log' +import shared from './shared' +export default { + login, + model, + knowledge, + tool, + document, + system, + userManage, + role, + workspace, + application, + problem, + applicationOverview, + applicationWorkflow, + paragraph, + chatLog, + chatUser, + operateLog, + shared +} diff --git a/ui/src/locales/lang/de_DE/views/knowledge.ts b/ui/src/locales/lang/de_DE/views/knowledge.ts new file mode 100644 index 00000000000..a31bb4d0344 --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/knowledge.ts @@ -0,0 +1,96 @@ +export default { + title: 'Wissen', + relatedApplications: 'Verknüpfte App', + document_count: 'Dokumente', + relatedApp_count: 'Verknüpfte Apps', + searchBar: { + placeholder: 'Nach Name suchen', + }, + setting: { + vectorization: 'Vektorisierung', + sync: 'Synchronisieren', + }, + tip: { + professionalMessage: + 'Die Community Edition unterstützt bis zu 50 Wissenseinträge. Für mehr Wissenseinträge bitte auf die Professional Edition upgraden.', + syncSuccess: 'Synchronisierungsauftrag erfolgreich gesendet', + updateModeMessage: + 'Nach Änderung des Wissens-Vektormodells muss das Wissen erneut vektorisiert werden. Möchten Sie das Speichern fortsetzen?', + }, + delete: { + confirmTitle: 'Löschung des Wissens bestätigen:', + confirmMessage1: 'Dieses Wissen ist verknüpft mit', + confirmMessage2: 'APP. Das Löschen ist unwiderruflich. Bitte vorsichtig fortfahren.', + }, + knowledgeType: { + label: 'Typ', + generalKnowledge: 'Allgemeines Wissen', + webKnowledge: 'Web-Wissen', + larkKnowledge: 'Lark-Wissen', + yuqueKnowledge: 'Yuque-Wissen', + generalInfo: 'Lokale Dokumente hochladen', + webInfo: 'Textdaten von einer Website synchronisieren', + larkInfo: 'Wissen über Lark-Dokumente erstellen', + yuqueInfo: 'Wissen über Yuque-Dokumente erstellen', + createGeneralKnowledge: 'Allgemeines Wissen erstellen', + createWebKnowledge: 'Web-Wissen erstellen', + createLarkKnowledge: 'Lark-Wissen erstellen', + createYuqueKnowledge: 'Yuque-Wissen erstellen', + }, + form: { + knowledgeName: { + label: 'Name', + placeholder: 'Bitte den Wissensnamen eingeben', + requiredMessage: 'Bitte den Wissensnamen eingeben', + }, + knowledgeDescription: { + label: 'Beschreibung', + placeholder: + 'Beschreiben Sie den Inhalt des Wissens. Eine detaillierte Beschreibung hilft der AI, den Inhalt besser zu verstehen und die Genauigkeit der Abfrageergebnisse zu verbessern.', + requiredMessage: 'Bitte die Wissensbeschreibung eingeben', + }, + EmbeddingModel: { + label: 'Embedding Model', + placeholder: 'Bitte ein Embedding Model auswählen', + requiredMessage: 'Bitte das Embedding Model auswählen', + }, + + source_url: { + label: 'Web-Root-URL', + placeholder: 'Bitte die Web-Root-URL eingeben', + requiredMessage: 'Bitte die Web-Root-URL eingeben', + }, + selector: { + label: 'Selektor', + placeholder: 'Standard ist body; kann .classname / #idname / tagname enthalten', + }, + file_count_limit: { + label: 'Maximale Anzahl gleichzeitig hochgeladener Dateien', + }, + file_size_limit: { + label: 'Maximale Dateigröße pro Dokument (MB)', + placeholder: 'Empfohlen entsprechend der Serverkonfiguration, um Ausfälle zu vermeiden', + }, + }, + + ResultSuccess: { + title: 'Wissen erfolgreich erstellt', + paragraph: 'Segmente', + paragraph_count: 'Segmente', + documentList: 'Dokumentenliste', + loading: 'Importieren', + buttons: { + toKnowledge: 'Zur Wissensliste zurückkehren', + toDocument: 'Zum Dokument wechseln', + }, + }, + syncWeb: { + title: 'Wissen synchronisieren', + syncMethod: 'Synchronisierungsmethode', + replace: 'Ersetzen', + replaceText: 'Website-Dokumente erneut abrufen und lokale Wissensdokumente ersetzen', + complete: 'Vollständige Synchronisierung', + completeText: 'Alle lokalen Wissensdokumente löschen und Website-Dokumente erneut abrufen', + tip: 'Hinweis: Alle Synchronisierungen löschen bestehende Daten und rufen neue Daten ab. Bitte vorsichtig fortfahren.', + }, +} diff --git a/ui/src/locales/lang/de_DE/views/login.ts b/ui/src/locales/lang/de_DE/views/login.ts new file mode 100644 index 00000000000..a5b7553c0db --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/login.ts @@ -0,0 +1,61 @@ +export default { + title: 'Anmeldung', + loginForm: { + username: { + label: 'Benutzername', + placeholder: 'Bitte Benutzernamen eingeben', + requiredMessage: 'Bitte Benutzernamen eingeben', + lengthMessage: 'Die Länge muss zwischen 4 und 20 Zeichen liegen', + }, + password: { + label: 'Anmeldepasswort', + placeholder: 'Bitte Passwort eingeben', + requiredMessage: 'Bitte Passwort eingeben', + lengthMessage: 'Die Länge muss zwischen 6 und 20 Zeichen liegen', + }, + captcha: { + label: 'Verifizierungscode', + placeholder: 'Bitte Verifizierungscode eingeben', + requiredMessage: 'Bitte Verifizierungscode eingeben', + validatorMessage: 'Verifizierungscode ist falsch', + }, + new_password: { + label: 'Neues Passwort', + placeholder: 'Bitte neues Passwort eingeben', + requiredMessage: 'Bitte neues Passwort eingeben', + }, + re_password: { + label: 'Passwort bestätigen', + placeholder: 'Bitte Passwort bestätigen', + requiredMessage: 'Bitte Passwort bestätigen', + validatorMessage: 'Passwörter stimmen nicht überein', + }, + email: { + label: 'E-Mail', + placeholder: 'Bitte E-Mail-Adresse eingeben', + requiredMessage: 'Bitte E-Mail-Adresse eingeben', + validatorEmail: 'Bitte ein gültiges E-Mail-Format eingeben!', + }, + }, + jump_tip: 'Sie werden zur Authentifizierungsseite der Quelle weitergeleitet', + jump: 'Weiterleiten', + resetPassword: 'Passwort ändern', + forgotPassword: 'Passwort vergessen', + userRegister: 'Benutzerregistrierung', + buttons: { + login: 'Anmelden', + register: 'Registrieren', + backLogin: 'Zurück zur Anmeldung', + checkCode: 'Jetzt überprüfen', + }, + newPassword: 'Neues Passwort', + enterPassword: 'Bitte neues Passwort eingeben', + useEmail: 'E-Mail verwenden', + moreMethod: 'Weitere Anmeldemethoden', + verificationCode: { + placeholder: 'Bitte Verifizierungscode eingeben', + getVerificationCode: 'Verifizierungscode anfordern', + successMessage: 'Verifizierungscode erfolgreich gesendet', + resend: 'Erneut senden', + }, +} diff --git a/ui/src/locales/lang/de_DE/views/model.ts b/ui/src/locales/lang/de_DE/views/model.ts new file mode 100644 index 00000000000..4d5b5fb3be5 --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/model.ts @@ -0,0 +1,87 @@ +export default { + title: 'Modelle', + provider: 'Anbieter', + providerPlaceholder: 'Anbieter auswählen', + addModel: 'Modell hinzufügen', + + delete: { + confirmTitle: 'Modell löschen:', + confirmMessage: + 'Das Löschen dieses Modells wirkt sich auf derzeit verwendete Ressourcen aus. Bitte vorsichtig fortfahren.', + }, + tip: { + createSuccessMessage: 'Modell erfolgreich erstellt', + createErrorMessage: 'Fehler in den Basisinformationen vorhanden', + errorMessage: 'Variable existiert bereits: ', + emptyMessage1: 'Bitte zuerst den Modelltyp und das Basismodell in den Basisinformationen auswählen', + emptyMessage2: 'Das ausgewählte Modell unterstützt keine Parametereinstellungen', + updateSuccessMessage: 'Modell erfolgreich aktualisiert', + saveSuccessMessage: 'Modellparameter erfolgreich gespeichert', + downloadError: 'Download fehlgeschlagen', + noModel: 'Modell in Ollama nicht vorhanden', + }, + modelType: { + allModel: 'Alle Modelle', + publicModel: 'Öffentliche Modelle', + privateModel: 'Private Modelle', + LLM: 'LLM', + EMBEDDING: 'Embedding Model', + RERANKER: 'Rerank', + STT: 'Speech2Text', + TTS: 'TTS', + IMAGE: 'Vision Model', + TTI: 'Image Generation', + TTV: 'Text-to-Video', + ITV: 'Image-to-Video', + }, + modelForm: { + title: { + baseInfo: 'Basisinformationen', + advancedInfo: 'Erweiterte Einstellungen', + modelParams: 'Modellparameter', + paramSetting: 'Modellparametereinstellungen', + apiParamPassing: 'Schnittstellenparameter', + }, + modeName: { + label: 'Modellname', + placeholder: 'Einen Namen für das Basismodell festlegen', + tooltip: 'Benutzerdefinierter Modellname in MaxKB', + requiredMessage: 'Modellname darf nicht leer sein', + }, + permissionType: { + label: 'Berechtigung', + privateDesc: 'Nur für den aktuellen Benutzer verfügbar', + publicDesc: 'Für alle Benutzer verfügbar', + requiredMessage: 'Berechtigung darf nicht leer sein', + }, + model_type: { + label: 'Modelltyp', + placeholder: 'Modelltyp auswählen', + tooltip1: 'LLM: Inferenzmodell für AI-Chats in der APP.', + tooltip2: 'Embedding Model: Modell zur Vektorisierung von Dokumentinhalten im Wissen.', + tooltip3: 'Speech2Text: Modell zur Spracherkennung in der APP.', + tooltip4: 'TTS: Modell zur Sprachausgabe (Text-to-Speech) in der APP.', + tooltip5: + 'Rerank: Modell zur Neuordnung von Kandidatensegmenten bei der Multi-Route-Abfrage in fortgeschrittenen Orchestrierungs-APPs.', + tooltip6: + 'Vision Model: Visuelles Modell zur Bildinterpretation in fortgeschrittenen Orchestrierungs-APPs.', + tooltip7: + 'Image Generation: Visuelles Modell zur Bildgenerierung in fortgeschrittenen Orchestrierungs-APPs.', + tooltip8: + 'Text-to-Video: Visuelles Modell zur Text-zu-Video-Generierung in der APP.', + tooltip9: + 'Image-to-Video: Visuelles Modell zur Bild-zu-Video-Generierung in der APP.', + requiredMessage: 'Modelltyp darf nicht leer sein', + }, + base_model: { + label: 'Basismodell', + tooltip: 'Für Modelle, die nicht aufgelistet sind, den Modellnamen eingeben und Enter drücken', + placeholder: 'Basismodellnamen eingeben und Enter drücken, um hinzuzufügen', + requiredMessage: 'Basismodell darf nicht leer sein', + }, + }, + download: { + downloading: 'Wird heruntergeladen...', + cancelDownload: 'Download abbrechen', + }, +} diff --git a/ui/src/locales/lang/de_DE/views/operate-log.ts b/ui/src/locales/lang/de_DE/views/operate-log.ts new file mode 100644 index 00000000000..c181a3398d9 --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/operate-log.ts @@ -0,0 +1,30 @@ +export default { + title: 'Logdaten', + table: { + menu: { + label: 'Auswahl' + }, + operate: { + label: 'Verlauf' + }, + user: { + label: 'Benutzer' + }, + status: { + label: 'Status', + success: 'Erfolgreich', + fail: 'Fehlgeschlagen', + all: 'Alle' + }, + ip_address: { + label: 'IP-Adresse' + }, + opt: { + label: 'API-Details' + }, + operateTime: { + label: 'Verlaufszeit' + } + }, + close: 'Schließen' +} diff --git a/ui/src/locales/lang/de_DE/views/paragraph.ts b/ui/src/locales/lang/de_DE/views/paragraph.ts new file mode 100644 index 00000000000..3ff2fd4984d --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/paragraph.ts @@ -0,0 +1,33 @@ +export default { + title: 'Segment', + paragraph_count: 'Segmente', + editParagraph: 'Segment bearbeiten', + addParagraph: 'Segment hinzufügen', + prevAddParagraph: 'Segment darüber einfügen', + paragraphDetail: 'Segmentdetails', + character_count: 'Zeichen', + setting: { + batchSelected: 'Mehrfachauswahl', + cancelSelected: 'Auswahl aufheben', + }, + delete: { + confirmTitle: 'Löschung des Segments bestätigen:', + confirmMessage: 'Das Löschen kann nicht rückgängig gemacht werden. Bitte vorsichtig fortfahren.', + }, + relatedProblem: { + title: 'Verwandte Fragen', + placeholder: 'Bitte eine Frage auswählen', + }, + form: { + paragraphTitle: { + label: 'Titel', + placeholder: 'Bitte den Segmenttitel eingeben', + }, + content: { + label: 'Inhalt', + placeholder: 'Bitte den Segmentinhalt eingeben', + requiredMessage1: 'Bitte den Segmentinhalt eingeben', + requiredMessage2: 'Der Inhalt darf 100.000 Zeichen nicht überschreiten', + }, + }, +} diff --git a/ui/src/locales/lang/de_DE/views/problem.ts b/ui/src/locales/lang/de_DE/views/problem.ts new file mode 100644 index 00000000000..471f9fd5d61 --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/problem.ts @@ -0,0 +1,37 @@ +export default { + title: 'Fragen', + createProblem: 'Frage erstellen', + detailProblem: 'Fragedetails', + quickCreateProblem: 'Schnellerstellung', + quickCreateName: 'Frage', + tip: { + placeholder: 'Frage eingeben – mehrere Einträge möglich, eine pro Zeile.', + errorMessage: 'Frage darf nicht leer sein!', + requiredMessage: 'Bitte eine Frage eingeben', + relatedSuccess: 'Erfolgreich' + }, + + setting: { + batchDelete: 'Mehrfachlöschung', + cancelRelated: 'Verknüpfung aufheben' + }, + searchBar: { + placeholder: 'Nach Name suchen' + }, + table: { + paragraph_count: 'Verknüpfte Segmente', + updateTime: 'Aktualisierungszeit' + }, + delete: { + confirmTitle: 'Löschung der Frage bestätigen:', + confirmMessage1: 'Das Löschen dieser Frage hebt die Verknüpfung von', + confirmMessage2: 'Segmenten auf. Bitte vorsichtig fortfahren.' + }, + relateParagraph: { + title: 'Mit Segment verknüpfen', + selectDocument: 'Dokument auswählen', + placeholder: 'Nach Dokumentnamen suchen', + selectedParagraph: 'Ausgewählte Segmente', + count: 'Anzahl' + } +} diff --git a/ui/src/locales/lang/de_DE/views/role.ts b/ui/src/locales/lang/de_DE/views/role.ts new file mode 100644 index 00000000000..5626432dd9b --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/role.ts @@ -0,0 +1,30 @@ +export default { + title: 'Rollenverwaltung', + internalRole: 'Systemintegrierte Rollen', + customRole: 'Benutzerdefinierte Rollen', + systemAdmin: 'Systemadministrator', + workspaceAdmin: 'Workspace-Administrator', + user: 'Standardbenutzer', + roleName: 'Rollenname', + inheritingRole: 'Vererbte Rolle', + delete: { + confirmTitle: 'Löschen der Rolle bestätigen:', + confirmMessage: + 'Nach dem Löschen werden alle Mitglieder dieser Rolle entfernt. Bitte vorsichtig fortfahren.', + }, + permission: { + title: 'Berechtigungskonfiguration', + operationTarget: 'Ziel der Aktion', + moduleName: 'Modulname' + }, + member: { + title: 'Mitglieder', + add: 'Mitglied hinzufügen', + workspace: 'Workspace', + role: 'Rolle', + delete: { + button: 'Entfernen', + confirmTitle: 'Soll das Mitglied entfernt werden:', + } + } +} diff --git a/ui/src/locales/lang/de_DE/views/shared.ts b/ui/src/locales/lang/de_DE/views/shared.ts new file mode 100644 index 00000000000..a788fd9730e --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/shared.ts @@ -0,0 +1,14 @@ +export default { + title: 'Freigabe', + shared_resources: 'Freigegebene Ressourcen', + shared_tool: 'Freigegebenes Tool', + shared_model: 'Freigegebenes Modell', + shared_knowledge: 'Freigegebenes Wissen', + authorized_workspace: 'Workspace autorisieren', + authorized_tip: ' ', + select_workspace: 'Workspace auswählen', + allCheck: 'Alle auswählen', + BLACK_LIST: 'Blacklist', + WHITE_LIST: 'Whitelist', + type: 'Typ', +} diff --git a/ui/src/locales/lang/de_DE/views/system.ts b/ui/src/locales/lang/de_DE/views/system.ts new file mode 100644 index 00000000000..115b276dd24 --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/system.ts @@ -0,0 +1,140 @@ +export default { + title: 'System', + subTitle: 'Systemeinstellungen', + test: 'Verbindung testen', + testSuccess: 'Erfolgreich', + testFailed: 'Verbindungstest fehlgeschlagen', + password: 'Passwort', + authentication: { + title: 'Login-Authentifizierung', + ldap: { + title: 'LDAP', + address: 'LDAP-Adresse', + serverPlaceholder: 'Bitte LDAP-Adresse eingeben', + bindDN: 'Bind DN', + bindDNPlaceholder: 'Bitte Bind DN eingeben', + ou: 'Benutzer-OU', + ouPlaceholder: 'Bitte Benutzer-OU eingeben', + ldap_filter: 'Benutzerfilter', + ldap_filterPlaceholder: 'Bitte Benutzerfilter eingeben', + ldap_mapping: 'LDAP-Attributzuordnung', + ldap_mappingPlaceholder: 'Bitte LDAP-Attributzuordnung eingeben', + enableAuthentication: 'LDAP-Authentifizierung aktivieren', + }, + cas: { + title: 'CAS', + ldpUri: 'ldpUri', + ldpUriPlaceholder: 'Bitte ldpUri eingeben', + validateUrl: 'Validierungsadresse', + validateUrlPlaceholder: 'Bitte Validierungsadresse eingeben', + redirectUrl: 'Callback-Adresse', + redirectUrlPlaceholder: 'Bitte Callback-Adresse eingeben', + enableAuthentication: 'CAS-Authentifizierung aktivieren', + }, + oidc: { + title: 'OIDC', + authEndpoint: 'Auth-Endpunkt', + authEndpointPlaceholder: 'Bitte Auth-Endpunkt eingeben', + tokenEndpoint: 'Token-Endpunkt', + tokenEndpointPlaceholder: 'Bitte Token-Endpunkt eingeben', + userInfoEndpoint: 'Benutzerinformations-Endpunkt', + userInfoEndpointPlaceholder: 'Bitte Benutzerinformations-Endpunkt eingeben', + clientId: 'Client-ID', + clientIdPlaceholder: 'Bitte Client-ID eingeben', + scopePlaceholder: 'Bitte Scope eingeben', + clientSecret: 'Client-Secret', + clientSecretPlaceholder: 'Bitte Client-Secret eingeben', + logoutEndpoint: 'Logout-Endpunkt', + logoutEndpointPlaceholder: 'Bitte Logout-Endpunkt eingeben', + redirectUrl: 'Weiterleitungs-URL', + redirectUrlPlaceholder: 'Bitte Weiterleitungs-URL eingeben', + enableAuthentication: 'OIDC-Authentifizierung aktivieren', + }, + + oauth2: { + title: 'OAuth2', + authEndpoint: 'Auth-Endpunkt', + authEndpointPlaceholder: 'Bitte Auth-Endpunkt eingeben', + tokenEndpoint: 'Token-Endpunkt', + tokenEndpointPlaceholder: 'Bitte Token-Endpunkt eingeben', + userInfoEndpoint: 'Benutzerinformations-Endpunkt', + userInfoEndpointPlaceholder: 'Bitte Benutzerinformations-Endpunkt eingeben', + scope: 'Scope', + scopePlaceholder: 'Bitte Scope eingeben', + clientId: 'Client-ID', + clientIdPlaceholder: 'Bitte Client-ID eingeben', + clientSecret: 'Client-Secret', + clientSecretPlaceholder: 'Bitte Client-Secret eingeben', + redirectUrl: 'Weiterleitungs-URL', + redirectUrlPlaceholder: 'Bitte Weiterleitungs-URL eingeben', + filedMapping: 'Feldzuordnung', + filedMappingPlaceholder: 'Bitte Feldzuordnung eingeben', + enableAuthentication: 'OAuth2-Authentifizierung aktivieren', + }, + scanTheQRCode: { + title: 'QR-Code scannen', + wecom: 'WeCom', + dingtalk: 'DingTalk', + lark: 'Lark', + effective: 'Aktiv', + alreadyTurnedOn: 'Eingeschaltet', + notEnabled: 'Nicht aktiviert', + validate: 'Validieren', + validateSuccess: 'Erfolgreich', + validateFailed: 'Validierung fehlgeschlagen', + validateFailedTip: 'Bitte alle Pflichtfelder ausfüllen und sicherstellen, dass das Format korrekt ist', + appKeyPlaceholder: 'Bitte APP-Key eingeben', + appSecretPlaceholder: 'Bitte APP-Secret eingeben', + corpIdPlaceholder: 'Bitte Corp-ID eingeben', + agentIdPlaceholder: 'Bitte Agent-ID eingeben', + callbackWarning: 'Bitte eine gültige URL-Adresse eingeben', + larkQrCode: 'Lark QR-Code Login', + dingtalkQrCode: 'DingTalk QR-Code Login', + setting: 'Einstellung', + access: 'Zugriff', + }, + }, + email: { + title: 'E-Mail-Einstellungen', + smtpHost: 'SMTP-Host', + smtpHostPlaceholder: 'Bitte SMTP-Host eingeben', + smtpPort: 'SMTP-Port', + smtpPortPlaceholder: 'Bitte SMTP-Port eingeben', + smtpUser: 'SMTP-Benutzer', + smtpUserPlaceholder: 'Bitte SMTP-Benutzer eingeben', + sendEmail: 'E-Mail des Absenders', + sendEmailPlaceholder: 'Bitte die E-Mail des Absenders eingeben', + smtpPassword: 'SMTP-Passwort', + smtpPasswordPlaceholder: 'Bitte SMTP-Passwort eingeben', + enableSSL: 'SSL aktivieren (wenn der SMTP-Port 465 ist, sollte SSL normalerweise aktiviert werden)', + enableTLS: 'TLS aktivieren (wenn der SMTP-Port 587 ist, sollte TLS normalerweise aktiviert werden)', + }, + + resourceAuthorization: { + title: 'Ressourcenzugriff', + member: 'Mitglied', + permissionSetting: 'Berechtigungseinstellung', + setting: { + management: 'Verwaltung', + managementDesc: 'Kann diese Ressource löschen oder ändern', + check: 'Anzeigen', + checkDesc: 'Kann die Ressource nur anzeigen', + role: 'Benutzerrolle', + roleDesc: 'Autorisieren Sie Benutzer basierend auf ihren Rollen, um auf diese Ressource zuzugreifen', + notAuthorized: 'Nicht autorisiert', + configure: 'Berechtigung konfigurieren', + }, + }, + resource_management: { + label: 'Ressourcenverwaltung', + type: 'Typ', + management: 'Verwaltung', + }, + default_login: 'Standard-Login-Methode', + display_code: 'Einstellung des Login-Verifizierungscodes', + loginFailed: 'Login fehlgeschlagen', + loginFailedMessage: 'Verifizierungscode zweimal anzeigen', + display_codeTip: 'Wenn der Wert -1 ist, wird kein Verifizierungscode angezeigt', + time: 'Anzahl', + setting: 'Login-Einstellung', +} diff --git a/ui/src/locales/lang/de_DE/views/tool.ts b/ui/src/locales/lang/de_DE/views/tool.ts new file mode 100644 index 00000000000..cf66c0921c4 --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/tool.ts @@ -0,0 +1,101 @@ +export default { + title: 'Tool', + all: 'Alle', + createTool: 'Tool erstellen', + editTool: 'Tool bearbeiten', + createMcpTool: 'MCP erstellen', + editMcpTool: 'MCP bearbeiten', + copyTool: 'Tool kopieren', + importTool: 'Tool importieren', + settingTool: 'Tool konfigurieren', + mcpConfig: 'MCP-Servicekonfiguration', + toolStore: { + title: 'Tool Store', + createFromToolStore: 'Aus Tool Store erstellen', + internal: 'Im System integriert', + recommend: 'Empfohlen', + webSearch: 'Websuche', + databaseQuery: 'Datenbankabfrage', + image: 'Bild', + developer: 'Entwickler', + communication: 'Kommunikation', + searchResult: '{count} Suchergebnisse für', + confirmTip: 'Sind Sie sicher, dass Sie das Tool aktualisieren möchten: ', + updateStoreToolMessage: 'Das Aktualisieren von Tools kann sich auf verwendete Ressourcen auswirken. Bitte vorsichtig fortfahren.', + }, + searchBar: { + placeholder: 'Nach Toolnamen suchen', + }, + tip: { + saveMessage: 'Nicht gespeicherte Änderungen gehen verloren. Möchten Sie wirklich beenden?', + }, + delete: { + confirmTitle: 'Löschung des Tools bestätigen:', + confirmMessage: + 'Das Löschen dieses Tools führt zu Fehlern in APPs, die darauf verweisen, wenn sie abgefragt werden. Bitte vorsichtig fortfahren.', + }, + disabled: { + confirmTitle: 'Deaktivierung des Tools bestätigen:', + confirmMessage: + 'Das Deaktivieren dieses Tools führt zu Fehlern in APPs, die darauf verweisen, wenn sie abgefragt werden. Bitte vorsichtig fortfahren.', + }, + + form: { + toolName: { + label: 'Name', + name: 'Toolname', + placeholder: 'Bitte den Toolnamen eingeben', + requiredMessage: 'Bitte den Toolnamen eingeben', + }, + mcpName: { + label: 'Name', + name: 'MCP-Name', + placeholder: 'Bitte den MCP-Namen eingeben', + requiredMessage: 'Bitte den MCP-Namen eingeben', + }, + toolDescription: { + label: 'Beschreibung', + placeholder: 'Bitte eine Beschreibung des Tools eingeben', + }, + mcpDescription: { + label: 'Beschreibung', + placeholder: 'Bitte eine Beschreibung des MCP eingeben', + }, + paramName: { + label: 'Parametername', + placeholder: 'Bitte den Parameternamen eingeben', + requiredMessage: 'Bitte den Parameternamen eingeben', + }, + dataType: { + label: 'Datentyp', + }, + source: { + label: 'Quelle', + reference: 'Referenzparameter', + }, + required: { + label: 'Erforderlich', + }, + param: { + paramInfo1: 'Wird angezeigt, wenn das Tool verwendet wird', + paramInfo2: 'Wird nicht angezeigt, wenn das Tool verwendet wird', + code: 'Inhalt (Python)', + selectPlaceholder: 'Bitte Parameter auswählen', + inputPlaceholder: 'Bitte Parameterwerte eingeben', + }, + mcp: { + title: 'MCP-Service', + label: 'MCP-Serverkonfiguration', + placeholder: 'Bitte MCP-Serverkonfiguration eingeben', + tip: 'Unterstützt nur SSE- und Streamable-HTTP-Aufrufmethoden', + requiredMessage: 'Bitte MCP-Serverkonfiguration eingeben', + }, + debug: { + run: 'Ausführen', + output: 'Ausgabe', + runResult: 'Ausführungsergebnis', + runSuccess: 'Erfolgreich', + runFailed: 'Fehlgeschlagen', + }, + }, +} diff --git a/ui/src/locales/lang/de_DE/views/user-manage.ts b/ui/src/locales/lang/de_DE/views/user-manage.ts new file mode 100644 index 00000000000..3351d090445 --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/user-manage.ts @@ -0,0 +1,45 @@ +export default { + title: 'Benutzer', + createUser: 'Benutzer erstellen', + editUser: 'Benutzer bearbeiten', + roleSetting: 'Rollen festlegen', + addRole: 'Rolle hinzufügen', + setting: { + updatePwd: 'Passwort ändern', + }, + tip: { + professionalMessage: + 'Die Community Edition unterstützt bis zu 2 Benutzer. Für weitere Benutzer bitte auf die Professional Edition upgraden.', + updatePwdSuccess: 'Benutzerpasswort wurde erfolgreich aktualisiert', + }, + delete: { + confirmTitle: 'Löschung des Benutzers bestätigen:', + confirmMessage: + 'Das Löschen dieses Benutzers entfernt nicht die von ihm erstellten Ressourcen (APP, Wissen, Modelle). Bitte vorsichtig fortfahren.', + }, + disabled: { + confirmTitle: 'Deaktivierung des Tools bestätigen:', + confirmMessage: + 'Das Deaktivieren dieses Tools führt zu Fehlern, wenn darauf verweisende APPs abgefragt werden. Bitte vorsichtig fortfahren.', + }, + userForm: { + nick_name: { + label: 'Name', + placeholder: 'Bitte Namen eingeben', + lengthMessage: 'Die Länge muss zwischen 2 und 20 Zeichen liegen', + }, + phone: { + label: 'Telefon', + placeholder: 'Bitte Telefonnummer eingeben', + invalidMessage: 'Ungültiges Telefonnummernformat', + }, + }, + source: { + label: 'Benutzerquelle', + local: 'Systembenutzer', + localCreate: 'Lokal erstellt', + wecom: 'WeCom', + lark: 'Lark', + dingtalk: 'DingTalk', + }, +} diff --git a/ui/src/locales/lang/de_DE/views/workspace.ts b/ui/src/locales/lang/de_DE/views/workspace.ts new file mode 100644 index 00000000000..ac31e229050 --- /dev/null +++ b/ui/src/locales/lang/de_DE/views/workspace.ts @@ -0,0 +1,18 @@ +export default { + title: 'Arbeitsbereich', + list: 'Arbeitsbereichsliste', + name: 'Name des Arbeitsbereichs', + toWorkspace: 'Zum Arbeitsbereich zurückkehren', + delete: { + confirmTitle: 'Löschung des Arbeitsbereichs bestätigen:', + confirmContent: + 'Nach der Löschung werden alle Mitglieder dieses Bereichs entfernt. Bitte vorsichtig fortfahren.', + confirmContentNotDelete: + 'Dieser Arbeitsbereich enthält Wissensdatenbank- und Anwendungsressourcen und kann nicht gelöscht werden.', + }, + member: { + delete: { + confirmTitle: 'Entfernung des Mitglieds bestätigen:', + }, + }, +}