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:',
+ },
+ },
+}