df797d09b2
- Add StepFun provider (API key auth, STEPFUN_API_KEY) - Add Nous Portal provider with full OAuth device code flow (device code request → poll for token → mint agent key → save to auth.json) - Add NousLoginModal component for OAuth UI (user code display + verification link) - Update ProviderFormModal to handle Nous OAuth flow (hide API key fields) - Add nous-auth backend controller and routes - Update PROVIDER_ENV_MAP with stepfun and nous entries - Add i18n translations for Nous OAuth in all 8 locales Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
525 lines
19 KiB
TypeScript
525 lines
19 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',
|
|
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',
|
|
jobs: 'Geplante Aufgaben',
|
|
models: 'Modelle',
|
|
profiles: 'Profile',
|
|
skills: 'Fahigkeiten',
|
|
memory: 'Gedachtnis',
|
|
logs: 'Protokolle',
|
|
usage: 'Nutzung',
|
|
channels: 'Kanale',
|
|
terminal: 'Terminal',
|
|
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',
|
|
changelog: 'Anderungsprotokoll',
|
|
noChangelog: 'Kein Anderungsprotokoll verfugbar',
|
|
},
|
|
|
|
// Chat
|
|
chat: {
|
|
contextRemaining: 'übrig',
|
|
emptyState: 'Starten Sie eine Konversation mit Hermes Agent',
|
|
inputPlaceholder: 'Nachricht eingeben... (Enter zum Senden, Shift+Enter fur neue Zeile)',
|
|
attachFiles: 'Dateien anhangen',
|
|
stop: 'Stopp',
|
|
send: 'Senden',
|
|
contextUsed: 'Kontext verwendet:',
|
|
sessions: 'Sitzungen',
|
|
noSessions: 'Keine Sitzungen',
|
|
newChat: 'Neuer Chat',
|
|
deleteSession: 'Diese Sitzung loschen?',
|
|
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',
|
|
enterNewTitle: 'Neuen Titel eingeben',
|
|
other: 'Sonstige',
|
|
runFailed: 'Ausfuhrung fehlgeschlagen',
|
|
error: 'Fehler',
|
|
tool: 'Werkzeug',
|
|
arguments: 'Argumente',
|
|
result: 'Ergebnis',
|
|
truncated: '... (abgeschnitten)',
|
|
},
|
|
|
|
// 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)',
|
|
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: 'Aufgabe ausgelost',
|
|
jobDeleted: 'Aufgabe geloscht',
|
|
status: {
|
|
running: 'Lauft',
|
|
paused: 'Pausiert',
|
|
disabled: 'Deaktiviert',
|
|
scheduled: 'Geplant',
|
|
},
|
|
info: {
|
|
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 auslosen',
|
|
},
|
|
},
|
|
|
|
// 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',
|
|
toggleFailed: 'Aktivieren/Deaktivieren der Fahigkeit fehlgeschlagen',
|
|
},
|
|
|
|
// 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',
|
|
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',
|
|
noProviders: 'Keine Anbieter gefunden. Fugen Sie einen benutzerdefinierten Anbieter hinzu, um zu beginnen.',
|
|
builtIn: 'Integriert',
|
|
customType: 'Benutzerdefiniert',
|
|
provider: 'Anbieter',
|
|
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',
|
|
newName: 'Neuer Name',
|
|
newNamePlaceholder: 'Neuen Namen eingeben',
|
|
cloneFromCurrent: 'Aus aktuellem Profil klonen',
|
|
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',
|
|
},
|
|
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)',
|
|
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}',
|
|
},
|
|
|
|
// 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',
|
|
sessions: 'Sitzungen',
|
|
cost: 'Kosten',
|
|
noData: 'Keine Nutzungsdaten',
|
|
},
|
|
|
|
// Anderungsprotokoll
|
|
changelog: {
|
|
new_0_4_3_1: 'Benutzername/Passwort-Login neben Token-Authentifizierung hinzugefugt',
|
|
new_0_4_3_2: 'Kontoeinstellungen fur Anmeldeinformationen hinzugefugt',
|
|
new_0_4_3_3: 'Abmelden-Schaltflache in der Seitenleiste hinzugefugt',
|
|
new_0_4_3_4: 'Anderungsprotokoll-Popup durch Klick auf Versionsnummer hinzugefugt',
|
|
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',
|
|
new_0_4_1_1: 'Authentifizierungsumgehung und SPA-Bereitstellung behoben',
|
|
},
|
|
}
|