'use strict'; /* ================= Translations ================= */ const I18N = { en: { locale: 'en-US', searchAria: 'Search logs', searchSimple: 'Search… error -timeout "disk full" (press /)', searchLogsql: 'LogsQL: error AND host:web-01 | sort by (_time)', modeTitle: 'Switch between simple search and LogsQL', live: 'Live', liveTitle: 'Show new messages live', liveUnavailable: 'Live view is not available in LogsQL mode', settings: 'Settings', theme: 'Light / dark theme', logout: 'Log out', close: 'Close', rangeAria: 'Time range', severityAria: 'Severity', hostAria: 'Host', appAria: 'Application', histoAria: 'Log volume over time', r5m: '5 min', r15m: '15 min', r1h: '1 hour', r6h: '6 hours', r24h: '24 hours', r7d: '7 days', r30d: '30 days', rAll: 'All', sevAll: 'All severities', sev2: 'Critical and above', sev3: 'Errors and above', sev4: 'Warnings and above', sev5: 'Notice and above', sev6: 'Info and above', allHosts: 'All hosts', allApps: 'All apps', emptyTitle: 'No matching logs.', emptyHint: 'Widen the time range or send syslog messages to port 514 (UDP or TCP).', count: (n) => `${n} ${n === 1 ? 'log' : 'logs'} shown`, histoMax: (n) => `max ${n} / interval`, searchError: 'Search error: ', connLive: 'live', connConnecting: 'connecting…', connRetry: 'reconnecting…', connPaused: 'live paused', connLogsql: 'live unavailable (LogsQL)', newLogs: (n) => `↑ ${n} new ${n === 1 ? 'log' : 'logs'}`, skipped: (n) => `${n} messages not shown (rate too high)`, stats: (s) => `received ${s.received} · stored ${s.ingested} · dropped ${s.dropped} · queue ${s.queue}`, storageErr: 'storage: ', spooled: (n) => `${n} waiting on disk`, unreachable: 'server unreachable', fTime: 'timestamp', fMsg: 'message', fPid: 'pid', fSd: 'structured data', filterHost: 'Filter on this host', filterApp: 'Filter on this app', copyMsg: 'Copy message', copyJson: 'Copy as JSON', copied: 'Copied', language: 'Language', tagsTitle: 'Color tags', tagsHelp: 'Keywords are highlighted in messages. Changes are saved automatically. When tags overlap, the one highest in the list wins.', addTag: '+ Add tag', resetTags: 'Restore default tags', optWhole: 'whole word', optWholeTitle: 'Only color whole words (avoids "ok" in "token")', optCaseTitle: 'Match case', optRegexTitle: 'Regular expression', optActive: 'active', optActiveTitle: 'Enable this tag', colorAria: 'Color', keyword: 'keyword', preview: 'preview', del: 'Delete', noTags: 'No tags.', newTag: 'new', confirmDelete: (p) => `Delete tag "${p}"?`, confirmReset: 'Replace all tags with the defaults (warning, error)?', presetAria: 'Add a preset', presetPick: '+ Preset…', tagFilter: 'Filter tags (keyword, label or code)', tagCount: (n) => (n.shown === n.total ? `${n.total} tag${n.total === 1 ? '' : 's'}` : `${n.shown} / ${n.total} tags`), noTagMatch: 'No tag matches the filter.', presetAdded: (n) => (n ? `${n} tag(s) added` : 'These tags are already in the list'), presetsFileErr: (f) => `Invalid presets file ${f}, built-in presets used: `, tagsLoadErr: 'Tags: ', err_pattern_required: 'The keyword is required', err_invalid_color: 'Invalid color (expected #rrggbb)', err_invalid_regex: 'Invalid regular expression', err_tag_not_found: 'Tag not found', err_too_many_tags: 'Too many tags (99 at most)', err_live_logsql: 'Live view is not available in LogsQL mode', dateTime: 'Date & time', tzLabel: 'Time zone', fmtLabel: 'Reception time format', tzBrowser: (z) => `Browser time zone (${z})`, tzGroups: { General: 'General', Europe: 'Europe', Africa: 'Africa', America: 'Americas', Asia: 'Asia', Oceania: 'Oceania & Pacific', Other: 'Atlantic & Indian Ocean' }, fmtEpoch: 'Unix epoch (milliseconds)', timePreview: 'Preview: ', timeHelp: 'The reception time comes from the server clock. The time zone applies to every date shown.', fReceived: 'received', rcvTitle: 'Received by the server', msgTimeTitle: 'Timestamp from the message', fHostName: 'host name (DNS)', fHostIp: 'host IP', clickHost: 'Click to filter on this host', clickApp: 'Click to filter on this app', sourceAria: 'Source', srcAll: 'All sources', tabSources: 'Log sources', srcHost: 'Host system', srcKernel: 'Kernel (dmesg)', srcFile: 'Files', filesTitle: 'Log files', addFile: '+ Add a file', filesNone: 'No file yet: add one to follow the logs of Traefik, nginx or any other program.', fileName: 'Name (app)', filePath: '/logs/traefik/*.log', fileHost: 'Host', fileRegex: '(?P