Skip to content

Translate the connector list and marketplace (DE, IT) - #1303

Merged
helpcodeai merged 3 commits into
HelpCode-ai:mainfrom
sapatmohit:feat/i18n-connectors
Oct 28, 2026
Merged

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

Conversation

@sapatmohit

Copy link
Copy Markdown
Contributor

Summary

Fourth area of #1271, first half: the connector list (/connectors) and the marketplace (/connectors/store) in German and Italian, plus the setup and sign-in status pills those cards show. No behaviour changes, and Accept-Language: en-US renders exactly what it rendered before.

Splitting the area: "Connectors (list, store, setup)" turned out to be about 4,300 lines across four pages and six shared components, roughly three times #1283. To keep it reviewable I've split it in two, both under #1271 and still one PR at a time:

  1. This PR: /connectors and /connectors/store.
  2. Next: /connectors/setup/[slug] and /connectors/new, with the setup guide, setup success, headers editor and assign modal.

Happy to merge them into one PR instead if you prefer.

Changes

  • app/connectors/page.tsx: the header actions and their mobile menu, the import and delete dialogs, the health check results, the empty state, search, the type filter and count, and each connector card (type, Tools/Auth, status, Import Spec/Delete), plus the "Add a connector" tile.
  • app/connectors/store/page.tsx: the title and back link, search, the setup and category filter chips, the results line, the no-match state, and each adapter card (category, region, Popular, tool count, setup effort, docs link, Install).
    • Category and region names are translated. Search still matches the English names, and also matches the translated ones, so typing "Deutschland" or "Contabilità" finds the right adapters. In English the search text is the same as before.
    • A category the messages don't know yet (the catalog grows) is title-cased, as before.
  • components/setup-status.tsx and components/auth-status.tsx: the pills on the list, and the banners on the connector page. The banners belong to the next area (/connectors/[id]), but they live in the same files, so I've done both here, as agreed in Translate the rest of the admin UI (DE, IT) #1271.
    • The "expires on" and "since" dates in the auth banner now use the UI language instead of the browser's. For en-US they're unchanged.
  • lib/use-auth-type-label.ts (new): authTypeLabel in the UI language. An auth type without a message (a new one from the backend) falls back to the existing English label. /connectors/[id] still uses the English one until its PR.
  • messages/{en,de,it}.json: new namespaces connectors, connectorStore, setupEffort, setupStatus, authStatus and authTypes.

Left in English on purpose:

  • Text from the server: health check results, import/export results, adapter descriptions, and the secrets and renamed-tools notes that withSecretsNotice/withImportNotice append to a server message.
  • Protocol and product names: REST, SOAP, GraphQL, OData, MCP, OAuth 2.0, WS-Security, Basic Auth.
  • TrialLimitNotice and FirstSuccessOffer, both on these pages. They're Cloud billing components, so I'd keep them with the other billing and shared components, as with Translate the MCP server pages (DE, IT) #1283.
  • lib/setup-effort.ts is unchanged. The store uses the new setupEffort messages, and the setup guide moves over in the next PR.

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. Same tone and terms as the earlier PRs: German with Sie, Italian with tu, "Connector" in German and "connettore" in Italian, and the German store title matches the sidebar ("Marktplatz"). Strings I'm least sure about:

  • Health check: "Statusprüfung" (DE) and "Controllo di stato" (IT).
  • Setup effort: "Anmeldung mit 1 Klick" / "Accesso in 1 clic", "Admin nötig" / "Serve un admin".
  • Setup pills: "Einrichtung offen" (DE), and "Dati mancanti" (IT) rather than "Da configurare", which didn't fit (see below).
  • Auth types: "Connection-String" in German (instead of "Verbindungszeichenfolge"), and "Connection string" in Italian, both for length. Also "Query-Parameter-Auth" / "Auth tramite parametro query".
  • No-match line: it's built from parts, e.g. "Keine Treffer für „crm“ in Buchhaltung mit „API-Schlüssel“." and "Nessun risultato per “crm” in Contabilità con “Chiave API”."
  • Category names: a few have no clear equivalent, e.g. "Publishing" (DE), "Knowledge base" and "Marketing automation" (IT).

Layout: on a connector card, the Tools/Auth row and the status pills share one line. English already has only about 13px to spare when a card shows a long auth type ("Connection String") and a setup pill. Italian, with "Strumenti" and those two, still runs about 15px past the card edge. The fix would be letting the auth value truncate (min-w-0 on its column). That also changes English, which then shows "Connection …", so I left it out. Happy to add it here or in a separate PR if you want it.

German Italian
/connectors
Delete dialog
/connectors/store

Type

  • New feature

Testing

3 new tests in tests/e2e/i18n.spec.ts, with two mocked connectors and two mocked adapters:

  • de-DE: /connectors renders in German, including the count plural, "Datenbank", a translated auth type, both status pills, "Inaktiv" and the delete dialog.
  • it-IT: /connectors/store renders in Italian, including a category, a region, the setup effort, the tool plural and "Popolare". Searching "Germania" finds the German adapter, and the no-match line reads correctly with a category and a setup filter.
  • en-US: both pages stay exactly as before, including the same checks and the no-match line ("Nothing matches in Accounting with no setup.").

The key-parity test from #1248 covers the new keys. The existing connector specs, which check English text, still pass.

Directory Command Result
packages/frontend npm run lint 0 errors, 49 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 288 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 both 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 and next-env.d.ts were rewritten by next dev locally and are left out, as AGENTS.md asks.

Related Issues

Part of #1271 (Connectors, first half)

Part of HelpCode-ai#1271. Adds the connectors, connectorStore, setupEffort,
setupStatus, authStatus and authTypes namespaces. English output is
unchanged.

@helpcodeai helpcodeai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @sapatmohit, splitting the area in two is fine, and this PR is easy to review. The German and Italian read well; just two small changes:

  • DE setupStatus.needsInput.banner: "Zugangsdatum" means an access date. Please use "Zugangsdaten oder eine Einstellung fehlen noch, daher sieht Ihr KI-Client diesen Connector noch nicht."
  • IT setupStatus.needsAuthorization.banner: the sentence has no subject. Please use "Il connettore va autorizzato presso il provider prima che il tuo client AI possa usarlo."

The other strings you flagged are fine as they are. For the card layout, please do the min-w-0 fix in a separate small PR, so this one stays translation-only. Once those two strings are in, I'll merge.

@sapatmohit

Copy link
Copy Markdown
Contributor Author

Thanks for the review! Both strings are in now (27538e0), word for word as you suggested.

I'll open the min-w-0 card fix as a separate small PR once this one is merged, since it touches the same file. The second half of the connectors area will follow after that.

@helpcodeai
helpcodeai enabled auto-merge (squash) October 28, 2026 08:03
@helpcodeai
helpcodeai merged commit 06cd6ee into HelpCode-ai:main Oct 28, 2026
14 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 28, 2026
@helpcodeai

Copy link
Copy Markdown
Contributor

Thanks @sapatmohit, merged. Looking forward to the min-w-0 fix and the second half of the connectors area.

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