Repository navigation
Translate the audit log and analytics pages (DE, IT) - #1274
Merged
helpcodeai merged 4 commits intoOct 26, 2026
Merged
Conversation
Contributor
Author
|
@helpcodeai could you re-run the Playwright check when you get a moment? It was cancelled by the 15-minute job timeout, not by a test: "Install Playwright browsers" took 11.5 minutes this time instead of the usual 20–40 seconds, leaving about 3 minutes for the tests (run). The same slow install cancelled a Dependabot run earlier today. Re-running needs admin rights, so I can't trigger it from my side. Locally the full suite passes (282 tests), and the other checks are green. |
helpcodeai
enabled auto-merge (squash)
October 26, 2026 12:43
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Summary
Second area of #1271: the audit log (
/logs) and analytics (/analytics) in German and Italian, plus the app shell header that frames every signed-in page. It builds on #1272. No behaviour changes, andAccept-Language: en-USrenders exactly what it rendered before.Changes
app/logs/page.tsx: the title and subtitle, the Refresh button, the status filter and search, the connector and MCP server filters, the column headers, the status pills, the empty, filtered and end-of-log states, the expanded row (input, output or error, user, auth method, key, server, connector), the replay hints and "Copy as cURL" states, and pagination.SUCCESS/ERROR/TIMEOUT) is translated through a smallstatusLabelhelper. A status the backend adds later still shows as it arrives.API Key,Static Key, …) work the same way. An unknown method shows as it is.app/analytics/page.tsx: the title and subtitle, the 7d/30d/90d range, the stat tiles, the timeline and its tooltips, top tools, the three breakdowns and the cost note. The error and call counts use ICU plurals ("1 error" / "2 errors", "1 Fehler", "1 errore").components/app-shell.tsx: the header's own strings ("Toggle theme", "Open navigation", "Open command palette", the search button and its labels). This is the first PR that touches the shell, so it's translated here, as agreed in Translate the rest of the admin UI (DE, IT) #1271.messages/{en,de,it}.json: new namespacesappShell,auditLogandanalytics, with 82 keys each.The fallback "Failed to load" on
/analyticsis now read when rendering instead of being stored by the fetch callback, as in #1272. This keepstout of the callback's dependencies, so a language change doesn't trigger a refetch. The text and when it shows are unchanged.Left in English on purpose:
toLocaleString()), as before. Switching them to the UI language would change what English users with a non-English browser see today.COST_PER_CALL_MICROS,COST_PER_PROXY_CALL_MICROS).AppShellrenders but doesn't own: the command palette, the footer ("Powered by", Light / Dark / System) and the trial, usage, subscription and edition banners. Each has a fair amount of text of its own. I can take them as one small "shared chrome" PR after the page areas, or fold each into the area it fits best. Let me know which you prefer.Self-hosted vs Cloud: frontend only, with no backend, database or
ee/change.Translations
German and Italian aren't my native languages, so please review those strings. I kept the tone and terms from #1248, #1257 and #1272: German with Sie ("Audit-Log", "Connectors", "MCP-Server"), Italian with tu ("Registro di audit", "connettori", "server MCP"). Strings I'm least sure about:
/logs(expanded error row)/analyticsType
Testing
3 new tests in
tests/e2e/i18n.spec.ts, with a mocked audit log row and analytics breakdown:de-DE:/logsrenders in German, including the filters, a column header, pagination with a plural ("Seite 1 · 1 Ergebnis"), the status pill, the expanded row and the app shell's theme toggle.it-IT:/analyticsrenders in Italian, including the range button, a stat tile, the "1 errore" plural, the "no rate" hint and a breakdown title.en-US:/logsand/analyticsstay exactly as before ("Page 1 · 1 results", "Tool calls · 30d", "1 error").The key-parity test from #1248 covers the new keys. The existing specs that look for English text in the shell (
redesign.spec.tsandcommand-palette.spec.tsuse "Toggle theme") still pass.packages/frontendnpm run lintmain, none new)packages/frontendnpx tsc --noEmit -p tsconfig.jsonpackages/frontendnpm run buildpackages/frontendnpm run test:e2eThe backend isn't touched, so I didn't rerun its suite.
Checklist
packages/frontend/AGENTS.mdandnext-env.d.tswere rewritten bynext devlocally and are left out, as AGENTS.md asks.Related Issues
Part of #1271 (logs and analytics)