Skip to content

Translate the settings pages: roles, administration, license, single sign-on (DE, IT) - #1333

Merged
helpcodeai merged 3 commits into
HelpCode-ai:mainfrom
sapatmohit:feat/i18n-settings-2
Oct 30, 2026
Merged

helpcodeai merged 3 commits into
HelpCode-ai:mainfrom
sapatmohit:feat/i18n-settings-2

Conversation

@sapatmohit

Copy link
Copy Markdown
Contributor

Summary

Sixth area of #1271, second of three PRs: the Roles, Administration, License and Single sign-on settings pages in German and Italian. It follows #1332 (sidebar, Profile, Connections, Organization, Users). No behaviour changes, and Accept-Language: en-US renders exactly what it rendered before.

Changes

  • app/settings/roles/page.tsx:
    • the custom roles card, the create and edit forms, the role list with its user and tool counts;
    • the tool access picker (select all, search, per-connector All/None, save);
    • the user MCP role table and the messages.
  • app/settings/admin/page.tsx:
    • the SMTP card, the connector failure alerts card (payload types, threshold summary, signing secret), the footer links card;
    • "About this instance".
    • The text that "Copy version info" puts on the clipboard stays English, because it goes into bug reports.
  • app/settings/license/page.tsx:
    • the page's own text: current plan / license key, the plan fields and status, verify, the billing buttons, features, change/activate key, upgrade plan;
    • the client-side error fallbacks.
    • The trial end date uses the UI language, with English keeping the en-GB format it had.
  • app/settings/license/activate/page.tsx: the activation page and its messages.
  • app/settings/identity-providers/page.tsx: the single sign-on card, the provider form (the per-type hints and fields, role sync, fallback, default roles), the provider list, the toasts and confirm dialogs, and the Cloud notice.
  • identity-providers/recovery-codes.tsx, role-mappings.tsx, scim-panel.tsx: recovery codes, group and app role mappings, and SCIM provisioning with its Entra setup steps.
  • Message colours: the Administration page picked red or green with smtpMsg.startsWith('Error') (and the same for alerts and footer links) and versionMsg === 'Copy failed'. It now uses a separate error flag for each, as in Translate the connector tools and tool editor (DE, IT) #1326 and Translate the settings pages: profile, connections, organization, users (DE, IT) #1332.
  • Plurals: English keeps its exact wording; German and Italian use proper plural forms where the English doesn't change (for example "Save (1 tools)" and "{n} days").
  • Dates on the License and SCIM panels follow the UI language. The loop variables named t on the Roles page became x/list, and the provider type map no longer holds English labels: they come from settingsSso.types.
  • messages/{en,de,it}.json: new namespaces settingsRoles (47 keys), settingsAdmin (62), settingsLicense (68, including activate) and settingsSso (189, including recovery, mappings and scim).
  • Fix from Translate the auth and onboarding pages (DE, IT) #1272 (separate commit): in it.json, signUp.socialConsent and signUp.acceptTermsCloud had l'<privacy>. In ICU an apostrophe before < starts a quoted literal, so Italian users saw the text l<privacy>Informativa sulla privacy</privacy> with no link. Both now use the typographic apostrophe l’, which isn't an escape, so the link renders. The new Italian strings in this PR do the same.

Left in English on purpose:

  • Text from the server: error messages, the license and trial result messages, the SMTP test result, the provider test result.
  • Billing and licensing components: EditionCard, EnterpriseNotice (including the title and body the Single sign-on page passes to it) and the billing summary from lib/billing-summary, with TrialLimitNotice, as in Translate the settings pages: profile, connections, organization, users (DE, IT) #1332.
  • Product and plan names: Microsoft Entra ID, Google Workspace, Okta, Auth0, GitHub, the plan names, and the feature names on the License page (they come from the license as keys).
  • Technical names: Client ID, Tenant URL, Secret Token, SCIM, SSO, HMAC, X-AnythingMCP-Signature, the role names ADMIN/EDITOR/VIEWER in the role table, and the "No access (SSO)" role the server creates.
  • Entra's own menu and field names in the SCIM setup steps and the role mapping help (Enterprise applications, Provisioning Mode, Attribute mapping, Object Id, …), the same rule as for other apps' buttons in Translate the MCP server pages (DE, IT) #1283.
  • The recovery codes download: the text file keeps its English header.

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 the earlier PRs: German with Sie, Italian with tu, "Workspace", "Connector" / "connettore", "Single Sign-On" / "Single sign-on". Strings I'm least sure about:

  • Identity provider: "Identitätsanbieter" / "identity provider" (kept in English in Italian), and "Anbieter" / "provider" for the list.
  • Provisioning: "Provisionierung" in German, "provisioning" kept in Italian.
  • Role mappings: "Rollenzuordnungen" / "Associazioni dei ruoli", and "Vereinigung" / "unione" for the union of roles.
  • "Require single sign-on": "Single Sign-On verpflichtend machen" / "Rendi obbligatorio il single sign-on".
  • Alerts: "Alarm" in German ("Alarm-Webhook", "Testalarm"), "avviso" in Italian; "Cooldown" is "Pause" / "Pausa".
  • "Rotate" a secret or token: "neu erzeugen" / "erneuern" and "rigenera".
  • "stale" badge: "veraltet" / "inattivo".
  • "Tarif" for plan in German, matching the settings sidebar ("Tarif, Abrechnung, Abonnement").
German Italian
Roles
Administration
License
Single sign-on, role mappings and SCIM

Type

  • New feature

Testing

3 new tests in tests/e2e/i18n.spec.ts, with a mocked role, SMTP and alert webhook settings, version, license status, an Entra provider with SCIM, recovery codes and a role mapping:

  • de-DE: the Roles page (plural counts, user role table) and the Single sign-on page (provider list, recovery codes, SCIM panel, the provider form) render in German.
  • it-IT: the Administration page (alert summary, version line), the License page (status, fields) and the role mappings render in Italian.
  • en-US: Roles, Administration, License, Single sign-on (recovery codes, SCIM, the role mapping footer) and the activation page stay exactly as before.

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.

Directory Command Result
packages/frontend npm run lint 0 errors, 46 warnings (same as main, none new)
packages/frontend npx tsc --noEmit -p tsconfig.json pass
packages/frontend npm run build pass
packages/frontend npm run test:e2e 303 passed, incl. the 3 new ones

The backend isn't touched, so I didn't rerun its suite.

  • Added/updated tests
  • Tested manually. I checked the four pages in German and Italian in the browser with mocked API data (the screenshots above), not against a live backend.

Checklist

  • My code follows the existing code style
  • I have tested my changes locally
  • I have updated documentation (if applicable). Not needed: CONTRIBUTING's "Translating the UI" section already covers new namespaces.
  • All existing tests pass (frontend; backend unchanged)
  • This PR has a descriptive title

packages/frontend/AGENTS.md was rewritten by next dev locally and is left out, as AGENTS.md asks.

Related Issues

Part of #1271 (Settings and admin, second of three PRs). After this: /admin/*, then knowledge graph and memory.

…sign-on (DE, IT)

Second of three settings PRs for HelpCode-ai#1271: /settings/roles, /settings/admin,
/settings/license (and activate) and /settings/identity-providers with
recovery codes, role mappings and SCIM, in German and Italian.

New namespaces settingsRoles, settingsAdmin, settingsLicense and
settingsSso. The SMTP, alert webhook, footer and version messages on the
administration page get an explicit error flag instead of matching the
English "Error"/"Copy failed" text.
@helpcodeai
helpcodeai enabled auto-merge (squash) October 30, 2026 08:02
@helpcodeai
helpcodeai merged commit 3d2f15c into HelpCode-ai:main Oct 30, 2026
14 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 30, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants