{{ t('login.title', '访问认证') }}
{{ t('login.desc', '请输入访问令牌以继续') }}
{{ loginError }}
{{ t('readonly.banner', '只读模式 - 写操作已禁用') }}
{{ toast.message }}
{{ t('sidebar.' + activeNav) }} {{ activeId }}
{{ t('envLabels.' + currentEnv) }}
{{ currentTime }}

{{ t('overview.heroSubtitle') }}

{{ t('overview.totalLings') }}
{{ lings.length }}
{{ t('overview.activeLings') }}
{{ lings.filter(p => p.status === 'ACTIVE' || p.status === 'DEGRADED').length }}
{{ t('overview.canaryLings') }}
{{ lings.filter(p => (p.versionDetails?.length || 0) >= 2).length }}

{{ t('overview.recentEvents') }}

{{ t('overview.noEvents') }}

[{{ formatTime(event.timestamp) }}] [{{ event.lingId }}] [{{ event.version }}] {{ event.title }}

{{ t('overview.lingOverview') }}

{{ t('overview.noLings') }}

{{ t('overview.noLingsHint') }}

{{ t('overview.colName') }} {{ t('overview.colStatus') }} {{ t('overview.colVersion') }} {{ t('overview.colTraffic') }}
{{ ling.lingId }}
{{ t('status.' + ling.status?.toLowerCase()) || ling.status }} {{ ling.activeVersion || '-' }} +{{ ling.versionDetails.length - 1 }}
{{ 100 - (ling.canaryTrafficPct || 0) }}%
100%

{{ t('lingCenter.title') }} [{{ activeId }}]

{{ t('status.' + activeLing.status?.toLowerCase()) || activeLing.status }}

{{ t('control.selectLing') }}

{{ t('control.versionInstances') }}

{{ t('control.version') }} {{ t('control.status') }} {{ t('control.traffic') }} {{ t('control.actions') }}
{{ v.version }} DEFAULT CANARY {{ v.status }}
{{ v.trafficWeight }}%

{{ t('control.resourceIsolation') }}

{{ t('control.localCacheNamespaceTitle') }} {{ t('control.namespaceEnabled') }}
{{ t('control.namespacePrefix') }}: {{ activeLing.lingId }}
{{ t('demo.ipcAuth') }} {{ ipcEnabled ? 'ENABLED' : 'DISABLED' }}
{{ t('demo.target') }}: {{ ipcTarget }}

{{ t('lingCenter.diskPackages') }}

{{ t('lingCenter.noPackages') }}

{{ pkg.fileName }}
{{ t('lingCenter.fileSize') }}: {{ formatSize(pkg.fileSize) }} · ID: {{ pkg.lingId }} ({{ pkg.version }}) {{ t('lingCenter.deployed') }}
{{ t('lingCenter.permissions') }}
{{ t('lingCenter.noPermissions') }}
{{ p }}

{{ t('monitor.basicInfo') }}

{{ t('monitor.jvmVersion') }}
{{ jvmInfo.version }}
{{ t('monitor.jvmVendor') }}
{{ jvmInfo.vendor }}
{{ t('monitor.osName') }}
{{ jvmInfo.osName }}
{{ t('monitor.osArch') }}
{{ jvmInfo.osArch }}
{{ t('monitor.uptime') }}
{{ formatUptime(jvmInfo.uptimeMs) }}
{{ t('monitor.pid') }}
{{ jvmInfo.pid }}

{{ t('monitor.metricsTitle') }}

{{ t('performance.cpu') }}
{{ perfMetrics.cpu.toFixed(1) }}%
{{ t('performance.heap') }}
{{ perfMetrics.heapUsage }}%
{{ perfMetrics.heapUsed }}MB / {{ perfMetrics.heapMax }}MB
{{ t('performance.metaspace') }}
{{ perfMetrics.metaspaceUsage }}%
{{ perfMetrics.metaspaceUsed }}KB / {{ perfMetrics.metaspaceMax }}KB
{{ t('performance.threads') }}
{{ perfMetrics.threads }}
Peak: {{ perfMetrics.peakThreads }}
{{ t('monitor.classCount') }}
{{ perfMetrics.loadedClassCount }}
{{ t('performance.unloadedClasses') }}: {{ perfMetrics.unloadedClassCount }}
ClassLoader
{{ perfMetrics.lingClassLoaderCount }}

{{ t('monitor.gcTitle') }}

{{ t('monitor.gcTotalCount') }} {{ gcTotal.totalCount }}
{{ t('monitor.gcTotalTime') }} {{ gcTotal.totalTimeMs }} {{ t('monitor.gcTimeUnit') }}
{{ t('monitor.gcEmpty') }}
{{ gc.name }}
{{ gc.count }} {{ t('monitor.gcCountUnit') }}
{{ gc.timeMs }} {{ t('monitor.gcTimeUnit') }}

{{ t('monitor.chartTitle') }}

{{ t('monitor.timeRange') }}:
{{ chart.label }}

{{ t('monitor.resourceUsage') }}

{{ t('monitor.resourceLingId') }} {{ t('monitor.resourceVersion') }} {{ t('monitor.resourceClassCount') }} {{ t('monitor.resourceThreadCount') }} {{ t('monitor.resourceCpuTime') }} {{ t('monitor.resourceHeapDelta') }} {{ t('monitor.resourceMetaspace') }}
{{ t('monitor.resourceEmpty') }}

{{ t('monitor.leakTitle') }}

{{ t('monitor.leakLing') }} {{ t('monitor.leakStatus') }} {{ t('monitor.leakMessage') }}
{{ t('monitor.leakEmpty') }}
{{ d.lingId }} {{ t('monitor.leakSuspected') }} {{ t('monitor.leakCollected') }} {{ d.message }}

{{ t('monitor.threadPoolTitle') }}

{{ t('monitor.threadPoolLingId') }} {{ t('monitor.threadPoolActive') }} {{ t('monitor.threadPoolSize') }} {{ t('monitor.threadPoolMax') }} {{ t('monitor.threadPoolQueue') }}
{{ t('monitor.threadPoolEmpty') }}
{{ tp.lingId }} {{ tp.activeCount }} {{ tp.poolSize }} {{ tp.maxThreads }} {{ tp.queueSize }}
{{ t('governance.configPermDesc') }} {{ t('governance.configGovDesc') }}

{{ t('control.permissions') }}

{{ t('control.selectLing') }}

{{ t('control.dbRead') }}
{{ t('control.dbWrite') }}
{{ t('control.cacheRead') }}
{{ t('control.cacheWrite') }}

{{ t('control.invocationGovernance') }}

{{ t('control.selectLing') }}

{{ t('governance.presetHint') }}

{{ t('governance.matrixTitle') }}

{{ t('governance.matrixHint') }}
{{ t('governance.matrixLingId') }} {{ matrixSortKey==='lingId' ? (matrixSortAsc?'▲':'▼') : '' }} {{ t('governance.matrixVersion') }} {{ matrixSortKey==='version' ? (matrixSortAsc?'▲':'▼') : '' }} {{ t('governance.matrixRole') }} {{ t('governance.matrixTraffic') }} {{ matrixSortKey==='trafficWeight' ? (matrixSortAsc?'▲':'▼') : '' }} {{ t('governance.matrixTimeout') }} {{ matrixSortKey==='timeoutMs' ? (matrixSortAsc?'▲':'▼') : '' }} {{ t('governance.matrixRateLimit') }} {{ matrixSortKey==='rateLimitPerSecond' ? (matrixSortAsc?'▲':'▼') : '' }} {{ t('governance.matrixConcurrent') }} {{ matrixSortKey==='maxConcurrentThreads' ? (matrixSortAsc?'▲':'▼') : '' }} {{ t('governance.matrixRetry') }} {{ matrixSortKey==='retryCount' ? (matrixSortAsc?'▲':'▼') : '' }}
{{ t('governance.matrixEmpty') }}
{{ row.lingId }} {{ row.version }} {{ t('governance.matrixDefault') }} {{ t('governance.matrixCanary') }} {{ row.trafficWeight }} {{ row.timeoutMs ?? '-' }} {{ row.rateLimitPerSecond ?? '-' }} {{ row.maxConcurrentThreads ?? '-' }} {{ row.retryCount ?? '-' }}

{{ t('traffic.title') }}

{{ t('traffic.notSelected') }} {{ t('traffic.inactive') }} {{ t('traffic.canary') }} {{ t('traffic.singleVersion') }}
{{ t('canary.' + canaryDecision.recommendation.toLowerCase()) || canaryDecision.recommendation }} {{ canaryDecision.reasonKey ? t(canaryDecision.reasonKey) : canaryDecision.reason }} {{ t('governance.canaryStableErrorRate') }} {{ (canaryDecision.stableErrorRate * 100).toFixed(2) }}% / {{ t('governance.canaryCanaryErrorRate') }} {{ (canaryDecision.canaryErrorRate * 100).toFixed(2) }}%; {{ t('governance.canaryStableP99') }} {{ canaryDecision.stableP99 }}ms / {{ t('governance.canaryCanaryP99') }} {{ canaryDecision.canaryP99 }}ms
{{ t('traffic.total') }}
{{ stats.total }}
{{ t('traffic.v1Hit') }}
{{ stats.v1Pct }}%
{{ t('traffic.v2Hit') }}
{{ canCanary && canOperate ? stats.v2Pct + '%' : 'N/A' }}
{{ t('traffic.drift') }}
{{ canCanary && canOperate ? formatDrift(stats.v2Pct - canaryPct) : 'N/A' }}
{{ t('traffic.active') }}
{{ stats.active || 0 }}
{{ lastAudit.allowed ? t('audit.success') : t('audit.denied') }} {{ t('audit.devPass') }}

[{{ lastAudit.traceId }}] {{ lastAudit.message }}

{{ t('audit.ruleSource') }}: {{ lastAudit.ruleSource }}

{{ t('control.selectLing') }}

{{ t('runtimeReadiness.title') }}

{{ t('control.selectLing') }}

{{ t('contractRouting.contractList') }}

{{ t('contractRouting.contractCount', {n: contractsList.length}) }}

{{ t('contractRouting.empty') }}

{{ cid }}

{{ t('contractRouting.selectContract') }}

{{ t('migration.totalContracts') }}
{{ migrationList.length }}
{{ t('migration.staleContracts') }}
{{ staleCount }}
{{ t('migration.staleContractsHint') }}
{{ t('migration.coreTotal') }}
{{ totalCoreInv.toLocaleString() }}
{{ t('migration.lingTotal') }}
{{ totalLingInv.toLocaleString() }}

{{ t('migration.title') }}

{{ t('migration.empty') }}

{{ t('migration.contractId') }} {{ t('migration.coreInvocations') }} {{ t('migration.lingInvocations') }} {{ t('migration.coreRatio') }} {{ t('migration.coreAvgDuration') }} {{ t('migration.lingAvgDuration') }} {{ t('migration.coreFailures') }} {{ t('migration.lingFailures') }} {{ t('migration.providers') }} {{ t('migration.status') }}
{{ m.contractId }} {{ (m.coreInvocations || 0).toLocaleString() }} {{ (m.lingInvocations || 0).toLocaleString() }}
{{ formatRatio(m.coreTrafficRatio) }}
{{ m.coreAvgDurationMs ? m.coreAvgDurationMs.toFixed(2) : '-' }} {{ m.lingAvgDurationMs ? m.lingAvgDurationMs.toFixed(2) : '-' }} {{ m.coreFailures || 0 }} {{ m.lingFailures || 0 }} {{ m.providerCount }} {{ t('migration.statusStale') }} {{ t('migration.statusMigrating') }}

{{ t('demo.title') }}

{{ canOperate ? t('demo.ready') : t('demo.inactive') }}

{{ t('demo.lingNotActive') }}

{{ t('demo.ipcAuth') }}

{{ t('playground.title') }}

{{ t('playground.caseLibrary') }}
{{ t('playground.noCases') }}
{{ grp.lingId }}
{{ testCase.name }}
{{ testCase.methodSignature }}
{{ t('playground.realHint') }}
{{ t('playground.simulationHint') }}
{{ t('playground.proportionalHint') }}

{{ t('control.selectLing') }}

{{ t('playground.noServices') }}

{{ t('playground.version') }}: