Allow sending multiple messages while a run is active. Messages are queued on the server and processed sequentially after each run completes. Each completed assistant message triggers speech playback independently, and the UI shows queue status with a badge indicator. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
836 lines
37 KiB
TypeScript
836 lines
37 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',
|
|
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',
|
|
history: 'Verlauf',
|
|
jobs: 'Geplante Aufgaben',
|
|
models: 'Modelle',
|
|
profiles: 'Profile',
|
|
skills: 'Fahigkeiten',
|
|
memory: 'Gedachtnis',
|
|
logs: 'Protokolle',
|
|
usage: '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}',
|
|
updating: 'Aktualisierung...',
|
|
updateSuccess: 'Aktualisierung abgeschlossen, bitte Server neu starten',
|
|
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',
|
|
},
|
|
|
|
// 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',
|
|
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: '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',
|
|
},
|
|
},
|
|
|
|
// 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: 'Benutzerdefinierter Modellname',
|
|
customModelHint: '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',
|
|
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',
|
|
},
|
|
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',
|
|
},
|
|
},
|
|
|
|
// 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}',
|
|
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 (letzte 30 Tage)',
|
|
date: 'Datum',
|
|
tokens: 'Tokens',
|
|
cache: 'Cache',
|
|
cacheRead: 'Cache Read',
|
|
cacheWrite: 'Cache Write',
|
|
sessions: 'Sitzungen',
|
|
cost: 'Kosten',
|
|
noData: 'Keine Nutzungsdaten',
|
|
},
|
|
|
|
// 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',
|
|
new_0_5_9_1: 'Profilverwaltung在整个应用程序中统一,mit konsistentem API und State-Management',
|
|
|
|
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',
|
|
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',
|
|
new_0_5_9_2: 'GitHub-Issue- und Pull-Request-Vorlagen für besseren Contribution-Workflow hinzugefügt',
|
|
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',
|
|
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_5_3_1: 'Improve reasoning process display with persistence across page refreshes',
|
|
new_0_5_3_2: 'Optimize stringified array format parsing to extract thinking/text/tool_calls',
|
|
new_0_5_3_3: 'Improve log display by removing ellipsis and showing full content',
|
|
new_0_5_3_4: 'Add detailed logging for format conversion and parsing',
|
|
new_0_5_3_5: 'Optimize token calculation to accurately include tool results',
|
|
new_0_5_2_1: 'Convert conversation history to Anthropic format before sending to Gateway',
|
|
new_0_5_2_2: 'Add bidirectional reasoning sync between memory and database',
|
|
new_0_5_2_3: 'Add message pagination with DESC query + array reverse for performance',
|
|
new_0_5_2_4: 'Clean up debug code and unused imports',
|
|
new_0_5_2_5: 'Remove auto-resumed event trigger to avoid timing issues',
|
|
new_0_5_2_6: 'Use reasoning field consistently across codebase',
|
|
new_0_5_1_1: 'Auto-sync Hermes history sessions on first startup',
|
|
new_0_5_1_2: 'Fix session sync failure with old Hermes versions (backward compatible)',
|
|
new_0_5_1_3: 'Smart cleanup of exclusive platform credentials on profile clone (Telegram, Discord, Slack, etc.)',
|
|
new_0_5_1_4: 'Auto-normalize profile names to lowercase to avoid backend validation errors',
|
|
new_0_5_1_5: 'Fix tool_call_id missing in tool messages for OpenAI API compatibility',
|
|
new_0_5_1_6: 'Unify SQLite table schema management and initialization',
|
|
new_0_5_1_7: 'Optimize model list layout in Provider cards (fixed height, tag alignment)',
|
|
new_0_5_1_8: 'Fix display issue with single-line long code blocks in user messages',
|
|
new_0_5_1_9: 'Fix web terminal rendering errors in Docker deployment',
|
|
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',
|
|
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',
|
|
},
|
|
}
|