feat: add 6 new locales (ja, ko, fr, es, de, pt) and UI polish
- Add Japanese, Korean, French, Spanish, German, Portuguese translations - Improve session active state visibility in both themes - Static language labels in LanguageSwitch component - Dark theme: lighten chat input background for better contrast - Fix system theme listener not toggling back to light Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,449 @@
|
||||
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',
|
||||
},
|
||||
|
||||
// Common
|
||||
common: {
|
||||
loading: 'Laden...',
|
||||
cancel: 'Abbrechen',
|
||||
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',
|
||||
},
|
||||
|
||||
// Chat
|
||||
chat: {
|
||||
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',
|
||||
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',
|
||||
selectModel: 'Modell auswahlen...',
|
||||
providerAdded: 'Anbieter hinzugefugt',
|
||||
providerDeleted: 'Anbieter geloscht',
|
||||
deleteProvider: 'Anbieter loschen',
|
||||
deleteConfirm: 'Mochten Sie "{name}" wirklich loschen?',
|
||||
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',
|
||||
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',
|
||||
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',
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user