Skip to content

Translate the knowledge graph, AI skills and memory pages (DE, IT) - #1360

Merged
helpcodeai merged 2 commits into
HelpCode-ai:mainfrom
sapatmohit:feat/i18n-knowledge
Nov 1, 2026
Merged

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

Conversation

@sapatmohit

Copy link
Copy Markdown
Contributor

Summary

Last area of #1271: the Knowledge Graph (/knowledge-graph), AI Skills (/knowledge-graph/skills) and Memory (/memory) pages in German and Italian, with the folder tree they share. It follows #1340. No behaviour changes, and Accept-Language: en-US renders exactly what it rendered before.

Changes

  • app/knowledge-graph/page.tsx:
    • the header (entity and relationship counts, "built" date, Enrich with AI, Rebuild graph);
    • the filter bar: layer chips, "show suggested", "min confidence";
    • the legend and the relationship kinds (references, data flow, parent / child, same identity, related);
    • the empty, disabled and loading states, and the status messages;
    • the entity panel (fields, connections, tools, edit and delete);
    • the relationship panel (kind, match key, confidence, observations, description, confirm / reject / delete);
    • the add entity and add connection forms.
  • components/kg-graph.tsx: the zoom and fit buttons' labels. Only the graph page uses it.
  • app/knowledge-graph/skills/page.tsx:
    • the intro, the scope select, Consolidate / Generate with AI / Learn from fixed errors (including the phone menu), and their status messages;
    • the tabs, search, empty states and pagination;
    • the skill card: status badge, the meta line (scope, source, confidence, examples, "opened N×"), When / Do, "Replaces N active skills", the procedure and history;
    • the edit form and the new skill form.
  • app/memory/page.tsx:
    • the intro, "Your access in this workspace", the tabs, search, empty states and pagination;
    • the new memory form (kind, folder, tags, about, the "never store secrets" note);
    • the memory card: kind and status badges, "about …", "saved by an AI client" / "added in the dashboard", approve / reject / edit / delete;
    • the workspace settings card (write mode and default access).
  • components/knowledge-folders.tsx: the folder tree and folder editor shared by skills and memory, including the delete confirmation and the role limit.
  • messages/{en,de,it}.json: new namespaces knowledgeGraph (80 keys), aiSkills (105), memory (64) and knowledgeFolders (32).
  • Labels from values:
    • The layer chips and the entity/relationship source showed source.toLowerCase(). The relationship status pill showed the raw status. The memory kind badge showed the raw kind.
    • Each now goes through a message, and an unknown value still shows as before.
    • In English the messages are the same lowercase words, so nothing changes.
  • Smaller fixes:
    • Loop variables named t became tab, x, tag and name, so they don't shadow the translator.
    • The "built", "last opened", "replaced" and memory dates follow the UI language.

Left in English on purpose:

  • Content from the server or the AI: entity and connector names, field and tool names, match keys, skill titles, "when" and "do" text and procedures, memory content, tags and "about" values, folder and role names. Error messages from the server also stay in English.
  • EnterpriseMemoryNotice on the memory page (shown without an Enterprise licence), together with EnterpriseNotice and the other billing and licensing components.
  • Technical names: skill_get, MCP, markdown, and "Skills Finder" (a product name).
  • The example values in the memory placeholders: "STAMMKUNDE" and customer, because they're data examples, not UI text.

Still open in #1271: the shared chrome is still English, and this PR doesn't change it:

  • the footer theme switch (Light / Dark / System)
  • the command palette entries
  • the banners
  • the billing components

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;
  • "Knowledge Graph" untranslated, "KI-Skills" / "Skill IA", "Gedächtnis" / "Memoria", "Firmengedächtnis" / "memoria aziendale";
  • the feature names from the Organization settings ("Absicht der Benutzer erfassen", "KI-Anreicherung" / "Acquisisci l’intento dell’utente", "Arricchimento con AI").

Strings I'm least sure about:

  • Entity / relationship / edge: "Entität", "Beziehung", "Kante" and "entità", "relazione", "arco".
  • Layer chips: "statisch / beobachtet / manuell / KI" and "statico / osservato / manuale / AI". The English chips say "llm"; I used "KI" / "AI".
  • Relationship kinds: "Referenz", "Datenfluss", "über- / untergeordnet", "gleiche Identität", "verwandt" and "riferimento", "flusso di dati", "padre / figlio", "stessa identità", "correlato".
  • "min confidence": "Mindestkonfidenz" / "confidenza minima", and "Konfidenz" / "confidenza" on the skill card.
  • Skills:
    • "Consolidate" is "Zusammenführen" / "Unisci".
    • "Dismissed" is "Verworfen" / "Scartate".
    • "Do:" is "Tun:" / "Cosa fare:". I'm least happy with the German "Tun:".
  • Memory:
German Italian
Knowledge Graph
AI Skills
Memory (to review)

Type

  • New feature

Testing

3 new tests in tests/e2e/i18n.spec.ts, with a mocked graph (two entities, one relationship), two skills (one active with history, one merge proposal), knowledge folders and personal and company memory:

  • de-DE: the graph page (header, layers, legend, the entity panel after clicking a node, the add entity form) and the AI Skills page (tabs, meta lines, "Replaces 2 active skills", history, the folder tree) render in German.
  • it-IT: the memory page (access line, tabs, badges, the review tab, the folder tree, the workspace settings) renders in Italian.
  • en-US: all three pages keep their exact English text, including the meta lines, "1 relationships", "4 example(s)" and the dates.

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 312 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 three 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.

Unrelated to this PR, but worth a look: after a clean npm ci on main, the frontend dev server didn't start for me ("Incompatible React versions"). package-lock.json installs react 19.3.1 at the root next to react-dom 19.2.7, while packages/frontend/node_modules/react-dom is 19.3.1. The lockfile has looked like this since at least 874a536 (#1320). To run the tests locally I replaced the root react-dom with 19.3.1 by hand. This PR doesn't touch the lockfile.

Related Issues

Last area of #1271 (Knowledge graph and memory). After this, every page area in the issue is translated; the shared chrome listed above is the only open part.

@helpcodeai

Copy link
Copy Markdown
Contributor

Thanks, this looks good. Strings only, links stay our own components, CI is green. Merging now.

One small follow-up if you have time: the new "Code tool proposal" card from #1369 in knowledge-graph/skills/page.tsx arrived after you started and is still English only. A separate small PR for it is welcome.

@helpcodeai
helpcodeai merged commit ab52692 into HelpCode-ai:main Nov 1, 2026
14 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Nov 1, 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