Files
Hermes-ui/packages/client/src/i18n/locales/de.ts
T

1268 lines
55 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export default {
// Login
login: {
title: 'Hermes Web UI',
description: 'Geben Sie Ihren Zugangs-Token ein, um fortzufahren. Finden Sie ihn in den Server-Startprotokollen.',
placeholder: 'Zugangs-Token',
submit: 'Anmelden',
tokenRequired: 'Bitte geben Sie Ihren Zugangs-Token ein',
invalidToken: 'Ungultiger Token',
connectionFailed: 'Verbindung zum Server nicht moglich',
passwordLogin: 'Passwort',
tokenLogin: 'Token',
usernamePlaceholder: 'Benutzername',
passwordPlaceholder: 'Passwort',
credentialsRequired: 'Bitte Benutzername und Passwort eingeben',
invalidCredentials: 'Ungultiger Benutzername oder Passwort',
tooManyAttempts: 'Zu viele fehlgeschlagene Versuche, bitte versuchen Sie es spater erneut',
passwordMismatch: 'Passworter stimmen nicht uberein',
passwordTooShort: 'Passwort muss mindestens 6 Zeichen lang sein',
setupSuccess: 'Passwort-Login erfolgreich konfiguriert',
passwordChanged: 'Passwort erfolgreich geandert',
passwordRemoved: 'Passwort-Login entfernt',
setupPassword: 'Passwort-Login einrichten',
changePassword: 'Passwort andern',
changeUsername: 'Benutzername andern',
removePasswordLogin: 'Entfernen',
username: 'Benutzername',
currentPassword: 'Aktuelles Passwort',
newPassword: 'Neues Passwort',
confirmPassword: 'Passwort bestatigen',
newUsername: 'Neuer Benutzername',
usernameChanged: 'Benutzername erfolgreich geandert',
usernameTooShort: 'Benutzername muss mindestens 2 Zeichen lang sein',
setupDescription: 'Richten Sie Benutzername und Passwort fur bequemes Login ein. Der Zugangs-Token bleibt als Backup verfugbar.',
removeConfirm: 'Mochten Sie das Passwort-Login wirklich entfernen? Sie mussen dann den Zugangs-Token verwenden.',
passwordLoginNotConfigured: 'Passwort-Login ist nicht konfiguriert',
passwordLoginConfigured: 'Passwort-Login aktiviert ({username})',
},
// Common
common: {
loading: 'Laden...',
cancel: 'Abbrechen',
retry: 'Erneutern',
delete: 'Loschen',
edit: 'Bearbeiten',
save: 'Speichern',
saved: 'Gespeichert',
update: 'Aktualisieren',
create: 'Erstellen',
saveFailed: 'Speichern fehlgeschlagen',
deleteFailed: 'Loschen fehlgeschlagen',
ok: 'OK',
copied: 'Kopiert',
copy: 'Kopieren',
noData: 'Keine Daten',
fetch: 'Abrufen',
add: 'Hinzufugen',
enable: 'Aktivieren',
disable: 'Deaktivieren',
configured: 'Konfiguriert',
notConfigured: 'Nicht konfiguriert',
confirm: 'Bestatigen',
expand: 'Aufklappen',
collapse: 'Zuklappen',
stop: 'Stoppen',
start: 'Starten',
expired: 'Abgelaufen',
},
// Sidebar
sidebar: {
chat: 'Chat',
search: 'Suche',
apiRelay: 'API-Relay',
history: 'Verlauf',
jobs: 'Geplante Aufgaben',
models: 'Modelle',
profiles: 'Profile',
plugins: 'Plugins',
skills: 'Fahigkeiten',
memory: 'Gedachtnis',
logs: 'Protokolle',
usage: 'Nutzung',
skillsUsage: 'Skill-Nutzung',
channels: 'Kanale',
terminal: 'Konsole',
files: 'Dateien',
groupChat: 'Gruppenchat',
groupConversation: 'Konversation',
groupConversationShort: 'Konv',
groupAgent: 'Agent',
groupAgentShort: 'Agent',
groupSystem: 'System',
groupSystemShort: 'Sys',
groupMonitoring: 'Überwachung',
groupMonitoringShort: 'Überw.',
settings: 'Einstellungen',
connected: 'Verbunden',
disconnected: 'Getrennt',
updateTip: 'Fuhren Sie "hermes-web-ui update" im Terminal aus, um zu aktualisieren',
updateVersion: 'Aktualisieren auf v{version}',
reloadClientVersion: 'Für v{version} neu laden',
updating: 'Aktualisierung...',
updateSuccess: 'Aktualisierung erfolgreich. Bitte aktualisieren Sie die Seite in Kurze. Wenn der Dienst langere Zeit nicht startet, starten Sie ihn manuell.',
updateFailed: 'Aktualisierung fehlgeschlagen',
logout: 'Abmelden',
nodeVersionWarning: 'Node.js v{version} erkannt. Bitte aktualisieren Sie auf Version 23 oder neuer.',
changelog: 'Anderungsprotokoll',
noChangelog: 'Kein Anderungsprotokoll verfugbar',
kanban: 'Kanban',
groupTools: 'Werkzeuge',
groupPlatform: 'Plattform',
gateways: 'Gateways',
expand: 'Menü ausklappen',
collapse: 'Menü einklappen',
},
// Drawer
drawer: {
terminal: 'Konsole',
files: 'Arbeitsbereich',
},
// Chat
chat: {
contextRemaining: 'übrig',
contextClickToEdit: 'Klicken zum Bearbeiten der Kontextlänge',
contextEditTitle: 'Kontextlänge bearbeiten',
contextEditDesc: 'Kontextlängenlimit für aktuelles Modell festlegen (in Tokens)',
contextEditPlaceholder: 'Kontextlänge eingeben',
contextEditHint: 'Häufige Werte: 200k (Claude), 128k (GPT-4), 32k (GPT-3.5)',
contextEditSave: 'Speichern',
contextEditCancel: 'Abbrechen',
contextEditInvalid: 'Bitte geben Sie eine gültige Kontextlänge ein',
contextEditSuccess: 'Kontextlänge aktualisiert',
contextEditFailed: 'Aktualisierung fehlgeschlagen',
emptyState: 'Starten Sie eine Konversation mit Hermes Agent',
outlineTitle: 'Konversationsübersicht',
outlineEmpty: 'Kein Konversationsinhalt',
outlineUserQuestion: 'Benutzerfrage',
inputPlaceholder: 'Nachricht eingeben... (Enter zum Senden, Shift+Enter fur neue Zeile)',
slashCommandArgs: {
message: '<Nachricht>',
title: '<Titel>',
text: '<Text>',
},
slashCommands: {
usage: 'Nutzung der aktuellen Sitzung berechnen',
status: 'Sitzungsstatus und Warteschlange anzeigen',
abort: 'Aktiven Bridge-Lauf stoppen',
queue: 'Nachricht hinter dem aktiven Lauf einreihen',
clear: 'Aktuelle Anzeige leeren',
clearHistory: 'Gespeicherten Nachrichtenverlauf dieser Sitzung löschen',
title: 'Diese Sitzung umbenennen',
compress: 'Kontextkomprimierung im Leerlauf ausführen',
steer: 'Steuertext an den aktiven Bridge-Lauf senden',
destroy: 'Bridge-Agent für diese Sitzung freigeben',
},
attachFiles: 'Dateien anhangen',
showToolCalls: 'Tool-Aufrufe anzeigen',
hideToolCalls: 'Tool-Aufrufe ausblenden',
messageQueue: 'Nachrichtenwarteschlange',
removeQueuedMessage: 'Nachricht aus Warteschlange entfernen',
stop: 'Stopp',
send: 'Senden',
contextUsed: 'Kontext verwendet:',
sessions: 'Sitzungen',
webUiSessions: 'Sitzungen',
allProfiles: 'Alle Profile',
profileMissingModelsTip: 'Profil "{profile}" hat keinen verfuegbaren Provider oder kein Modell fuer diese Sitzung',
sessionScopeHint: 'Chat zeigt nur Web-UI/API-Server-Sitzungen. CLI-, Telegram-, Discord-, Cron- und andere Kanal-Sitzungen sind schreibgeschützt im Verlauf.',
openHistory: 'Verlauf öffnen',
hermesHistory: 'Hermes-Verlauf',
historyScopeHint: 'Schreibgeschützte Hermes-Verlaufssitzungen des aktuellen Profils, nach Quelle gruppiert.',
noSessions: 'Keine Sitzungen',
newChat: 'Neuer Chat',
approvalKicker: 'Terminal-Berechtigung',
approvalTitle: 'Befehl vor dem Ausführen prüfen',
approvalAllowOnce: 'Einmal erlauben',
approvalAllowSession: 'Sitzung erlauben',
approvalAlways: 'Immer',
approvalDeny: 'Ablehnen',
deleteSession: 'Diese Sitzung loschen?',
toggleBatchMode: 'Batch-Auswahl',
selectAll: 'Alle auswählen',
confirmBatchDelete: '{count} ausgewählte Sitzungen löschen?',
batchDeleteSuccess: '{count} Sitzungen gelöscht',
batchDeletePartial: '{failed} Sitzungen konnten nicht gelöscht werden',
batchDeleteFailed: 'Batch-Löschung fehlgeschlagen',
sessionDeleted: 'Sitzung geloscht',
rename: 'Umbenennen',
pin: 'Anheften',
unpin: 'Lösen',
pinned: 'Angeheftet',
chatMode: 'Chatmodus',
liveMode: 'Live-Modus',
liveSessions: 'Live-Sitzungen',
recentBadge: 'Kürzlich',
linkedSessions: '{count} verknüpft',
noVisibleMessages: 'Keine für Menschen sichtbaren Nachrichten.',
monitorRoleUser: 'Benutzer',
monitorRoleAssistant: 'Assistent',
copySessionId: 'Sitzungs-ID kopieren',
export: 'Exportieren',
exportFull: 'Vollständiger Export (JSON)',
exportCompressed: 'Komprimierter Export (TXT)',
exportCompressing: 'Komprimiere Kontext, bitte warten...',
exportSuccess: 'Sitzung exportiert',
exportFailed: 'Export fehlgeschlagen',
renamed: 'Umbenannt',
renameFailed: 'Umbenennung fehlgeschlagen',
renameSession: 'Sitzung umbenennen',
sessionNotFound: 'Sitzung nicht gefunden',
enterNewTitle: 'Neuen Titel eingeben',
other: 'Sonstige',
runFailed: 'Ausfuhrung fehlgeschlagen',
error: 'Fehler',
tool: 'Werkzeug',
arguments: 'Argumente',
result: 'Ergebnis',
truncated: '... (abgeschnitten)',
executionDuration: 'Ausführungszeit', thinkingLabel: 'Denkprozess',
thinkingInProgress: 'Denkt…',
thinkingShow: 'Denkprozess anzeigen',
thinkingHide: 'Denkprozess ausblenden',
thinkingDuration: 'Beobachtet {duration}',
thinkingChars: '{count} Zeichen',
copyBubble: 'Nachricht kopieren',
copiedBubble: 'Nachricht kopiert',
copyFailed: 'Kopieren fehlgeschlagen',
playSpeech: 'Sprache abspielen',
pauseSpeech: 'Pausieren',
resumeSpeech: 'Fortsetzen',
stopSpeech: 'Stoppen',
speechNotSupported: 'Sprachwiedergabe in diesem Browser nicht unterstützt',
searchEnterHint: 'Enter zum Öffnen · Esc zum Schließen',
searchHint: 'Cmd/Ctrl+K',
searchScope: 'Suchbereich: nur lokale Web-UI-Sitzungsdatenbank; schreibgeschützte Hermes-Verlaufssitzungen sind nicht enthalten.',
searchFailed: 'Sitzungssuche fehlgeschlagen',
searchNoSnippet: 'Keine Vorschau verfügbar',
searchNoResults: 'Keine passenden Sitzungen',
searchRecent: 'Letzte Sitzung',
searchEmpty: 'Letzte Sitzungen',
searchPlaceholder: 'Sitzungen suchen...',
searchSubtitle: 'Nach Titel oder Nachrichteninhalt suchen',
searchTitle: 'Sitzungen suchen',
stopGateway: 'Gateway stoppen',
start: 'Starten',
workspaceSetFailed: 'Workspace konnte nicht festgelegt werden',
workspaceSet: 'Workspace festgelegt',
workspacePlaceholder: 'Projektpfad eingeben, z. B. /home/user/project',
workspace: 'Arbeitsbereich',
setWorkspaceTitle: 'Sitzungs-Workspace festlegen',
setWorkspace: 'Workspace festlegen',
modelSetFailed: 'Modell konnte nicht festgelegt werden',
modelSet: 'Modell festgelegt',
setModelTitle: 'Sitzungsmodell festlegen',
setModel: 'Modell festlegen',
newCliChat: 'Neue CLI',
cliEmptyState: 'CLI-Chat starten',
autoPlaySpeech: 'Sprache automatisch abspielen',
},
// Jobs
jobs: {
title: 'Geplante Aufgaben',
createJob: 'Aufgabe erstellen',
editJob: 'Aufgabe bearbeiten',
noJobs: 'Noch keine geplanten Aufgaben. Erstellen Sie eine, um zu beginnen.',
name: 'Name',
namePlaceholder: 'Aufgabenname',
schedule: 'Zeitplan (Cron-Ausdruck)',
schedulePlaceholder: 'z. B. 0 9 * * *',
quickPresets: 'Schnellvorgaben',
selectPreset: 'Vorgabe auswahlen...',
presetEveryMinute: 'Jede Minute',
presetEvery5Min: 'Alle 5 Minuten',
presetEveryHour: 'Jede Stunde',
presetEveryDay: 'Jeden Tag um 00:00',
presetEveryDay9: 'Jeden Tag um 09:00',
presetEveryMonday: 'Jeden Montag um 09:00',
presetEveryMonth: 'Am 1. jedes Monats um 09:00',
prompt: 'Eingabeaufforderung',
promptPlaceholder: 'Der auszufuhrende Prompt',
deliverTarget: 'Zustellziel',
origin: 'Herkunft',
local: 'Lokal',
repeatCount: 'Wiederholungsanzahl (optional)',
modelPlaceholder: 'Standardmodell',
repeatPlaceholder: 'Leer lassen fur unendlich',
jobCreated: 'Aufgabe erstellt',
jobUpdated: 'Aufgabe aktualisiert',
nameRequired: 'Name ist erforderlich',
scheduleRequired: 'Zeitplan ist erforderlich',
loadFailed: 'Laden der Aufgabe fehlgeschlagen',
jobPaused: 'Aufgabe pausiert',
jobResumed: 'Aufgabe fortgesetzt',
jobTriggered: 'Job ausgelost',
modelUpdated: 'Modell aktualisiert',
jobDeleted: 'Aufgabe geloscht',
status: {
running: 'Lauft',
paused: 'Pausiert',
disabled: 'Deaktiviert',
scheduled: 'Geplant',
},
info: {
model: 'Modell',
schedule: 'Zeitplan',
lastRun: 'Letzte Ausfuhrung',
nextRun: 'Nachste Ausfuhrung',
deliver: 'Zustellung',
repeat: 'Wiederholung',
},
action: {
pause: 'Pausieren',
pauseJob: 'Aufgabe pausieren',
resume: 'Fortsetzen',
resumeJob: 'Aufgabe fortsetzen',
runNow: 'Jetzt ausfuhren',
triggerImmediately: 'Sofort auslösen',
},
runHistory: {
title: 'Verlauf',
runs: 'Läufe',
noRuns: 'Kein Verlauf gefunden.',
},
},
// Skills
skills: {
title: 'Fahigkeiten',
searchPlaceholder: 'Fahigkeiten suchen...',
noMatch: 'Keine Fahigkeiten entsprechen Ihrer Suche',
noSkills: 'Keine Fahigkeiten gefunden',
backTo: 'Zuruck zu',
attachedFiles: 'Angehange Dateien',
loadFailed: 'Laden der Fahigkeit fehlgeschlagen',
fileLoadFailed: 'Laden der Datei fehlgeschlagen',
modified: 'Benutzerbearbeitet',
archived: 'Archiviert',
pinned: 'Angeheftet',
pin: 'Fahigkeit anheften',
unpin: 'Anheften aufheben',
pinFailed: 'Anheft-Status konnte nicht geandert werden',
toggleFailed: 'Aktivieren/Deaktivieren der Fahigkeit fehlgeschlagen',
source: {
builtin: 'Integriert',
hub: 'Hub',
local: 'Lokal',
},
},
// Plugins
plugins: {
title: 'Plugins',
refresh: 'Aktualisieren',
notice: 'Schreibgeschütztes Inventar erkennbarer Hermes-Plugin-Manifeste. Discovery-Metadaten werden gelesen, ohne Plugin-Code zu laden. Verwaltungsaktionen bleiben in v1 im CLI; Änderungen gelten für neue Hermes-Sitzungen.',
loadFailed: 'Plugins konnten nicht geladen werden',
commandCopied: 'Befehl kopiert',
searchPlaceholder: 'Key, Name, Beschreibung, Pfad suchen...',
source: 'Quelle',
kind: 'Typ',
statusTitle: 'Status',
configStatus: 'config: {status}',
notAvailable: 'n/a',
copyCommand: 'Befehl kopieren',
managedElsewhere: 'anderweitig verwaltet',
noMatch: 'Keine Plugins passen zu den aktuellen Filtern',
enabled: 'aktiviert',
disabled: 'deaktiviert',
summary: {
total: 'Gesamt',
active: 'Aktiviert / auto',
inactive: 'Inaktiv',
disabled: 'Deaktiviert',
providerManaged: 'Provider-verwaltet',
},
status: {
enabled: 'Aktiviert',
'auto-active': 'Auto-aktiv',
inactive: 'Inaktiv',
disabled: 'Deaktiviert',
'provider-managed': 'Provider-verwaltet',
},
statusLabel: {
enabled: 'Per Konfiguration aktiviert',
'auto-active': 'Auto-aktiv',
inactive: 'Inaktiv',
disabled: 'Deaktiviert',
'provider-managed': 'Provider-verwaltet',
},
configStatuses: {
enabled: 'aktiviert',
disabled: 'deaktiviert',
'not-enabled': 'nicht aktiviert',
auto: 'auto',
'provider-managed': 'provider-verwaltet',
},
table: {
plugin: 'Plugin',
status: 'Status',
source: 'Quelle',
kind: 'Typ',
capabilities: 'Fähigkeiten',
path: 'Pfad / Entry Point',
cli: 'CLI',
},
capabilities: {
tools: '{count} Tools',
hooks: '{count} Hooks',
env: '{count} env',
},
metadata: {
agentRoot: 'Agent-Stammverzeichnis',
python: 'Python',
scanCwd: 'Arbeitsverzeichnis scannen',
projectPlugins: 'Projekt-Plugins',
},
},
// Memory
memory: {
title: 'Gedachtnis',
refresh: 'Aktualisieren',
loadFailed: 'Laden des Gedachtnisses fehlgeschlagen',
myNotes: 'Meine Notizen',
noNotes: 'Noch keine Notizen.',
notesPlaceholder: 'Notizen schreiben...',
userProfile: 'Benutzerprofil',
noProfile: 'Noch kein Profil.',
profilePlaceholder: 'Profil schreiben...',
soul: 'Seele',
noSoul: 'Noch keine Seelenkonfiguration.',
soulPlaceholder: 'Seelenkonfiguration schreiben...',
},
// Models
models: {
title: 'Modelle',
addProvider: 'Anbieter hinzufugen',
providerType: 'Anbietertyp',
preset: 'Vorgabe',
custom: 'Benutzerdefiniert',
selectProvider: 'Anbieter auswahlen',
chooseProvider: 'Anbieter wahlen...',
name: 'Name',
autoGeneratedName: 'Automatisch aus Basis-URL generiert',
baseUrl: 'Basis-URL',
region: 'Region',
regionIntl: 'International',
regionCn: 'Festlandchina',
baseUrlPlaceholder: 'z. B. https://api.example.com/v1',
apiKey: 'API-Schlussel',
apiKeyPlaceholder: 'sk-...',
defaultModel: 'Standardmodell',
selectOrInput: 'Modell auswählen oder eingeben...',
selectModel: 'Modell auswahlen...',
providerAdded: 'Anbieter hinzugefugt',
providerDeleted: 'Anbieter geloscht',
deleteProvider: 'Anbieter loschen',
deleteConfirm: 'Mochten Sie "{name}" wirklich loschen?',
codexLoginTitle: 'OpenAI Codex Anmeldung',
codexWaiting: 'Geben Sie diesen Code auf der Autorisierungsseite ein, um sich anzumelden:',
codexCopyCode: 'Code kopiert',
codexOpenLink: 'Autorisierungsseite öffnen',
codexApproved: 'Anmeldung erfolgreich',
codexExpired: 'Die Autorisierung ist abgelaufen. Bitte versuchen Sie es erneut.',
nousLoginTitle: 'Nous-Portal-Anmeldung',
nousWaiting: 'Geben Sie diesen Code auf der Autorisierungsseite ein:',
nousCopyCode: 'Code kopiert',
nousOpenLink: 'Autorisierungsseite öffnen',
nousApproved: 'Login erfolgreich',
nousDenied: 'Autorisierung wurde abgelehnt',
nousExpired: 'Autorisierung abgelaufen',
copilotLoginTitle: 'GitHub Copilot Anmeldung',
copilotWaiting: 'Öffnen Sie GitHub und geben Sie den unten angezeigten Gerätecode ein. Das Fenster schließt sich automatisch nach Genehmigung.',
copilotCopyCode: 'Code kopiert',
copilotOpenLink: 'GitHub-Autorisierungsseite öffnen',
copilotApproved: 'Anmeldung erfolgreich!',
copilotDenied: 'Autorisierung abgelehnt.',
copilotExpired: 'Der Autorisierungslink ist abgelaufen. Bitte erneut versuchen.',
copilotAddDetectedTitle: 'GitHub Copilot erkannt',
copilotAddDetected: 'Auf diesem Rechner wurde ein GitHub Copilot OAuth-Token erkannt. Klicken Sie auf „Hinzufügen", um Copilot in Hermes zu aktivieren.',
copilotAddSourceEnv: 'Quelle: ~/.hermes/.env (COPILOT_GITHUB_TOKEN)',
copilotAddSourceGhCli: 'Quelle: gh CLI (gh auth token)',
copilotAddSourceAppsJson: 'Quelle: VS Code Copilot-Erweiterung (apps.json)',
copilotDeleteHintEnv: 'Dies löscht COPILOT_GITHUB_TOKEN in ~/.hermes/.env. Andere Tools sind nicht betroffen.',
copilotDeleteHintGhCli: 'Copilot wird aus Hermes ausgeblendet. Ihre gh CLI-Anmeldung bleibt erhalten — `gh auth status` zeigt weiterhin als angemeldet.',
copilotDeleteHintAppsJson: 'Copilot wird aus Hermes ausgeblendet. Ihre VS Code Copilot-Erweiterung bleibt angemeldet.',
customBadge: 'BENUTZERDEF.',
previewBadge: 'VORSCHAU',
disabledBadge: 'NICHT VERFÜGBAR',
disabledTooltip: "Dieses Modell ist für Ihr Konto derzeit nicht verfügbar.",
customModelPlaceholder: 'Nicht gelistete Modell-ID',
customModelHint: 'Für vom Provider unterstützte Modelle, die die API nicht zurückgibt; keine Anzeige-Umbenennung. Enter zum Laden.',
noProviders: 'Keine Anbieter gefunden. Fugen Sie einen benutzerdefinierten Anbieter hinzu, um zu beginnen.',
clearVisibleModels: 'Auswahl löschen',
currentDefault: 'Aktueller Standard',
defaultShort: 'Standard',
builtIn: 'Integriert',
customType: 'Benutzerdefiniert',
provider: 'Anbieter',
contextLength: 'Kontextlange',
contextLengthPlaceholder: 'z.B. 200000 (optional)',
local: 'Lokal ({host})',
selectProviderRequired: 'Bitte wahlen Sie einen Anbieter',
baseUrlRequired: 'Basis-URL ist erforderlich',
apiKeyRequired: 'API-Schlussel ist erforderlich',
modelRequired: 'Standardmodell ist erforderlich',
enterBaseUrl: 'Bitte geben Sie zuerst die Basis-URL ein',
unexpectedFormat: 'Unerwartetes Antwortformat',
foundModels: '{count} Modelle gefunden',
fetchFailed: 'Abrufen der Modelle fehlgeschlagen',
xaiWaiting: 'Schließen Sie die Autorisierung auf der geöffneten xAI-Seite ab. Das Fenster schließt sich nach der Freigabe automatisch.',
xaiOpenLink: 'xAI-Autorisierungsseite öffnen',
xaiLoginTitle: 'xAI Grok OAuth-Anmeldung',
xaiExpired: 'Der Autorisierungslink ist abgelaufen. Bitte erneut versuchen.',
xaiCopyLink: 'Autorisierungslink kopieren',
xaiApproved: 'Anmeldung erfolgreich!',
visibilitySelectOne: 'Mindestens ein sichtbares Modell behalten',
visibilitySaved: 'Sichtbare Modelle gespeichert',
visibilitySaveFailed: 'Sichtbare Modelle konnten nicht gespeichert werden',
visibilityHint: 'Wirkt sich nur auf Modellauswahl und Modellseite der Web UI aus. Die provider/model-Konfiguration der Hermes CLI wird nicht geändert; Aufrufe verwenden weiterhin die ursprüngliche Modell-ID.',
showAllModels: 'Alle Modelle anzeigen',
searchPlaceholder: 'Modelle suchen...',
removeCustomModel: 'Dieses nicht gelistete Modell entfernen',
more: 'weitere',
models: 'Modellliste',
manageVisibleModelsFor: 'Sichtbare Modelle für {name} verwalten',
manageVisibleModels: 'Sichtbare Modelle verwalten',
getApiKey: 'API Key abrufen',
count: 'Modelle',
aliasUseOriginal: 'Ursprüngliche ID wiederherstellen',
aliasTitleFor: 'Anzeigename für {model}',
aliasTitle: 'Modell-Anzeigename',
aliasSaveFailed: 'Anzeigename konnte nicht gespeichert werden',
aliasPlaceholder: 'Leer lassen, um die ursprüngliche Modell-ID zu verwenden',
aliasManageFor: 'Anzeigenamen für {provider}',
aliasManage: 'Anzeigenamen',
aliasHint: 'Ändert nur den Anzeigenamen in der Web UI. Hermes erhält weiterhin die ursprüngliche Modell-ID.',
aliasEdit: 'Umbenennen',
aliasCanonical: 'Original-ID: {model}',
},
// Profiles
profiles: {
title: 'Profile',
create: 'Profil erstellen',
import: 'Importieren',
export: 'Exportieren',
rename: 'Umbenennen',
delete: 'Loschen',
switchTo: 'Wechseln zu',
switchConfirm: 'Das Wechseln zum Profil "{name}" startet das Gateway neu. Fortfahren?',
switchSuccess: 'Zum Profil "{name}" gewechselt',
switchFailed: 'Profilwechsel fehlgeschlagen. Moglicherweise muss das Gateway manuell neu gestartet werden.',
createSuccess: 'Profil "{name}" erstellt',
createFailed: 'Erstellen des Profils fehlgeschlagen',
renameSuccess: 'Profil umbenannt',
renameFailed: 'Umbenennung des Profils fehlgeschlagen',
deleteConfirm: 'Mochten Sie das Profil "{name}" wirklich loschen?',
deleteSuccess: 'Profil geloscht',
deleteFailed: 'Loschen des Profils fehlgeschlagen',
exportSuccess: 'Profil exportiert',
exportFailed: 'Exportieren des Profils fehlgeschlagen',
importSuccess: 'Profil importiert',
importFailed: 'Importieren des Profils fehlgeschlagen',
importSelectFile: 'Archivdatei auswahlen',
importInvalidFile: 'Bitte wahlen Sie ein gultiges Archiv (.tar.gz, .tgz, .gz, .zip)',
name: 'Profilname',
namePlaceholder: 'Nur Buchstaben, Zahlen und Bindestriche',
nameValidation: 'Profilname darf nur Kleinbuchstaben, Zahlen, Unterstriche und Bindestriche enthalten',
newName: 'Neuer Name',
newNamePlaceholder: 'Neuen Namen eingeben',
cloneFromCurrent: 'Aus aktuellem Profil klonen',
cloneCleanupNotice: 'Beim Klonen werden exklusive Plattform-Anmeldeinformationen (Weixin / Telegram / Slack usw.) automatisch übersprungen, um Konflikte mit dem Quellprofil zu vermeiden',
cloneStrippedCredentials: '{count} exklusive Anmeldeinformation(en) entfernt: {list}',
cloneDisabledPlatforms: '{count} Plattform(en) deaktiviert: {list}',
cloneStrippedConfigCredentials: '{count} eingebettete Anmeldeinformation(en) aus config.yaml entfernt: {list}',
archivePath: 'Archivpfad',
archivePathPlaceholder: 'Serverpfad zur Archivdatei',
importName: 'Profilname (optional)',
importNamePlaceholder: 'Leer lassen, um den Archivnamen zu verwenden',
active: 'Aktiv',
model: 'Modell',
gateway: 'Gateway',
alias: 'Alias',
provider: 'Anbieter',
path: 'Pfad',
skills: 'Fahigkeiten',
hasEnv: 'Hat .env',
hasSoulMd: 'Hat soul.md',
noProfiles: 'Keine Profile gefunden. Erstellen Sie eines, um zu beginnen.',
avatar: {
title: 'Eigenes Avatar',
customize: 'Avatar anpassen',
upload: 'Bild hochladen',
random: 'Zufällig erzeugen',
reset: 'Standard wiederherstellen',
hint: 'PNG, JPEG oder WebP, maximal 1 MB',
invalidType: 'Bitte ein PNG-, JPEG- oder WebP-Bild wählen',
tooLarge: 'Das Avatar-Bild darf höchstens 1 MB groß sein',
saveSuccess: 'Avatar gespeichert',
saveFailed: 'Avatar konnte nicht gespeichert werden',
resetSuccess: 'Standard-Avatar wiederhergestellt',
resetFailed: 'Standard-Avatar konnte nicht wiederhergestellt werden',
},
runtime: {
activeProfile: 'Aktuell: {name}',
bridgeWorker: 'Bridge-Status',
gateway: 'Gateway',
active: 'Aktiv',
activeTag: 'Aktuell',
idle: 'Leerlauf',
running: 'Läuft',
stopped: 'Gestoppt',
restartGateway: 'Gateway neu starten',
restartProfile: 'Profil neu starten',
switchProfile: 'Profil wechseln',
gatewayRestarted: 'Gateway neu gestartet: {name}',
gatewayRestartFailed: 'Gateway-Neustart fehlgeschlagen',
profileRestarted: 'Profil neu gestartet: {name}',
profileRestartFailed: 'Profil-Neustart fehlgeschlagen',
},
},
// Logs
logs: {
title: 'Protokolle',
all: 'Alle',
searchPlaceholder: 'Suchen...',
refresh: 'Aktualisieren',
noEntries: 'Keine Protokolleintrage',
},
// Settings
settings: {
title: 'Einstellungen',
saved: 'Gespeichert',
saveFailed: 'Speichern fehlgeschlagen',
tabs: {
display: 'Anzeige',
account: 'Konto',
agent: 'Agent',
memory: 'Gedachtnis',
compression: 'Komprimierung',
session: 'Sitzung',
privacy: 'Datenschutz',
apiServer: 'API-Server',
models: 'Modelle',
voice: 'Sprache',
},
display: {
streaming: 'Streaming-Antworten',
streamingHint: 'KI-Antworten in Echtzeit anzeigen',
compact: 'Kompaktmodus',
compactHint: 'Nachrichtenabstand reduzieren',
showReasoning: 'Schlussfolgerung anzeigen',
showReasoningHint: 'Denkprozess des Modells anzeigen',
showCost: 'Kosten anzeigen',
showCostHint: 'Token-Nutzung in Antworten anzeigen',
inlineDiffs: 'Inline-Diffs',
inlineDiffsHint: 'Codeanderungen inline anzeigen',
bellOnComplete: 'Abschluss-Signalton',
bellOnCompleteHint: 'Ton abspielen, wenn die KI fertig ist',
busyInputMode: 'Eingabemodus bei Beschaftigung',
busyInputModeHint: 'Eingabe erlauben, wahrend die KI verarbeitet',
theme: 'Design',
themeHint: 'Hell, Dunkel oder Systemeinstellung verwenden',
themeLight: 'Hell',
themeDark: 'Dunkel',
themeSystem: 'System',
},
agent: {
maxTurns: 'Maximale Runden',
maxTurnsHint: 'Maximale Interaktionsrunden pro Konversation',
gatewayTimeout: 'Gateway-Timeout',
gatewayTimeoutHint: 'Anfrage-Timeout in Sekunden',
restartDrainTimeout: 'Neustart-Drain-Timeout',
restartDrainTimeoutHint: 'Drain-Timeout vor Neustart in Sekunden',
toolEnforcement: 'Werkzeuferzwingung',
toolEnforcementHint: 'Ausfuhrungsmodus fur Werkzeugaufrufe steuern',
auto: 'Automatisch',
always: 'Immer',
never: 'Nie',
},
memory: {
enabled: 'Gedachtnis aktivieren',
enabledHint: 'KI erlauben, den Konversationskontext zu merken',
userProfile: 'Benutzerprofil',
userProfileHint: 'KI erlauben, Benutzereinstellungen zu merken',
charLimit: 'Zeichenlimit fur Gedachtnis',
charLimitHint: 'Maximale Zeichen fur MEMORY.md',
userCharLimit: 'Zeichenlimit fur Benutzerprofil',
userCharLimitHint: 'Maximale Zeichen fur USER.md',
},
compression: {
enabled: 'Komprimierung aktivieren',
enabledHint: 'Langen Chatverlauf automatisch komprimieren, bevor der Modellkontext uberschritten wird',
threshold: 'Komprimierungsschwelle',
thresholdHint: 'Komprimierung starten, wenn geschatzte Token dieses Kontextverhaltnis uberschreiten',
targetRatio: 'Zielverhaltnis',
targetRatioHint: 'Zielgroße des Verlaufs nach der Komprimierung als Kontextverhaltnis',
protectLastN: 'Neueste Nachrichten schutzen',
protectLastNHint: 'So viele neueste Nachrichten unkomprimiert lassen',
protectFirstN: 'Erste Nachrichten schutzen',
protectFirstNHint: 'So viele erste Nachrichten unkomprimiert lassen',
},
session: {
mode: 'Zurucksetzungsmodus',
modeHint: 'Ausloser fur Sitzungszurucksetzung',
modeBoth: 'Inaktivitat + Geplant',
modeIdle: 'Nur Inaktivitat',
modeDaily: 'Nur Geplant',
modeNone: 'Nie (nur manuell)',
idleMinutes: 'Inaktivitats-Timeout',
idleMinutesHint: 'Wartezeit vor automatischer Zurucksetzung (Minuten)',
atHour: 'Geplante Zurucksetzungszeit',
humanOnly: 'Nur menschliche Sitzungen anzeigen',
humanOnlyHint: 'Unteragenten- und Sitzungsmonitor-Rauschen standardmäßig ausblenden',
liveMonitorHumanOnly: 'Live-Monitor: nur menschliche Sitzungen anzeigen',
liveMonitorHumanOnlyHint: 'Im Live-Monitor Unteragenten- und Sitzungsmonitor-Rauschen standardmäßig ausblenden',
atHourHint: 'Sitzung taglich zu dieser Stunde zurucksetzen',
requireAuth: 'Sitzungsautorisierung',
requireAuthHint: 'Erfordert Autorisierung für Sitzungsvorgänge',
},
privacy: {
redactPii: 'Personliche Daten maskieren',
redactPiiHint: 'Sensible Informationen automatisch erkennen und ausblenden (Passworter, Schlussel usw.)',
},
apiServer: {
enable: 'Aktivieren',
enableHint: 'API-Server aktivieren',
host: 'Host',
hostHint: 'Listen-Adresse',
port: 'Port',
portHint: 'Listen-Port',
key: 'Schlussel',
keyHint: 'API-Zugangsschlussel',
cors: 'CORS-Ursprunge',
corsHint: 'Erlaubte Cross-Origin-Quellen',
},
voice: {
ttsProvider: 'TTS-Anbieter',
ttsProviderHint: 'Waehlen Sie die Sprachsynthese-Engine fuer die Nachrichtenwiedergabe',
providerWebSpeech: 'WebSpeech API (Browser)',
providerOpenai: 'OpenAI TTS',
providerCustom: 'Benutzerdefinierter Endpunkt (OpenAI-kompatibel)',
providerEdge: 'Edge TTS (Kostenlos, kein API-Key erforderlich)',
// WebSpeech
webspeechVoice: 'Stimme',
webspeechVoiceHint: 'Waehlen Sie eine Stimme aus Ihrem Browser oder Betriebssystem',
webspeechVoicePlaceholder: 'Auto (Standardstimme)',
// OpenAI
openaiKey: 'API-Key',
openaiKeyHint: 'Ihr OpenAI API-Key mit TTS-Zugriff',
openaiUrl: 'API-Basis-URL',
openaiUrlHint: 'z.B. https://api.openai.com/v1/audio/speech',
openaiModel: 'Modell',
openaiModelHint: 'tts-1 (schneller) / tts-1-hd (hoehere Qualitaet)',
openaiVoice: 'Stimme',
openaiVoiceHint: 'Stimme fuer die Synthese',
// Custom endpoint
customHint: 'Jede OpenAI-kompatible TTS-API verwenden — funktioniert mit GPT-SoVITS, CosyVoice, usw.',
customUrl: 'API-URL',
customUrlHint: 'Basis-URL Ihres TTS-Dienstes',
customUrlPlaceholder: 'Die im lokalen Adapter konfigurierte Adresse, z.B. http://127.0.0.1:9880',
customApiKey: 'API-Key (optional)',
customApiKeyHint: 'Einige benutzerdefinierte Endpunkte erfordern Authentifizierung',
customApiKeyPlaceholder: 'Leer lassen wenn nicht benoetigt',
// Edge TTS
edgeHint: 'Angetrieben von Microsoft Edge TTS (node-edge-tts).',
edgeUrl: 'Adapter-URL',
edgeUrlHint: 'Adresse des Edge TTS-Adapters, z.B. http://127.0.0.1:9882',
edgeUrlPlaceholder: 'http://127.0.0.1:9882',
edgeVoice: 'Stimme',
edgeVoiceHint: 'Waehlen Sie eine Stimme fuer die Sprachsynthese',
edgeRate: 'Geschwindigkeit',
edgeRateHint: 'Sprachgeschwindigkeit anpassen (0,5x ~ 2,0x)',
edgePitch: 'Tonhöhe',
edgePitchHint: 'Tonhöhe anpassen (-20 ~ +20 Hz)',
// Test
testTitle: 'Sprachtest',
testText: 'Testtext',
testTextPlaceholder: 'Text zum Testen eingeben...',
testTextDefault: 'Hallo, dies ist ein Sprachtest.',
testButton: 'Testen',
testButtonPlaying: 'Wiedergabe...',
testFailed: 'Test fehlgeschlagen: {error}',
// MiMo TTS
providerMimo: 'MiMo TTS',
mimoHint: 'Xiaomi MiMo TTS — unterstützt Voreingestellte Stimmen, Stimmdesign und Stimmklonung',
mimoApiKey: 'API-Schluessel',
mimoApiKeyHint: 'Holen Sie sich Ihren Schluessel auf platform.xiaomimimo.com',
mimoApiKeyPlaceholder: 'MiMo API-Schluessel',
mimoBaseUrl: 'Basis-URL',
mimoBaseUrlHint: 'MiMo API-Endpunkt-URL',
mimoModel: 'Modell',
mimoModelHint: 'Sprachsynthesemodell auswählen',
mimoModelPreset: 'Voreingestellte Stimmen',
mimoModelVoiceDesign: 'Stimmdesign',
mimoModelVoiceClone: 'Stimmklonung',
mimoVoice: 'Stimme',
mimoVoiceHint: 'Voreingestellte Stimme auswählen',
mimoVoiceDesignPrompt: 'Stimmbeschreibung',
mimoVoiceDesignPromptHint: 'Beschreiben Sie die gewünschten Stimmmerkmale',
mimoVoiceDesignPromptPlaceholder: 'Z.B.: Eine warme junge Frauenstimme, etwas langsam, mit magnetischem Ton',
mimoCloneAudio: 'Audio hochladen',
mimoCloneAudioHint: 'Audio-Beispiel für Stimmklonung hochladen (mp3/wav, max. 10 MB)',
mimoCloneAudioUpload: 'Datei auswählen',
mimoCloneAudioClear: 'Löschen',
mimoStylePrompt: 'Stil-Eingabe',
mimoStylePromptHint: 'Optional — beschreiben Sie den Sprechstil in natürlicher Sprache',
mimoStylePromptPlaceholder: 'Z.B.: Heller, lebhafter Ton, schnelles Tempo',
},
lockedIps: {
title: 'Gesperrte IPs',
count: '{count} gesperrt',
empty: 'Keine gesperrten IPs',
unlock: 'Entsperren',
unlockAll: 'Alle entsperren',
unlockAllConfirm: 'Alle gesperrten IPs entsperren?',
unlocked: 'IP entsperrt',
allUnlocked: '{count} IPs entsperrt',
},
models: {
apiKey: 'API Key',
apiKeyPlaceholder: 'API Key eingeben',
noProviders: 'Keine Provider konfiguriert',
save: 'Speichern',
saveFailed: 'Speichern fehlgeschlagen',
saved: 'Gespeichert',
},
},
// Platform channel settings
platform: {
requireMention: "Erwahnung {'@'} erfordern",
requireMentionGroup: "Erwahnung {'@'} in Gruppen erfordern zum Antworten",
requireMentionChannel: "Erwahnung {'@'} in Kanalen erfordern zum Antworten",
requireMentionRoom: "Erwahnung {'@'} in Raumen erfordern zum Antworten",
reactions: 'Reaktionen',
reactionsHint: 'Auf Nachrichten mit Emoji reagieren',
freeResponseChats: 'Frei antwortende Chats',
freeResponseChatsHint: "Chat-IDs, die ohne {'@'}Erwahnung antworten (komma-getrennt)",
freeResponseChannels: 'Frei antwortende Kanale',
freeResponseChannelsHint: "Kanal-IDs, die ohne {'@'}Erwahnung antworten (komma-getrennt)",
freeResponseRooms: 'Frei antwortende Raume',
freeResponseRoomsHint: "Raum-IDs, die ohne {'@'}Erwahnung antworten (komma-getrennt)",
mentionPatterns: 'Benutzerdefinierte Erwahnungsmuster',
mentionPatternsHint: 'Zusatzliche Auslosermuster',
autoThread: 'Auto-Thread',
autoThreadHint: "Automatisch Antwort-Threads nach {'@'}Erwahnung erstellen",
autoThreadHintRoom: 'Automatisch Antwort-Threads in Raumen erstellen',
dmMentionThreads: 'DM-Erwahnungs-Threads',
dmMentionThreadsHint: 'Thread-Antworten fur Erwahnungen in DMs verwenden',
allowBots: 'Bot-Nachrichten erlauben',
allowBotsHint: 'Auf Nachrichten von anderen Bots antworten',
allowedChannels: 'Erlaubte Kanale',
allowedChannelsHint: 'Whitelist der Kanal-IDs (komma-getrennt)',
ignoredChannels: 'Ignorierte Kanale',
ignoredChannelsHint: 'Kanale, in denen der Bot nie antwortet (komma-getrennt)',
noThreadChannels: 'Thread-lose Kanale',
noThreadChannelsHint: 'Kanale, in denen der Bot ohne Threads antwortet (komma-getrennt)',
exclusiveTokenWarning: 'Diese Plattform verwendet einen exklusiven Token-Lock. Jedes Profil muss einen anderen Identitäts-Token verwenden, um Konflikte mit anderen Profilen zu vermeiden.',
botToken: 'Bot-Token',
botTokenHint: 'Bot-Token vom Entwicklerportal',
accessToken: 'Zugangs-Token',
accessTokenHint: 'Matrix-Zugangs-Token',
homeserver: 'Homeserver-URL',
homeserverHint: 'Matrix-Homeserver-URL',
appId: 'App-ID',
appIdHint: 'Feishu App-ID',
appSecret: 'App-Geheimnis',
appSecretHint: 'Feishu App-Geheimnis',
clientId: 'Client-ID',
clientIdHint: 'DingTalk Client-ID',
clientSecret: 'Client-Geheimnis',
clientSecretHint: 'DingTalk Client-Geheimnis',
botId: 'Bot-ID',
botIdHint: 'WeCom Bot-ID',
wecomSecretHint: 'WeCom Bot-Geheimnis',
waEnabled: 'WhatsApp aktivieren',
waEnabledHint: 'WhatsApp uber QR-Code-Kopplung aktivieren',
weixinToken: 'Weixin-Token',
weixinTokenHint: 'Von Weixin-CLI QR-Anmeldung (hermes weixin)',
accountId: 'Konto-ID',
accountIdHint: 'Weixin-Konto-ID',
qrLogin: 'QR-Anmeldung',
qrRelogin: 'Erneut anmelden',
qrFetching: 'QR-Code wird abgerufen...',
qrScanHint: 'Mit WeChat scannen zum Anmelden',
qrScanedHint: 'Gescannt, bitte auf dem Gerat bestatigen...',
qqSandboxHint: 'Sandbox-Umgebung aktivieren (für Tests)',
qqSandbox: 'Sandbox-Modus',
qqQrScanHint: 'QR-Code oben mit QQ scannen oder Link auf dem Telefon öffnen, um die Bindung abzuschließen',
qqMarkdownHint: 'Markdown-formatierte Nachrichten aktivieren (einige Clients unterstützen dies möglicherweise nicht)',
qqMarkdown: 'Markdown-Unterstützung',
qqAppSecretHint: 'QQ Open Platform Bot App Secret',
qqAppSecret: 'App Secret',
qqAppIdHint: 'QQ Open Platform Bot App ID',
qqAppId: 'App ID',
allowedUsersHint: 'Whitelist für Benutzer-IDs oder OpenIDs, durch Kommas getrennt',
allowedUsers: 'Erlaubte Benutzer',
allowAllUsersHint: 'Nachrichten von beliebigen Benutzern erlauben; deaktiviert lassen, um die Allowlist zu verwenden',
allowAllUsers: 'Alle Benutzer erlauben',
},
// Language
language: {
label: 'Sprache',
zh: '中文',
en: 'English',
de: 'Deutsch',
},
// Terminal
terminal: {
sessions: 'Sitzungen',
newTab: 'Neues Terminal',
closeSession: 'Diese Sitzung schliessen?',
sessionExited: 'Beendet',
processExited: 'Prozess beendet mit Code {code}',
noSessions: 'Keine Terminal-Sitzungen',
connectionFailed: 'Terminaldienstverbindung fehlgeschlagen',
connectionClosed: 'Terminalverbindung geschlossen',
connectionError: 'Terminalverbindungsfehler',
},
// Usage
usage: {
title: 'Nutzungsstatistiken',
refresh: 'Aktualisieren',
totalTokens: 'Gesamt-Tokens',
inputTokens: 'Eingabe',
outputTokens: 'Ausgabe',
totalSessions: 'Gesamt-Sitzungen',
avgPerDay: '~{n}/Tag Durchschn.',
estimatedCost: 'Gesch. Kosten',
cacheHitRate: 'Cache-Trefferquote',
modelBreakdown: 'Modellaufschluesselung',
dailyTrend: 'Tagliche Nutzung',
date: 'Datum',
tokens: 'Tokens',
cache: 'Cache',
cacheRead: 'Cache gelesen',
cacheWrite: 'Cache geschrieben',
sessions: 'Sitzungen',
cost: 'Kosten',
noData: 'Keine Nutzungsdaten',
},
skillsUsage: {
title: 'Skill-Nutzung',
subtitle: 'Skill-Ladevorgänge und -Bearbeitungen aus Hermes-Sitzungen verfolgen',
refresh: 'Aktualisieren',
periodSelector: 'Zeitraum der Skill-Nutzung',
periodLabel: '{days} T',
summary: 'Zusammenfassung',
totalActions: 'Aktionen',
loads: 'Laden',
edits: 'Änd.',
distinctSkills: 'Skillzahl',
topSkills: 'Top-Skills',
dailyTrend: 'Trend',
periodSummary: 'Letzte {days} Tage',
skill: 'Fähigkeit',
share: '%',
lastUsed: 'Zuletzt',
noData: 'Keine Skill-Nutzungsdaten',
loadFailed: 'Skill-Nutzung konnte nicht geladen werden',
otherSkills: 'Andere Skills',
},
// Anderungsprotokoll
changelog: {
new_0_5_22_1: 'Hermes-Sessionlisten-API liest jetzt die Profil-Datenbank statt des lokalen Web-UI-Session-Stores',
new_0_5_23_1: 'Bridge-only Chat-Slash-Befehle mit lokalisierten Befehlsvorschlägen hinzugefügt',
new_0_5_23_2: 'Befehlsverlauf für Session-Replay gespeichert, ohne Modellkontext, Nutzung oder Komprimierung zu verunreinigen',
new_0_5_23_3: 'Gateway-Profil-Umgebungsvariablen isoliert, damit Zugangsdaten nicht zwischen Profilen durchsickern',
new_0_5_23_4: 'Web-UI-Port bei Gateway-Zuweisung reserviert, um Startkonflikte zu vermeiden',
new_0_5_23_5: 'Self-Update-Neustart korrigiert, damit erfolgreiche Helper-Exits nicht als Fehler gemeldet werden',
new_0_5_24_1: 'Bridge-Chat an API-Server-Verarbeitung für multimodale Eingaben, System-Prompt und Workspace-Kontext angepasst',
new_0_5_25_1: 'Zurücksetzen und Klonen von Gruppenchat-Räumen hinzugefügt',
new_0_5_25_2: 'Web-UI-Statusverzeichnis für eigene Deployment-Layouts konfigurierbar gemacht',
new_0_5_25_3: 'MiMo als TTS-Anbieter in den Spracheinstellungen hinzugefügt',
new_0_5_25_4: 'Modelllisten eigener Provider werden über das Backend geladen, um Browser-CORS-Fehler zu vermeiden',
new_0_5_25_5: 'Tool-Freigabeablauf für Bridge-Sitzungen korrigiert',
new_0_5_25_6: 'Erzwungenen CLI-Plattformhinweis aus Bridge-Prompts entfernt, damit eigene Medien-/Dateianweisungen erhalten bleiben',
new_0_5_25_7: 'Base64-Bildinhalte werden in der Nachrichtenhistorie korrekt angezeigt',
new_0_5_25_8: 'Playwright-Browsertests, Chat-Streaming-Vertragsabdeckung, Provider-Modellabdeckung und Coverage-Baseline hinzugefügt',
new_0_5_26_1: 'Windows- und lokale Markdown-Medienpfade in Chatverlauf und gerenderten Nachrichten unterstützt',
new_0_5_26_2: 'Leere Assistant-Historie gefiltert und veralteter Komprimierungsstatus bei neuem Lauf gelöscht',
new_0_5_26_3: 'Gesperrte Schreibvorgänge für Config- und Profil-Updates hinzugefügt, um Beschädigungen durch paralleles Schreiben zu reduzieren',
new_0_5_26_4: 'QQBot- und DingTalk-Kanaleinstellungen hinzugefügt',
new_0_5_26_5: 'CLI-Porterkennung portabler gemacht und mobile Terminal-Schublade verbessert',
new_0_5_26_6: 'Bridge-Profilumgebungen isoliert und Hermes-Plugin-Erkennung über Python-Umgebungen hinweg korrigiert',
new_0_5_26_7: 'Gestoppte Gateway-Zustände mit Web-UI-Diagnosen erklärt und Log-Ladezustand stabil gehalten',
new_0_5_26_8: 'Session-Reset-Modi, Custom-Provider-Base-URL und dynamische Zustellziele korrigiert',
new_0_5_26_9: 'Lokalen Schalter für Tool-Call-Trace-Anzeige in der Chat-Eingabeleiste hinzugefügt',
new_0_5_26_10: 'Hermes-Agent-Paketinstallationen unterstützt, wenn kein Source-Checkout verfügbar ist',
new_0_5_26_11: 'xAI-Grok-OAuth-Login für SuperGrok-Abonnenten hinzugefügt und Grok-Modellpresets aktualisiert',
new_0_5_26_12: 'Browser-, Chat-Streaming-, Provider-, Gateway-, Config-, Plugin- und Bridge-Testabdeckung erweitert',
new_0_5_27_1: 'Sitzungsbezogene Modelleinstellungen für Bridge-Chats hinzugefügt, mit unabhängig gespeichertem Provider und Modell pro Sitzung',
new_0_5_27_2: 'Bridge-Sitzung per Rechtsklick über „Modell festlegen“ auf ein anderes Modell umstellen',
new_0_5_27_3: 'Läufe prüfen jetzt das Sitzungsmodell und fallen auf das aktuelle Standardmodell zurück, wenn es nicht verfügbar ist',
new_0_5_27_4: 'Kontextkomprimierung folgt standardmäßig dem aktuell im Profil ausgewählten Standardmodell',
new_0_5_30_1: 'Bridge-Chat bewahrt jetzt strukturierte Historie und behebt sporadisch ausbleibende Antworten sowie übersprungene Tool-Ausführung durch flachgedrückte Tool-Historie',
new_0_5_30_2: 'Gruppenchat-Mention-Routing ist zuverlässiger für mehrere Agents, entfernt die eigene -Mention vor der Zustellung und behält Anzeigenamen nach Aktualisierung bei',
new_0_5_30_3: 'Modellseiten, Chat-Modellauswahl und Sitzungsmodellwahl zeigen Provider und Modelle jetzt passend zum aktiven Profil mit korrekten Standardmarkierungen',
new_0_5_30_4: 'Gateway-Verwaltung vereinfacht: eigenständige Gateway-Seite entfernt, jedes Profil wird vor Start auf Plattformkonfiguration geprüft, und ein leichter Gateway-Runner verwaltet Starts und Neustarts',
new_0_5_30_5: 'Gateway-Start unter Docker, Termux und Windows mit Runtime-Lock-Behandlung, Portkonfliktbereinigung, Hintergrundausführung und Neustartunterstützung verbessert',
new_0_5_30_6: 'Windows-Kompatibilität für Pfaderkennung, Dateidownloads und Job-/Update-Subprozesse gehärtet, damit keine Terminalfenster aufblitzen',
new_0_5_30_7: 'Config-Schreibvorgänge und Provider-Presets korrigiert: .env-Schlüssel validieren, FUN-Codex über Responses API routen und Z.AI/GLM-Modelllisten aktualisieren',
new_0_5_30_8: 'Frontend-Details poliert, darunter eingeklappte Seitenleiste, kurze Gruppenlabels, Seitenleisten-Trenner und Gesprächs-Outline',
new_0_5_30_9: 'Kontextkomprimierung folgt nun Profil-Komprimierungseinstellungen und härtet veraltete Snapshots durch Wiederverwendung alter Zusammenfassungen mit sicherem Rest statt erneuter Vollkomprimierung',
new_0_5_31_1: 'Bridge-Broker-Neustarts gehärtet, finale Gruppenchat-Stream-Darstellung korrigiert und {\'@\'}all-Routing für Gruppenchats hinzugefügt',
new_0_5_31_2: 'Dateimanager kann absolute Pfade kopieren; mobile Session-Schublade liegt nicht mehr hinter Chat-Inhalten',
new_0_5_31_3: 'Profilauswahl zeigt jetzt Avatare, eigene Avatar-Uploads, Laufzeitstatus-Dialog sowie Gateway-/Profil-Neustartaktionen',
new_0_5_31_4: 'Profilavatare erscheinen jetzt in Einzelchat, Gruppenchat und eingeklappter Seitenleiste, mit Web-UI-Profilmetadaten und Windows-sicheren Pfaden',
new_0_5_31_5: 'Docker-, Termux- und Windows-Gateway-Erkennung sowie Neustartprüfungen verbessert, indem gateway_state/gateway.pid für Managed-Gateway-Liveness genutzt wird',
new_0_5_31_6: 'APIKEY.FUN-Bildgenerierungs-Medienendpunkt und gebündelter apikey-image-gen-Skill für Text-zu-Bild, Bild-zu-Bild und Bildbearbeitung über den fun-codex-Provider des aktiven Profils hinzugefügt',
new_0_5_33_1: 'Ausführungsfehler und Socket-Fehler in Einzel- und Gruppenchats bleiben nun als rote Agent-Nachrichten in der Nachrichtenliste sichtbar',
new_0_5_33_2: 'Session-Suche kann auf das ausgewählte Profil begrenzt werden; ohne Auswahl werden weiterhin alle Profile durchsucht',
new_0_5_33_3: 'Skills-Seite zeigt chinesische/englische Empfehlungstexte, wenn kein Skill ausgewählt ist; erneuter Klick hebt die Auswahl auf',
new_0_5_33_4: 'Ungenutzte changelog-i18n-Einträge entfernt, um die Frontend-Größe zu reduzieren',
new_0_5_33_5: 'Agent-Bridge-Startfehler auf chinesischem Windows durch netstat-Ausgabecodierung behoben',
new_0_5_33_6: 'Nous-Portal-Modellpreset anhand des öffentlichen Catalogs und der Portal-Empfehlungen aktualisiert',
new_0_5_33_7: 'Profillisten und Laufzeitstatus lesen Profilnamen aus Verzeichnissen und Standardmodelle aus config, um CLI-Tabellenspaltenfehler zu vermeiden',
new_0_5_34_1: 'Multimodale tool-Ergebnisse werden beim Speichern von Sitzungs-/Gruppenchat-Nachrichten normalisiert, damit keine base64-Bilder in Replays gelangen',
new_0_5_34_2: 'Benutzerdefinierte Hermes-Modelle werden über backendverwaltete Konfiguration persistiert, mit neuen Endpunkten zum Hinzufügen und Entfernen',
new_0_5_34_3: 'Finale Bridge-Kontextnutzung und Tool-Statusupdates bleiben nach abgeschlossenen Läufen korrekt',
new_0_5_34_4: 'Kanban-Filterung, Verantwortlichenanzeige, Kartenaktionen und Aufgabendetails verbessert',
new_0_5_34_5: 'Komprimierungs-Nutzungszählung korrigiert, indem fixer prompt/tool-Kontext gecacht und vollständige Kontext-token gemeldet werden',
new_0_5_34_6: 'Gruppenchat-Agents cachen ihren eigenen fixen Kontext und zeigen Komprimierungsfortschritt erst an, wenn die Komprimierung wirklich startet',
new_0_5_34_7: 'Web-UI-gebündelte Skills werden in jedes Profile synchronisiert und das Ziel-Profile wird pro Injection protokolliert',
new_0_5_34_8: 'Wenn Kanban unter Windows fehlschlägt, aktualisieren Sie Hermes, um die neuesten Migration-Fixes für die Kanban-Datenbank zu erhalten',
},
// Dateien
files: {
title: 'Dateien',
tree: 'Verzeichnisbaum',
list: 'Dateiliste',
breadcrumbRoot: 'Start',
newFile: 'Neue Datei',
newFolder: 'Neuer Ordner',
upload: 'Hochladen',
refresh: 'Aktualisieren',
open: 'Offnen',
edit: 'Bearbeiten',
preview: 'Vorschau',
download: 'Herunterladen',
copyPath: 'Pfad kopieren',
rename: 'Umbenennen',
delete: 'Loschen',
name: 'Name',
size: 'Grosse',
modified: 'Geandert',
actions: 'Aktionen',
emptyDir: 'Leeres Verzeichnis',
loading: 'Wird geladen...',
confirmDelete: 'Mochten Sie "{name}" wirklich loschen?',
confirmDeleteDir: 'Mochten Sie das Verzeichnis "{name}" und seinen gesamten Inhalt wirklich loschen?',
deleteFailed: 'Loschen fehlgeschlagen',
deleted: 'Geloscht',
renameTo: 'Umbenennen in',
newFileName: 'Dateiname',
newFolderName: 'Ordnername',
created: 'Erstellt',
createFailed: 'Erstellen fehlgeschlagen',
renamed: 'Umbenannt',
renameFailed: 'Umbenennen fehlgeschlagen',
uploadSuccess: '{count} Datei(en) hochgeladen',
uploadFailed: 'Hochladen fehlgeschlagen',
saveFailed: 'Speichern fehlgeschlagen',
saved: 'Gespeichert',
unsavedChanges: 'Sie haben ungespeicherte Anderungen. Verwerfen?',
pathCopied: 'Pfad kopiert',
fileTooLarge: 'Datei zu gross (max. 10 MB)',
permissionDenied: 'Geschutzte Datei kann nicht geandert werden',
notFound: 'Datei oder Verzeichnis nicht gefunden',
backendError: 'Dateioperation fehlgeschlagen',
dragDropHint: 'Dateien hierher ziehen, um sie hochzuladen',
closeEditor: 'Editor schliessen',
closePreview: 'Schliessen',
saveFile: 'Speichern',
fileTree: 'Dateibaum',
},
// Gruppenchat
groupChat: {
title: 'Gruppenchat',
createRoom: 'Raum erstellen',
joinByCode: 'Mit Code beitreten',
roomName: 'Raumname',
roomNamePlaceholder: 'Raumnamen eingeben',
inviteCode: 'Einladungscode',
autoGenerate: 'Automatisch generieren',
noRooms: 'Noch keine Raume',
selectOrCreate: 'Wahlen oder erstellen Sie einen Raum, um zu chatten',
agents: 'Agenten',
addAgent: 'Agent hinzufugen',
selectProfile: 'Wahlen Sie ein Profil',
agentAdded: 'Agent hinzugefugt',
agentAlreadyInRoom: 'Agent ist bereits in diesem Raum',
agentAddFailedCount: '{count} Agent(en) wurden nicht hinzugefugt: {details}',
noAgents: 'Keine Agenten in diesem Raum',
members: 'Mitglieder',
roomCreated: 'Raum erstellt',
roomDeleted: 'Raum gelöscht',
roomCloned: 'Raum geklont',
cloneRoom: 'Raum klonen',
deleteRoomConfirm: 'Diesen Raum löschen?',
clearContext: 'Kontext löschen',
clearContextConfirm: 'Diesen Raumkontext löschen? Nachrichten und Komprimierungs-Snapshots werden entfernt, Agenten und Mitglieder bleiben.',
contextCleared: 'Kontext gelöscht',
you: 'Du',
joined: 'Raum beigetreten',
joinFailed: 'Beitreten fehlgeschlagen',
inputPlaceholder: 'Nachricht eingeben... (Enter zum Senden)',
enterCode: 'Einladungscode eingeben',
yourName: 'Dein Name',
yourNamePlaceholder: 'Gib deinen Anzeigenamen ein',
yourDescription: 'Beschreibung (optional)',
yourDescriptionPlaceholder: 'Erzahl anderen wer du bist...',
agentName: 'Agent-Name',
agentNamePlaceholder: 'Benutzerdefinierter Name (leer = Profilname)',
agentDesc: 'Agent-Beschreibung',
agentDescPlaceholder: 'Beschreiben Sie, was dieser Agent tut...',
agentReplying: 'antwortet...',
agentCompressing: 'komprimiert Kontext...',
compressionSettings: 'Komprimierungseinstellungen',
triggerTokens: 'Trigger-Token',
triggerTokensDesc: 'Token-Schwelle für Kontextkomprimierung',
maxHistoryTokens: 'Max. Verlaufs-Token',
maxHistoryTokensDesc: 'Maximale Token für komprimierten Kontext',
tailMessageCount: 'Nachrichten am Ende',
tailMessageCountDesc: 'Anzahl der letzten Nachrichten, die unverändert bleiben',
compressionConfig: 'Komprimierungskonfig',
compressNow: 'Jetzt komprimieren',
compressingInProgress: 'Komprimierung läuft, bitte warten',
compressionSaved: 'Konfiguration gespeichert',
},
// Download
download: {
downloading: 'Wird heruntergeladen...',
downloadFailed: 'Download fehlgeschlagen',
fileNotFound: 'Datei nicht gefunden oder geloscht',
fileTooLarge: 'Datei zu gross (Limit uberschritten)',
backendError: 'Lesen der Datei fehlgeschlagen, Remote-Umgebung moglicherweise nicht verfugbar',
backendTimeout: 'Zeituberschreitung beim Lesen der Datei',
unsupportedBackend: 'Aktuelles Terminal-Backend unterstutzt keine Datei-Downloads',
invalidPath: 'Ungultiger Dateipfad',
download: 'Herunterladen',
downloadFile: 'Datei herunterladen',
},
gateways: {
title: 'Gateways',
running: 'Läuft',
stopped: 'Gestoppt',
started: 'Gestartet',
startFailed: 'Gateway konnte nicht gestartet werden',
stopFailed: 'Gateway konnte nicht gestoppt werden',
},
kanban: {
title: 'Kanban-Board',
createTask: 'Neue Aufgabe',
noTasks: 'Keine Aufgaben',
allStatuses: 'Alle Status',
allAssignees: 'Alle Verantwortlichen',
columns: {
triage: 'Sichtung',
todo: 'Zu erledigen',
ready: 'Bereit',
running: 'In Arbeit',
blocked: 'Blockiert',
done: 'Erledigt',
archived: 'Archiviert',
},
card: {
assigneeTooltip: 'Verantwortlicher',
priority: {
low: 'Niedrig',
medium: 'Mittel',
high: 'Hoch',
},
timeAgo: {
justNow: 'gerade eben',
minutes: 'vor {count} Min.',
hours: 'vor {count} Std.',
days: 'vor {count} Tg.',
},
},
board: {
create: 'Neues Board',
archive: 'Board archivieren',
archiveConfirm: 'Aktuelles Board archivieren?',
archived: 'Board archiviert',
created: 'Board erstellt',
slugPlaceholder: 'Board-Kennung, z. B. project-a',
namePlaceholder: 'Anzeigename (optional)',
slugRequired: 'Board-Kennung ist erforderlich',
},
form: {
title: 'Titel',
titlePlaceholder: 'Aufgabentitel',
titleRequired: 'Titel ist erforderlich',
body: 'Beschreibung',
bodyPlaceholder: 'Aufgabenbeschreibung (optional)',
assignee: 'Verantwortlicher',
selectAssignee: 'Verantwortlichen wählen...',
priority: 'Priorität',
selectPriority: 'Priorität wählen...',
},
detail: {
status: 'Status',
priority: 'Priorität',
assignee: 'Verantwortlicher',
tenant: 'Mandant',
createdAt: 'Erstellt',
startedAt: 'Gestartet',
completedAt: 'Abgeschlossen',
comments: 'Kommentare',
events: 'Ereignisse',
runs: 'Ausführungen',
artifacts: 'Artefakte',
result: 'Ergebnis',
highlights: 'Highlights',
sources: 'Datenquellen',
sessions: 'Zugehörige Sitzungen',
sessionMessages: 'Sitzungsnachrichten',
noSessions: 'Keine zugehörigen Sitzungen gefunden.',
},
action: {
title: 'Aktionen',
assign: 'Zuweisen',
assignTo: 'Zuweisen an...',
block: 'Blockieren',
blockReason: 'Blockierungsgrund',
unblock: 'Blockierung aufheben',
complete: 'Abschließen',
completeSummary: 'Abschlusszusammenfassung (optional)',
},
message: {
loadFailed: 'Aufgabe konnte nicht geladen werden',
taskCreated: 'Aufgabe erstellt',
taskAssigned: 'Aufgabe zugewiesen',
taskBlocked: 'Aufgabe blockiert',
taskUnblocked: 'Blockierung aufgehoben',
taskCompleted: 'Aufgabe abgeschlossen',
},
stats: {
total: 'Gesamt',
tasks: 'Aufgaben',
},
},
}