Skip to content

fix(i18n): complete and clean up German (de-DE) common translations#8289

Open
tobiasheinrichfaska wants to merge 4 commits into
janhq:mainfrom
tobiasheinrichfaska:fix/de-translation-common
Open

fix(i18n): complete and clean up German (de-DE) common translations#8289
tobiasheinrichfaska wants to merge 4 commits into
janhq:mainfrom
tobiasheinrichfaska:fix/de-translation-common

Conversation

@tobiasheinrichfaska

Copy link
Copy Markdown

de-DE: complete + clean up common.json

This adds the missing German keys, fixes existing translations (compound
spelling, daßdass, stray formal Sie, ModelModell, a gender slip,
trailing/leading spaces, word order), and standardizes terminology
(AnbieterProvider, capitalized informal Du). Part of #8221.

All 84 previously-missing keys are now translated; the only values left equal to
English are intentional (proper nouns / identical-in-German: Hardware, Hub, Name,
Vision, Jan, etc.).

A terminology question — and why this PR has two commits:

The UI uses three English terms that look interchangeable to me — "thread",
"chat", and "conversation" (e.g. newThread "New Thread" vs newChat
"New Chat", conversationNotAvailable, projects.conversationsIn "Conversations
in …" next to deleteAllThreads).

To make this reviewable, the work is split into two commits:

  1. Translate without unifying — every string is translated/fixed while
    keeping the original thread / chat / conversation wording distinct.
  2. Unify to "Chat" — renders all three with one user-facing German word
    ("Chat") for a consistent UI.

If "thread", "chat" and "conversation" are indeed the same concept, please take
both commits. If you intend a distinction I should preserve, just drop commit 2
and I'll keep commit 1 (or mirror whatever distinction you specify).

🤖 Generated with Claude Code

tobiasheinrichfaska and others added 2 commits June 6, 2026 18:00
Add the 84 missing keys, translate the remaining English-leftover values,
and fix existing translations: compound-noun spacing, old "daß"->"dass"
spelling, stray formal "Sie" -> informal "Du", "Model"->"Modell" typos,
a gender slip (KI -> "ihres"), trailing/leading spaces, and word order.
Also standardize "Anbieter"->"Provider" and capitalize informal address.

This commit keeps the original thread / chat / conversation wording distinct.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Render the three interchangeable English terms (thread, chat, conversation)
with a single user-facing German word, "Chat", for a consistent UI.

If these are meant to be distinct concepts, this commit can be dropped while
keeping the previous one.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@tokamak-pm

tokamak-pm Bot commented Jun 7, 2026

Copy link
Copy Markdown

PR Review: fix(i18n): complete and clean up German (de-DE) common translations

Summary of Changes

This PR updates web-app/src/locales/de-DE/common.json across two commits:

  1. Commit 1 (a8f3140): Translates all 84 missing keys, fixes existing translations (compound-noun spacing, daß -> dass, formal Sie -> informal Du, Model -> Modell, trailing/leading spaces, word order), and standardizes terminology (Anbieter -> Provider).
  2. Commit 2 (e8dd710): Unifies thread/chat/conversation to a single German word "Chat" for UI consistency.

The PR is well-structured: 220 additions, 110 deletions, touching only the single translation file. The two-commit strategy is thoughtful -- it lets maintainers choose whether to accept the terminology unification or keep distinctions.

Quality Assessment

Positives:

  • All 84 previously-missing keys are now translated.
  • Compound noun fixes are correct per German orthography (API Server -> API-Server, Daten Ordner -> Datenordner, Web Suche -> Websuche, etc.).
  • Spelling modernization daß -> dass is correct (post-1996 reform).
  • next: "Nächster" -> "Weiter" is a good contextual fix (button label).
  • interface and appearance now have distinct translations (Benutzeroberfläche vs. Darstellung) instead of both being Erscheinung.
  • The llamacppBusyOnExit section is fully translated (was entirely English before).
  • New sections like missingDependenciesDialog, attachmentsIngestion, toast.uploadFailed.*, modelSettings.mtp, and errors are all well-translated.
  • The PR description is excellent -- clearly explains the rationale and asks the right questions.

Values intentionally left as English are reasonable: Hardware, Hub, Name, Vision, Jan, Claude Code -- these are proper nouns or standard loanwords in German tech context.

Issues Found

1. Remaining formal "Sie" inconsistency (minor fix needed)

projects.deleteProjectDialog.description still reads:

"Sind Sie sicher, dass Sie dieses Projekt löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden."

This is the only remaining instance of formal address in the entire file. Every other confirmation dialog uses informal Du (e.g., deleteAllThreadsConfirm, deleteModel.description, deleteProvider.confirmDescription, dialogs.deleteThread.description). This should be changed to:

"Bist Du sicher, dass Du dieses Projekt löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden."

Note: this key (projects.deleteProjectDialog.description) does not exist in the English source file, so it may be a vestigial key. If so, it could also just be removed.

2. mcpServers.command vs. mcpServers.enterCommand inconsistency (nit)

command was changed from "Kommando" to "Befehl", but enterCommand was left as "Kommando eingeben". These should use the same term -- either "Befehl eingeben" or both should stay as "Kommando".

3. Pre-existing typo not addressed (nit, not blocking)

toast.editMessage.description contains "...die Antwort des Models." -- "Models" is not valid German genitive. It should be "Modells" (genitive of "Modell"). This is a pre-existing bug, not introduced by this PR, but since the PR's scope is cleaning up the de-DE file, it would be a good opportunity to fix it.

4. Extra keys not in English source (informational)

Two keys exist in de-DE but not in the English source:

  • projects.addProjectDialog.renameSuccess -- kept in this PR, seems intentional
  • projects.deleteProjectDialog.description -- kept in this PR (see issue Initial Readme #1 above)

These may be vestigial. Not blocking but worth noting.

Recommendation: improve needed

The PR is high quality overall. The formal Sie in projects.deleteProjectDialog.description (#1) and the command/enterCommand inconsistency (#2) should be fixed before merging, as they undermine the PR's own stated goal of cleaning up formality and terminology consistency. The Models -> Modells typo fix (#3) would be a nice bonus but is not blocking.

Once those are addressed, this is ready to merge.

- Revert Provider->Anbieter (15 keys): every other locale localizes "provider"
  to its native word, and all other de-DE files use "Anbieter".
- projects.deleteProjectDialog.description: formal "Sie" -> informal "Du"
  (the last formal holdout in the file).
- mcpServers.enterCommand: "Kommando eingeben" -> "Befehl eingeben"
  (match the "command" -> "Befehl" change).
- toast.editMessage.description: "des Models" -> "des Modells" (genitive typo).
Addresses review feedback on janhq#8289.

Each change reviewed and approved by the contributor (native German speaker)
before commit; AI-assisted.

Signed-off-by: Tobias Heinrich <tobias.a.w.heinrich@gmail.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@tobiasheinrichfaska

Copy link
Copy Markdown
Author

Some evidence to back the terminology question (commit 2: unifying thread / chat / conversation to one German word, „Chat").

I checked the source, and these three appear to be the same logical concept surfaced under names borrowed from different layers:

  • The only persisted entity is Thread (core/src/types/thread/threadEntity.ts, @storedid, title, messages). There is no Conversation or Chat data entity.
  • The route is /threads/$threadId, and the chat-session store sets sessionId: threadId while naming the active id activeConversationId (web-app/src/stores/chat-session-store.ts, web-app/src/routes/threads/$threadId.tsx) — so threadId === sessionId === conversationId.
  • Conversation exists only as a presentational component (web-app/src/components/ai-elements/conversation.tsx); Chat/ChatCompletion* are the AI-SDK / API layer.
  • The UI uses all three for the same object: the sidebar's "New Chat" button (NavMain.tsx) creates a thread; the thread list renders that object with the fallback title "New Thread" (ThreadList.tsx); a project's collection of those threads is labeled "Conversations in …" (routes/project/$projectId.tsx).

So the English source itself uses three words for one thing. That's the rationale for commit 2 — German would read more consistently with a single term, and „Chat" matches the app's own primary action.

That said, I checked the other locales and most keep the three words distinct (mirroring the English source) rather than unifying — so this really is your call:

  • Take commit 2 → unify to „Chat" (more internally consistent, diverges from the source wording).
  • Drop commit 2 → keep them distinct like the other locales / the source (commit 1 already does this).

Either is fine by me; commit 1 stands on its own regardless. Just let me know which you prefer.

@tokamak-pm tokamak-pm Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Follow-up review (new commits detected since last review)

New Commit Since Last Review

e3dc61bfix(i18n): use "Anbieter" + address review feedback (de-DE common)

This commit directly addresses all issues raised in the previous review:

# Previous Issue Status
1 Formal "Sie" in projects.deleteProjectDialog.description Fixed — changed to informal "Bist Du sicher, dass Du dieses Projekt löschen möchtest?"
2 mcpServers.enterCommand inconsistency ("Kommando eingeben" vs "Befehl") Fixed — now reads "Befehl eingeben"
3 Genitive typo "des Models" in toast.editMessage.description Fixed — corrected to "des Modells"
4 Extra keys not in English source (informational) Acknowledged — not blocking

Additional Change: "Provider" Reverted to "Anbieter"

The new commit also reverts the Provider -> Anbieter terminology across 15 keys (e.g., modelProviders, addProvider, deleteProvider.*, hideProvider, showProvider). The author's rationale is sound: every other locale localizes "provider" to its native word, and all other de-DE translation files already use "Anbieter". This improves internal consistency across the German locale.

Assessment

All three actionable items from the previous review have been addressed. The Provider -> Anbieter revert is a good additional improvement. The file now has consistent informal address ("Du"), consistent terminology ("Anbieter", "Befehl", "Chat"), correct genitive forms, and all previously-missing keys translated.

No new issues found.

Recommendation: can merge

@tokamak-pm

tokamak-pm Bot commented Jun 9, 2026

Copy link
Copy Markdown

Follow-up Review — All Prior Feedback Addressed

Reviewing commit: e3dc61b — directly addresses all three issues from the previous review.

Issues Resolved

  1. projects.deleteProjectDialog.description: formal `Sie` → informal `Du` — fixed. Now consistent with every other confirmation dialog.
  2. mcpServers.enterCommand: `"Kommando eingeben"` → `"Befehl eingeben"` — fixed. Consistent with `command: "Befehl"`.
  3. toast.editMessage.description: `"des Models"` → `"des Modells"` — fixed. Correct German genitive.
  4. Bonus: `"Anbieter"` reinstated (reverting `Provider` from commit 1) — correct decision, consistent with all other de-DE files.

Overall Quality

  • All previously-missing keys are now translated (84 keys).
  • Correct compound noun spelling throughout (`API-Server`, `Datenordner`, `Websuche`, `Modellanbieter`, etc.).
  • `daß` → `dass` modernization done consistently.
  • Formal `Sie` → informal `Du` done consistently across the entire file.
  • `"Modell"` used consistently (not `"Model"`).
  • Thread/chat/conversation unified to `"Chat"`.

The contributor has engaged thoughtfully with feedback and provided code-level justification for design decisions.

Recommendation: can merge

@qnixsynapse

Copy link
Copy Markdown
Contributor

Is this ready?

@tobiasheinrichfaska

Copy link
Copy Markdown
Author

Yes, ready for review. It's two commits:

  1. Complete + clean up the de-DE common translations — 84 missing keys filled plus ~60 fixes (compound spelling, daßdass, stray formal Sie, ModelModell, etc.). This commit is final.
  2. Unify thread / chat / conversation → „Chat" — this is the only open question. I left code evidence above that the three are one concept (the stored entity is Thread; threadId === sessionId === conversationId; the "New Chat" button creates a thread). But most other locales keep the three words distinct, so it's your call: take commit 2 to unify, or drop it to keep them distinct — commit 1 stands on its own either way.

I'm also coordinating with @Schwachinformatiker's #8256 (which adds the code-level i18n wiring + assistants/mcp-servers) so our changes don't conflict.

Concede this key to janhq#8256's wording (correct accusative) so the
overlapping de-DE strings match across both PRs and merge cleanly.

Reviewed and approved by the contributor (native German speaker) before
commit; AI-assisted.

Signed-off-by: Tobias Heinrich <tobias.a.w.heinrich@gmail.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@tokamak-pm

tokamak-pm Bot commented Jun 13, 2026

Copy link
Copy Markdown

Follow-up Review — New Commit Since Last Review

New commit reviewed: f391903fix(i18n): adopt "Assistenten hinzufügen" (align with #8256)

What changed

Single-key alignment commit: adopts PR #8256's wording for addProjectDialog.addAssistant"Assistenten hinzufügen" (correct accusative case). This ensures the overlapping de-DE strings match across both German translation PRs and merge cleanly regardless of merge order.

Assessment

  • The wording change is grammatically correct (accusative case for "add [an] assistant").
  • Cross-PR coordination is the right approach to prevent merge conflicts on shared keys.
  • Co-authored and signed off by the contributor (native German speaker) — consistent with prior commits.

Previous issues

All three issues from the initial review remain resolved (formal SieDu, KommandoBefehl, ModelsModells). No regressions introduced.

Recommendation: can merge

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants