fix(ui): fehlende onError-Handler + i18n in Backends/Domains/Dashboard

- Backends: create + del Mutations bekommen onError; 'Backup'-Tag → t()
- Domains: create + del Mutations bekommen onError
- Dashboard: LicenseChip-Texte ('License OK', 'Trial') in t() überführt;
  useTranslation() direkt in der Komponente verwendet
- en/de: dashboard.licenseOk/licenseTrial/licenseTrialDays ergänzt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Debian
2026-05-24 12:42:37 +02:00
parent ca1ee64829
commit 6e52dc0620
9 changed files with 25 additions and 11 deletions

View File

@@ -713,6 +713,7 @@ function LicenseChip({ data }: { data: {
expires_at?: string
license_key?: string
}}) {
const { t } = useTranslation()
const exp = data.valid_until ?? data.expires_at
const days = exp ? Math.ceil((new Date(exp).getTime() - Date.now()) / 86_400_000) : null
const isTrial = data.type === 'trial' || (!data.license_key && data.status === 'active')
@@ -720,12 +721,15 @@ function LicenseChip({ data }: { data: {
return <Tag color="red">{data.status}</Tag>
}
if (isTrial) {
if (days != null && days <= 7) return <Tag color="red">Trial · {days}d</Tag>
if (days != null && days <= 14) return <Tag color="orange">Trial · {days}d</Tag>
return <Tag color="blue">{days != null ? `Trial · ${days}d` : 'Trial'}</Tag>
const trialLabel = days != null
? t('dashboard.licenseTrialDays', { days })
: t('dashboard.licenseTrial')
if (days != null && days <= 7) return <Tag color="red">{trialLabel}</Tag>
if (days != null && days <= 14) return <Tag color="orange">{trialLabel}</Tag>
return <Tag color="blue">{trialLabel}</Tag>
}
if (data.status === 'active') {
return <Tag color="green">License OK</Tag>
return <Tag color="green">{t('dashboard.licenseOk')}</Tag>
}
return null
}