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

1049 lines
48 KiB
TypeScript
Raw Normal View History

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',
},
// Sidebar
sidebar: {
chat: 'Chat',
search: 'Suche',
apiRelay: 'API-Relay',
history: 'Verlauf',
jobs: 'Geplante Aufgaben',
models: 'Modelle',
profiles: 'Profile',
2026-05-10 13:50:39 +02:00
plugins: 'Plugins',
skills: 'Fahigkeiten',
memory: 'Gedachtnis',
logs: 'Protokolle',
usage: 'Nutzung',
skillsUsage: 'Skill-Nutzung',
channels: 'Kanale',
terminal: 'Terminal',
files: 'Dateien',
groupChat: 'Gruppenchat',
groupConversation: 'Konversation',
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...',
2026-05-14 12:06:39 +08:00
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',
},
2026-05-03 22:10:40 +08:00
// Drawer
drawer: {
terminal: 'Terminal',
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',
inputPlaceholder: 'Nachricht eingeben... (Enter zum Senden, Shift+Enter fur neue Zeile)',
attachFiles: 'Dateien anhangen',
messageQueue: 'Nachrichtenwarteschlange',
removeQueuedMessage: 'Nachricht aus Warteschlange entfernen',
stop: 'Stopp',
send: 'Senden',
contextUsed: 'Kontext verwendet:',
sessions: 'Sitzungen',
webUiSessions: 'Sitzungen',
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, nach Quelle gruppiert.',
noSessions: 'Keine Sitzungen',
newChat: 'Neuer Chat',
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: 'Chat',
liveMode: 'Live',
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',
2026-05-03 22:10:40 +08:00
sessionNotFound: 'Sitzung nicht gefunden',
enterNewTitle: 'Neuen Titel eingeben',
other: 'Sonstige',
runFailed: 'Ausfuhrung fehlgeschlagen',
error: 'Fehler',
tool: 'Werkzeug',
arguments: 'Argumente',
result: 'Ergebnis',
truncated: '... (abgeschnitten)',
executionDuration: 'Execution time', 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: 'Pause',
resumeSpeech: 'Fortsetzen',
stopSpeech: 'Stoppen',
speechNotSupported: 'Sprachwiedergabe in diesem Browser nicht unterstützt',
},
// 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: 'Prompt',
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',
},
},
2026-05-10 13:50:39 +02:00
// 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 root',
python: 'Python',
scanCwd: 'Scan cwd',
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 Login',
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.',
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',
},
// 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',
2026-05-03 22:10:40 +08:00
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.',
},
// 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',
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',
},
session: {
mode: 'Zurucksetzungsmodus',
modeHint: 'Ausloser fur Sitzungszurucksetzung',
modeBoth: 'Inaktivitat + Geplant',
modeIdle: 'Nur Inaktivitat',
modeHourly: 'Nur Geplant',
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}',
},
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',
},
},
// 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...',
},
// 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}',
2026-05-03 22:10:40 +08:00
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 Read',
cacheWrite: 'Cache Write',
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_6_1: 'Sprachwiedergabe mit Web Speech API: manuelle Taste, Auto-Play-Schalter, Regenbogen-Randanimation und Mobile-Optimierung',
new_0_5_6_2: 'Robuster LLM-JSON-Parser mit Toleranz für Python-Format und Textextraktion aus Streaming-Events',
new_0_5_6_3: 'Skills-Verbesserungen: Nutzungsstatistiken, Quellfilterung, archivierte Skills, Herkunft und Pin-Toggle',
new_0_5_6_4: 'Erweiterte tägliche Nutzungsstatistiken mit detaillierter Token-Aufschlüsselung inkl. Cache-Lese-/Schreibtrennung',
new_0_5_6_5: 'Sitzungshistorium-Umfang geklärt mit verbesserten Beschreibungen in Chat- und Historienansichten',
new_0_5_6_6: 'Attachment-Verarbeitung neu gestaltet mit Anthropic-Stil ContentBlock-Array-Format (Text, Bild, Datei)',
new_0_5_6_7: 'Frontend-Dateidownload-Funktion für ContentBlock- und Markdown-Formate mit Authentifizierung hinzugefügt',
new_0_5_6_8: 'Multi-Prozess-Konflikt behoben, der SQLite-Database-Resets verursacht hat, durch Entfernen redundanter nodemon-Instanzen',
2026-05-04 12:46:26 +08:00
new_0_5_9_1: 'Profilverwaltung在整个应用程序中统一,mit konsistentem API und State-Management',
new_0_5_14_1: 'Add session export with full and compressed modes (JSON or plain text)',
new_0_5_14_2: 'Fix terminal PTY resource exhaustion, switch to lazy connect',
new_0_5_14_3: 'Fix WSL2 health check failure caused by IPv6 dual-stack binding',
new_0_5_14_4: 'Fix SQLite connection not released on shutdown causing database lock',
new_0_5_14_5: 'Update FUN provider models, add builtin badge and API relay link',
new_0_5_15_1: 'Kanban-Board für visuelle Aufgaben- und Sitzungsverwaltung hinzugefügt',
new_0_5_15_2: 'Offizielle Landing Page und Dokumentations-Website hinzugefügt',
new_0_5_15_3: 'Group-Chat-Agent-Client verwendet dynamischen Port statt fest codiert 8648',
new_0_5_15_4: 'node-edge-tts Sprachmodul hinzugefügt',
new_0_5_15_5: 'WSL-Standard-Listen-Host-Binding korrigiert',
new_0_5_15_6: 'Website-Startseiten-Metadaten für SEO hinzugefügt',
new_0_5_15_7: 'IP-basierten Schutz vor Login-Brute-Force-Angriffen hinzugefügt',
new_0_5_15_8: 'Doppelte Download-URL-Verpackung im MarkdownRenderer korrigiert',
new_0_5_15_9: 'Hermes Markdown-Medien-Rendering und Sync-Wiederholung korrigiert',
new_0_5_15_10: 'Upstream-Umgebungsvariablenabhängigkeit entfernt',
new_0_5_15_11: 'Wenn die Kanban-Funktion nicht verfügbar ist, updaten Sie bitte hermes-agent',
new_0_5_16_1: 'Chat-Streaming von /v1/runs auf /v1/responses API migriert für geringere Latenz',
new_0_5_16_2: 'Echte API-Nutzung (Tokens, Cache, Reasoning) in Nutzungsstatistik-Tabelle speichern',
new_0_5_16_3: 'QQ-Gruppen-QR-Code zur Website-Navigationsleiste hinzugefügt',
new_0_5_16_4: 'Unbenutztes codex_reasoning_items-Feld aus dem Nachrichtenschema entfernt',
new_0_5_17_1: 'Vollständige Windows-Kompatibilität: Pfadverarbeitung, Prozessverwaltung, Terminal, Log-Parsing',
new_0_5_17_2: 'Gateway-Prozessverwaltung refaktoriert mit plattformübergreifendem Start/Stop/Health-Check',
new_0_5_17_3: 'Plugin-Erkennung auf Termux repariert durch Parsen des Hermes-Shebangs zur Python-Lokalisierung',
new_0_5_17_4: 'Doppelte YAML-Schluessel in der Config-Parsing tolerieren',
new_0_5_17_5: 'Auth-Sperrfenster und Dev-Shutdown-Ablauf verbessert',
new_0_5_17_6: 'Comic-Theme: Handschriften-Fonts für Chinesisch (ZCOOL KuaiLe), Japanisch (Zen Maru Gothic), Koreanisch (Gaegu) hinzugefügt',
new_0_5_17_7: 'Comic/Doodle-Themenstil hinzugefuegt',
new_0_5_17_8: 'Lizenz auf BSL-1.1 geaendert',
new_0_5_17_9: 'Schreibgeschuetzte Hermes-Plugins-Seite hinzugefuegt',
new_0_5_17_10: 'Bild-Uploads in Base64-Multimodalformat konvertieren',
new_0_5_17_11: 'Kanban-Board-Auswahl und Isolierung korrigiert',
new_0_5_17_12: 'Sprachwiedergabeeinstellungen mit TTS-Unterstützung für 4 Anbieter hinzugefügt',
new_0_5_17_13: 'Schwellenwert fuer Kontextkomprimierung von 200 auf 150 Nachrichten gesenkt',
new_0_5_17_14: 'Web-UI-Selbstupdate-Neustartlogik korrigiert',
new_0_5_17_15: 'Gemeinsame Umgebungsvariable opencode-zen und opencode-go korrigiert, die Konfigurationskopplung verursachte',
new_0_5_17_16: 'Unterstützung für Traditionelles Chinesisch (zh-TW) hinzugefügt',
new_0_5_17_17: 'Sichtbare Modelle in der Web-UI verwalten',
new_0_5_17_18: 'Kanban: Vollständige Aktionskette für Aufgaben (Kommentare, Logs, Zuweisung, Versand) mit Fähigkeitsgrenzen',
new_0_5_17_19: 'Provider-Auth-Einträge werden beim Löschen nicht mehr gelöscht korrigiert',
new_0_5_17_20: 'Codex credential-pool Auth-Erkennung korrigiert',
new_0_5_17_21: 'Edge TTS Geschwindigkeits-/Tonhoehen-Slider zu den Spracheinstellungen hinzugefuegt',
new_0_5_17_22: 'Doppelte YAML-Schluessel in der Config verursachen keinen Parsing-Absturz mehr',
new_0_5_17_23: 'Gateway-Port-Eigentum basiert jetzt auf PID-Datei und verhindert profiluebergreifende Port-Entfuehrung',
new_0_5_17_24: 'Verlaufsseite zeigt jetzt Cron-Sitzungsaufzeichnungen an',
new_0_5_17_25: 'Sprachwechsel- und Themen-Symbole in eingeklappter Seitenleiste nicht mehr gequetscht',
new_0_5_18_1: 'Add Skills Usage monitoring page with daily trend chart and top skills statistics',
new_0_5_18_2: 'Add CLI chat session bridge with Python agent bridge for WebSocket-based sessions',
new_0_5_18_3: 'Add Ollama Cloud provider preset with dynamic model catalog',
new_0_5_18_4: 'Support model display name renaming (aliases)',
new_0_5_18_5: 'Support model visibility management in Web UI',
new_0_5_18_6: 'Enhance usage analytics dashboard',
new_0_5_18_7: 'Docker single-container deployment with docker-compose and gateway startup fixes',
new_0_5_18_8: 'Fix plugins page HERMES_HOME fallback warning for non-default profiles',
new_0_5_18_9: 'Fix gateway stability across dev restarts and improve Windows compatibility',
new_0_5_22_1: 'Fix Hermes session list API reading the Web UI local session store instead of the Hermes profile database',
new_0_5_13_1: 'Nachrichtenwarteschlange für sequenzielle Run-Verarbeitung hinzugefügt, um gleichzeitige Konflikte zu vermeiden',
new_0_5_13_2: 'Zwei-Ebenen-Skills-Verzeichnisstruktur mit Sonstige-Kategorie für flache Skills unterstützt',
new_0_5_13_3: 'Temporäre Sitzungen (eph_*) beim Start-Sync filtern, um interne Sitzungen nicht zu importieren',
new_0_5_13_4: 'Termux/proot-Umgebungskompatibilität für mobile und eingebettete Bereitstellungen hinzugefügt',
new_0_5_13_5: 'Chat-Run-Abbruch-Lebenszyklus: ordnungsgemäße Bereinigung bei Benutzerabbruch',
new_0_5_13_6: 'Streaming-Indikator aus Verlaufs-Nachrichtenliste für sauberere Anzeige entfernt',
new_0_5_13_7: 'Kontextauflösung für benutzerdefinierte Provider mit verbesserter Modellzuordnung korrigiert',
new_0_5_13_8: 'IPv6-Standard-Listen-Adresse für korrekte Adressbindung korrigiert',
new_0_5_13_9: 'Chat-Nachrichtenanzeige und Kontextkomprimierungslogik verbessert',
new_0_5_13_10: 'Chat-Abschluss-Sound-Toggle und leere Cron-Stilllauf-Historie korrigiert',
2026-05-06 16:39:46 +08:00
new_0_5_12_1: 'Batch-Session-Löschung: Checkbox-Mehrfachauswahl, Alle auswählen und Batch-Delete für verbessertes Session-Management',
new_0_5_12_2: 'Visueller Context-Length-Editor: Token-Anzahl anklicken für Edit-Popup mit benutzerdefiniertem Limit',
new_0_5_12_3: 'Fix mention Tastaturauswahl: Custom Dropdown statt NDropdown mit Tastaturnavigation und Scroll-Folge',
2026-05-06 16:39:46 +08:00
new_0_5_12_4: 'Chat-Abschluss-Sound: Auto-Play-Toggle für bessere UX',
new_0_5_12_5: 'Verbesserte Chat-Nachrichtenanzeige: Filter leere Assistant-Nachrichten und bessere Logik',
new_0_5_12_6: 'Verbesserter Update-Mechanismus: npm prefix -g für dynamische Pfad-Auflösung (Homebrew-Unterstützung)',
new_0_5_10_1: 'Automatisierung von Docker-Image-Builds bei GitHub-Release mit versionierten Tags (z.B. :v0.5.10)',
new_0_5_10_2: 'Sitzungsautorisierungsmodus-Konfiguration hinzufügen: approvals.mode (aus/manuell)',
new_0_5_10_3: 'Automatische OpenAPI-Dokumentationserstellung hinzufügen (94 Endpunkte, 24 Tags)',
new_0_5_10_4: 'Media-Rendering verbessern: Unterstützung für Bilder, Videos und Dateien in Markdown',
new_0_5_10_5: 'Gruppenchat-Prompts optimieren und Media-Handling korrigieren',
2026-05-04 12:46:26 +08:00
new_0_5_9_2: 'GitHub-Issue- und Pull-Request-Vorlagen für besseren Contribution-Workflow hinzugefügt',
2026-05-03 22:10:40 +08:00
new_0_5_8_1: 'Drawer-Panel mit Mobile-Sidebar-Support und anpassbarem Rainbow-Button hinzugefügt',
new_0_5_8_2: 'Profile-Switching-State-Sync-Problem behoben mit sofortiger UI-Aktualisierung und Backend-Verifizierung',
new_0_5_8_3: 'Sonderzeichen und Emoji in der Sprachwiedergabe gefiltert für bessere Text-to-Speech',
new_0_5_8_4: 'Fehlende i18n-Schlüssel hinzugefügt und Sitzungsdatenquelle vereinheitlicht (Datenbank-Priorität)',
new_0_5_8_5: 'Vite-Build-Konfiguration für schnellere Docker-Builds mit esbuild und Chunk-Splitting optimiert',
new_0_5_7_1: 'Kontextkomprimierung für rich content (Bilder, Dateien) optimiert, verbesserte Verarbeitung von Tool-Nachrichten',
new_0_5_7_2: 'Synchronisation von Sitzungen verbessert mit Batch-Inserts und Transaktionsschutz für Datenkonsistenz',
new_0_5_7_3: 'Empfang von usage.updated-Ereignissen behoben, um genaues Token-Tracking über Läufe hinweg zu gewährleisten',
new_0_5_5_1: '🎉 Tag der Arbeit! Heute wird nicht gearbeitet, bitte habt Verständnis',
new_0_5_5_2: 'Verlaufsseite für Hermes-Sitzungshistorie hinzugefügt',
new_0_5_5_3: 'Verlaufsseite verwaltet Sitzungen unabhängig ohne Störung des aktiven Chats',
new_0_5_5_4: 'Verlaufsseite lädt automatisch erste CLI-Sitzung',
new_0_5_5_5: 'HistoryMessageList-Komponente mit Session-Prop-Injection',
new_0_5_5_6: 'Leere Nachrichten und Tool-Nachrichten ohne toolName gefiltert',
new_0_5_5_7: 'LocalStorage-Sitzungscache entfernt, Daten direkt vom Backend',
new_0_5_5_8: 'Profile-Umschaltung optimiert, veraltete Cache-Aufrufe entfernt',
2026-05-01 08:29:06 +08:00
new_0_5_4_2: 'Fix concurrent chat sessions event cross-talk with WebSocket event routing refactoring',
new_0_5_4_3: 'Fix cron job edit payloads with partial PATCH to support long prompt name-only edits',
new_0_5_4_4: 'Fix web terminal Hermes CLI availability after Docker deployment',
new_0_5_4_5: 'Add workspace dialog i18n translations for title and improve session persistence',
new_0_5_4_6: 'Support code block copy feedback with user notifications',
new_0_5_4_7: 'Align usage analytics with Hermes state DB schema',
new_0_4_8_2: 'Fix nested markdown fence rendering truncation',
new_0_4_8_3: 'Fix compressed session lineage projection and search',
new_0_4_8_4: 'Optimize session list N+1 queries and fix search 500 on non-CJK input',
new_0_4_8_5: 'Fix forced scroll to bottom when switching back from other tabs',
new_0_4_8_6: 'Smooth session switch with loading transition overlay',
new_0_4_8_7: 'Fix login token validation using Hermes session endpoint',
new_0_4_8_8: 'Fix image attachments broken after page refresh (blob URL persistence)',
new_0_4_8_9: 'Click image attachments to preview in fullscreen overlay',
new_0_4_8_10: 'Move upload directory from temp to ~/.hermes-web-ui/upload',
new_0_4_7_1: 'Echtzeit-Streaming-Anzeige von Denk-/Argumentationsblocken',
new_0_4_7_2: 'Prepare-Skript wahrend Docker-Build uberspringen',
new_0_4_7_3: 'Gruppenchat-Mobile-UX-Verbesserungen und UI-Aufpolierung',
new_0_4_7_4: 'Verbleibende Kontext-Token auf 0 statt auf negativ begrenzen',
new_0_4_7_5: 'Alibaba Coding Plan integrierter Provider mit .env base_url-Uberschreibung hinzugefugt',
new_0_4_7_6: 'Remote-Profile beim Start uberspringen, um Hanger zu vermeiden',
new_0_4_7_7: 'Stillschweigend verschluckte Laufzeitfehler erkennen und anzeigen',
new_0_4_7_8: 'Provider-bewusste Kontextlangen-Abfrage',
new_0_4_7_9: 'config.model beim Wechsel zurucksetzen und CLI-Custom-Provider auflosen',
new_0_4_7_10: 'base_url_env aus .env beim Loschen des integrierten Providers entfernen',
new_0_4_7_11: 'Gruppenchat-Raum-Seitenleistenhintergrund an die Sitzungsliste anpassen',
new_0_4_5_1: 'Add group chat with multi-agent rooms, mention routing, and typing status recovery',
2026-04-24 20:54:06 +08:00
new_0_4_5_2: 'Rewrite model-context config to use YAML with context_length setting',
new_0_4_5_3: 'Add gpt-5.5 to OpenAI Codex model list',
new_0_4_5_4: 'Replace jobs proxy with local controller and optimize model loading',
new_0_4_5_5: 'Add i18n support for custom model feature in ModelSelector',
new_0_4_5_6: 'Fix sidebar i18n missing key warnings',
new_0_4_5_7: 'Clear all localStorage on logout',
new_0_4_5_8: 'Add periodic log rotation to prevent unbounded log growth',
new_0_4_2_1: 'Token-Nutzungsverfolgung und dynamische Kontextlange hinzugefugt',
new_0_4_2_2: 'Sitzungssuche-Modal hinzugefugt',
new_0_4_2_3: 'Gruppenchat-System mit Socket.IO und SQLite wiederhergestellt',
new_0_4_2_4: 'Angeheftete Sitzungen und Live-Monitor hinzugefugt',
new_0_4_2_5: 'Eingebaute Provider-Erkennung und Modellabgleich behoben',
},
// 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',
},
// 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',
noAgents: 'Keine Agenten in diesem Raum',
members: 'Mitglieder',
roomCreated: 'Raum erstellt',
roomDeleted: 'Raum gelöscht',
deleteRoomConfirm: 'Diesen Raum löschen?',
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',
},
}