1268 lines
55 KiB
TypeScript
1268 lines
55 KiB
TypeScript
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',
|
||
},
|
||
},
|
||
}
|