feat(i18n): migrate hardcoded German strings to t() across 104 components/pages — AST-based batch with re-parse gate, 423 new de.json keys; tsc clean; vitest failures byte-identical to clean-tree baseline (pre-existing)
This commit is contained in:
@@ -198,7 +198,7 @@ function FreigabenTab() {
|
||||
<button
|
||||
onClick={() => setConfirmDelete(row)}
|
||||
className="p-1 rounded hover:bg-danger-50 text-danger-600"
|
||||
aria-label="Löschen"
|
||||
aria-label={t('settingsRechte.löschen')}
|
||||
>
|
||||
<Trash2 className="w-4 h-4" />
|
||||
</button>
|
||||
@@ -217,7 +217,7 @@ function FreigabenTab() {
|
||||
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
<Card title="Freigaben Übersicht">
|
||||
<Card title={t('settingsRechte.freigabenübersicht')}>
|
||||
<div className="flex gap-4 mb-4">
|
||||
<div className="w-64">
|
||||
<Select
|
||||
@@ -233,7 +233,7 @@ function FreigabenTab() {
|
||||
<div className="w-64">
|
||||
<Input
|
||||
label="Nach Principal suchen"
|
||||
placeholder="Name oder ID..."
|
||||
placeholder={t('settingsRechte.nameoderid')}
|
||||
value={filterPrincipal}
|
||||
onChange={(e) => setFilterPrincipal(e.target.value)}
|
||||
/>
|
||||
@@ -253,7 +253,7 @@ function FreigabenTab() {
|
||||
open={!!confirmDelete}
|
||||
onCancel={() => setConfirmDelete(null)}
|
||||
onConfirm={handleDelete}
|
||||
title="Berechtigung löschen"
|
||||
title={t('settingsRechte.berechtigunglöschen')}
|
||||
message={`Soll die Berechtigung für ${entityTypeMap.get(confirmDelete.entity_type) || confirmDelete.entity_type} wirklich gelöscht werden?`}
|
||||
confirmLabel={deleting ? 'Wird gelöscht...' : 'Löschen'}
|
||||
variant="danger"
|
||||
@@ -325,7 +325,7 @@ function AuditTab() {
|
||||
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
<Card title="Audit-Log für Berechtigungen">
|
||||
<Card title={t('settingsRechte.auditlogfürberechtigungen')}>
|
||||
<Table
|
||||
columns={columns}
|
||||
data={data?.items || []}
|
||||
@@ -384,7 +384,7 @@ export function SettingsRechtePage() {
|
||||
<h1 className="text-2xl font-bold text-secondary-900">Rechteverwaltung</h1>
|
||||
|
||||
<div className="border-b border-secondary-200">
|
||||
<nav className="flex gap-4" role="tablist" aria-label="Rechteverwaltung Tabs">
|
||||
<nav className="flex gap-4" role="tablist" aria-label={t('settingsRechte.rechteverwaltungtabs')}>
|
||||
{tabs.map((tab) => {
|
||||
const Icon = tab.icon;
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user