Repository navigation
Translate the admin pages: users, settings, roles (DE, IT) - #1340
Conversation
helpcodeai
left a comment
There was a problem hiding this comment.
Thanks, this looks good to me.
I checked every key the three pages now use against settingsUsers, settingsRoles and settingsAdmin on this branch. All of them exist, and the English values match the strings they replace word for word. So Accept-Language: en-US renders what it rendered before, and the en-US test confirms it. Passing invites: 0 to settingsUsers.footer is fine: its =0 {} branch drops the invitation part.
The translations read naturally in Italian and German. To answer your questions:
- "Allowlist SSRF" / "SSRF-Allowlist" and "protezione SSRF" / "SSRF-Schutz": fine, keep them.
- "Data di iscrizione" works well as a column header, and "Beigetreten" is fine.
- "installazione" / "Installation" for deployment: fine for a self-hosted admin page. The SSRF card is hidden on Cloud anyway.
Replacing startsWith('Error') with a separate error flag, and renaming the t loop variable, are good fixes.
One small point you can leave for later: settingsRoles.access.save stays "Save (1 tools)" in English, while German already uses the plural form. It's existing text and outside the scope of this PR.
Approving. It will go to main with the rest of the i18n work.
Summary
Sixth area of #1271, last of three PRs: the older admin pages (
/admin/users,/admin/settings,/admin/roles) in German and Italian. It follows #1332 and #1333. No behaviour changes, andAccept-Language: en-USrenders exactly what it rendered before.Changes
Most of the text on these pages is the same as on their
/settingscounterparts, so the pages use the namespaces from #1332 and #1333 instead of copying them:app/admin/users/page.tsxusessettingsUsers:app/admin/roles/page.tsxusessettingsRoles:app/admin/settings/page.tsxusessettingsAdmin: the SMTP and footer link cards with their messages.messages/{en,de,it}.json: one new namespace,adminPages(14 keys), for the text only these pages have:msg.startsWith('Error'). They now use a separate error flag each, as in Translate the connector tools and tool editor (DE, IT) #1326, Translate the settings pages: profile, connections, organization, users (DE, IT) #1332 and Translate the settings pages: roles, administration, license, single sign-on (DE, IT) #1333.ton the roles page becamelist/x, so it doesn't shadow the translator.#1338 (the trial-ended wall) added no text to the settings pages. Its new "Delete your account" line is in
license-wall.tsx, with the other billing components.Left in English on purpose:
SSRF_ALLOWED_HOSTS,*.suffix, Docker Compose, and the example values in placeholders.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. Most of the text reuses strings you've already reviewed in #1332 and #1333. The new ones I'm least sure about:
/admin/users/admin/roles/admin/settingsType
Testing
3 new tests in
tests/e2e/i18n.spec.ts, with a mocked role, two tools and the SSRF allowlist:de-DE:/admin/users(the table, the date, the footer count, the invite form) and/admin/roles(the counts, the tool picker with "Alle auswählen" and the save button count) render in German.it-IT:/admin/settingsrenders in Italian, including the SSRF card and its saved message.en-US: all three pages stay exactly as before, including the SSRF text, the "Save (1 tools)" button and the footer count.The key-parity test from #1248 covers the new keys. I also checked that every German and Italian message parses and uses the same placeholders and tags as the English one.
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 (Settings and admin, last of three PRs). After this, only knowledge graph and memory are left.