Repository navigation
feat(admin): German Privacy settings page and access log - #438
Merged
Merged
Conversation
Slice 7 of the board card "Admin UI multi-language"
(PVTI_lADOElDmdM4Bn50jzhCKGsA): Settings > Privacy reads its copy from
the catalog (data controller, retention, own policy, CV scanning, email
delivery, save) and so does the access log under it (filters, headers,
action words, empty state). Relative ages ("5m ago") get a catalog
wording through relativeAge + formatAge, so German shows "vor 5 Min.".
English is unchanged outside a LocaleProvider.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RPybysqu7n4L5GsM2mD7yT
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Board card: Admin UI multi-language (PVTI_lADOElDmdM4Bn50jzhCKGsA)
Slice 7 of the card (slice 1 #432: catalog, German shell, language picker; 2 #433: settings tabs, Account profile and password; 3 #434: sign-in methods, two-factor, sessions; 4 #435: availability and companies; 5 #436: Developers page; 6 #437: API keys and webhooks). Draft card, so no
Closes.Research
app/admin/privacy/page.tsx) and theAccessLogSectionunder it. Both show relative ages throughrelativeTime("2h ago", "5m ago"), which has no locale.Plan and scope
privacy.*keys (en + de) for every label, hint, retention option ("1 Monat", "12 Monate", "Standard - 6 Monate"), the retention note, the last purge line, CV scanning and SMTP states, buttons and fallback errors.accessLog.*keys for the title, description, filters, column headers, action words, API key / removed teammate actor names, CSV link, empty state, Show more.time.*keys plusrelativeAge()inlib/time.ts(the unit and count behindrelativeTime, which now reuses it with identical output) andformatAge(t, iso, now)inlib/i18n/locale.tsx; German reads "vor 5 Min.", "vor 2 Std.", "vor 4 T.".language.partial(en + de) now lists the Privacy page.In scope: the above. Out of scope (next slices): Branding, Hiring, Emails, Team, Billing settings pages, the other admin screens, server-side storage of the language, locale-aware ages on other screens (they keep
relativeTimeand can switch toformatAge), candidate surfaces (card D3). Server error messages, env var names and placeholder example addresses stay untranslated.Copy notes: formal "Sie", "Bewerberinnen und Bewerber" as in earlier slices; no en or em dashes.
Acceptance (this slice):
messages.test.tsparity and placeholders).Testing
pnpm typecheckOK,pnpm lint0 errors (3 pre-existing warnings),pnpm test128 files / 1254 tests passed (+10).PrivacySettingsPage in German(labels, retention options, retention note, "Letzte Löschung: vor 2 Std.", SMTP/scan copy, notice link, save status, purge never ran),AccessLogSection in German(filters, headers, action words, API key and removed teammate, "vor 5 Min." / "vor 1 Std." / "vor 4 T.", Mehr anzeigen, empty state),relativeAgeunits.git diff | md5sumidentical on both sides (2efd6c8f...).🤖 Generated with Claude Code
https://claude.ai/code/session_01RPybysqu7n4L5GsM2mD7yT
Status (run 2026-11-09 15:35 UTC)
All checks green, merged by auto-merge. The card's acceptance (admin fully in German) is still not met, so the card goes back to Ready for the next slice: the Branding, Hiring, Emails, Team and Billing settings pages, the other admin screens, server-side storage of the language and locale-aware dates/ages on the remaining screens.