Skip to content

fix(i18n): complete and improve German (de-DE) settings translations#8285

Open
tobiasheinrichfaska wants to merge 5 commits into
janhq:mainfrom
tobiasheinrichfaska:fix/de-translation-settings
Open

fix(i18n): complete and improve German (de-DE) settings translations#8285
tobiasheinrichfaska wants to merge 5 commits into
janhq:mainfrom
tobiasheinrichfaska:fix/de-translation-settings

Conversation

@tobiasheinrichfaska

Copy link
Copy Markdown

What

Completes and improves the German (de-DE) translation of web-app/src/locales/de-DE/settings.json. Part of #8221.

Changes

  • Adds 53 missing keys, including the entire attachments section (30 keys), the notification-position and thread-scroll options in interface, localApiServer default-model fields, and shortcuts entries.
  • Translates English-leftover values that were still showing in German (across general, hardware, httpsProxy, localApiServer, dataFolder, and top-level keys) — e.g. „Keep application data" → „Anwendungsdaten behalten", „Release Notes" → „Versionshinweise".
  • Quality fixes in line with this issue:
    • interface.title: „Erscheinungsbild" → „Benutzeroberfläche" (the section is Interface).
    • interface.codeBlockTitle: „Code Block" → „Codeblock".
  • Keeps the existing informal du / imperative register, preserves key order and placeholders, and leaves brand/technical terms unchanged (GitHub, Discord, CPU, Vulkan, VRAM, Proxy, Top-K, ANN, CORS, Chunking, Embeddings, the example URLs, etc.).

Testing

JSON validated (parses; full key order matches en/settings.json, 321 keys). No missing keys remain; the only values identical to English are intentional brand/technical terms.

Note on screenshots

The contributing guide asks for a screenshot. This PR only edits a locale JSON file (no layout or logic change). As a free-time contributor on my personal device, I deliberately did not install and build the full app for security reasons, so I can't provide a running-app screenshot. Happy to coordinate if a maintainer wants to verify in-app.

tobiasheinrichfaska and others added 2 commits June 6, 2026 13:47
…ubDesc

The apostrophe-s genitive is an anglicism; German proper-noun genitives take
no apostrophe. Applies to both githubDesc entries in de-DE/settings.json.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Standardize second-person address to the capitalized forms (Du/Dich/Deine/
Deines/Deinem) for consistency across the German translation.

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 improve German (de-DE) settings translations

Summary

This PR completes the German (de-DE) translation of web-app/src/locales/de-DE/settings.json by adding 53 previously missing keys and improving several existing translations. It touches a single file across 3 commits:

  1. Main commit -- adds all missing keys and translates English leftovers
  2. Genitive fix -- corrects "Jan's" to "Jans" (proper German genitive without apostrophe)
  3. Capitalization fix -- standardizes informal "du/dein/dich" forms to capitalized "Du/Dein/Dich" throughout

Translation Quality Assessment

Completeness: After this PR, the DE locale has exactly 307 keys matching the EN source 1:1 with zero missing and zero extra keys. Key ordering also matches the EN file precisely.

Quality of new translations (spot checks):

  • attachments section (30 keys): Natural, well-formed German. Technical terms like Chunking, Embeddings, ANN, sqlite-vec, Top-K are correctly left untranslated. Descriptive text reads fluently (e.g., "Ungefaehre maximale Zeichenanzahl pro Chunk fuer Embeddings").
  • interface.notificationPosition* / threadScroll*: Clear and idiomatic.
  • shortcuts.newProject/search: Correctly translated.
  • localApiServer.defaultModel* / general.autoUpdateCheck*: Accurate.

Quality improvements to existing translations:

  • interface.title: "Erscheinungsbild" -> "Benutzeroberflaece" -- appropriate since the section is labeled "Interface", not just appearance.
  • interface.codeBlockTitle: "Code Block" -> "Codeblock" -- correct German compound.
  • releaseNotes: "Release Notes" -> "Versionshinweise" -- proper German.
  • appVersion: "App Version" -> "App-Version" -- correct German hyphenation.
  • systemMonitor: "System Monitor" -> "Systemmonitor" -- correct German compound.
  • httpsProxy.username: "Username" -> "Benutzername" -- proper German.
  • localApiServer.stopServer: "Stop Server" -> "Server stoppen" -- proper German.
  • localApiServer.runOnStartup: "Auto start" -> "Automatisch starten" -- proper German.
  • localApiServer.apiPrefix: "API Prefix" -> "API-Praefix" -- proper German.
  • English leftover strings in general section (keepAppData, keepModelsAndConfigs, etc.) now properly translated.

Consistency:

  • Du/Dein/Dich capitalization is fully consistent across the entire file (verified programmatically -- zero lowercase instances remain).
  • Placeholders (e.g., {{version}}) are preserved correctly.
  • Brand/technical terms (GitHub, Discord, CPU, Vulkan, VRAM, CORS, etc.) are correctly left untranslated.
  • Register (informal "du"/imperative) is maintained throughout.

Issues Found

None blocking. A few very minor observations (non-blocking):

  1. The general.releaseNotesDesc value is "Sehe, was es Neues..." -- the verb form "Sehe" is slightly unusual (imperative of "sehen" is typically "Sieh" or "Siehe"). The top-level releaseNotesDesc uses "Siehe". This pre-dates the PR and is not introduced by it, so it is not a regression.

  2. Some compound nouns in untouched lines still use spaces instead of hyphens (e.g., serverConfiguration = "Server Konfiguration", apiPrefixDesc = "API Endpunkt", verboseLogs = "Server Logs"). These are pre-existing and out of scope for this PR.

  3. The contributor notes they could not provide in-app screenshots due to not building the app locally. Given this is a locale JSON-only change with no layout or logic modifications, and JSON validity plus key completeness have been verified, this is acceptable.

Recommendation

Can merge. The PR achieves full key parity with the EN source, all new translations are accurate and idiomatic, existing translations are meaningfully improved, JSON is valid, key order matches, and placeholders are preserved. No regressions introduced. Clean, well-structured contribution.

Hyphenate/join compound nouns per German orthography (API-Server, API-Schlüssel,
Server-Logs, Llamacpp-Updates/-Version, App-Daten, Serverkonfiguration,
Fensterhintergrund, Proxy-SSL, …), fix "Pfadprefix"->"Pfadpräfix", and
"RAM Total"->"Gesamter RAM". Addresses review feedback on janhq#8285.

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>

@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)

What changed since last review

New commit 1c0d57c (2026-06-07) addresses the compound-noun spelling concerns raised in our previous review:

  • Hyphenated/joined compound nouns per German orthography: "Llamacpp Updates" → "Llamacpp-Updates", "Llamacpp Version" → "Llamacpp-Version", "App Version" → "App-Version", "App Daten" → "App-Daten", "App Logs" → "App-Protokolle", "Server Konfiguration" → "Serverkonfiguration", "Fenster Hintergrund" → "Fensterhintergrund", "Server Logs" → "Server-Protokolle", "Server Host" → "Server-Host", "Server Port" → "Server-Port", "API Schlüssel" → "API-Schlüssel", "API Prefix" → "API-Präfix", "API Endpunkt" → "API-Endpunkt", "Proxy SSL" → "Proxy-SSL", "Proxy Host SSL" → "Proxy-Host-SSL", "Proxy URL" → "Proxy-URL", "System Monitor" → "Systemmonitor", etc.
  • Fixed "Pfadprefix" → "Pfadpräfix" (correct umlaut).
  • Fixed "RAM Total" → "Gesamter RAM" (proper German word order).
  • The commit also properly capitalizes remaining lowercase "deiner/deine" → "Deiner/Deine" instances that were missed in the earlier capitalization pass (in httpsProxy and privacy sections).

All changes are linguistically correct. The contributor (native German speaker) reviewed and approved each change before commit.

Remaining observations (non-blocking)

  1. general.releaseNotesDesc still uses "Sehe, was es Neues..." (imperative "Sehe" is non-standard; "Sieh" or "Siehe" is typical). This pre-dates this PR and is not a regression.
  2. JSON remains valid, key order matches en/settings.json, all 321 keys present, placeholders preserved.

Assessment

All concerns from the previous review have been addressed. The compound-noun corrections are thorough and consistent. The translation quality is high throughout.

Recommendation: can merge

@tokamak-pm

tokamak-pm Bot commented Jun 10, 2026

Copy link
Copy Markdown

Follow-up review — new commit(s) since last review.

New commit reviewed

1c0d57cfix(i18n): fix German compound spelling in de-DE settings

This commit addresses the compound-noun issues flagged in the previous review. The changes apply correct German orthography throughout:

  • Hyphenated compounds with foreign-word prefixes: Llamacpp Updates -> Llamacpp-Updates, API Server -> API-Server, API Schlüssel -> API-Schlüssel, Server Logs -> Server-Logs, Proxy SSL -> Proxy-SSL, Proxy Host SSL -> Proxy-Host-SSL, HuggingFace Token -> HuggingFace-Token, etc.
  • Joined native compounds: Fenster Hintergrund -> Fensterhintergrund, Server Konfiguration -> Serverkonfiguration, System Monitor -> Systemmonitor
  • Vocabulary corrections: Pfadprefix -> Pfadpräfix (correct German loanword form), RAM Total -> Gesamter RAM (natural German word order)
  • App-compound hyphenation: App Daten -> App-Daten, App Schriftgröße -> App-Schriftgröße, App Version -> App-Version

All corrections are orthographically sound and follow standard Duden rules for compound formation with abbreviations and foreign words.

Full PR status after all 4 commits

Check Status
Key completeness (EN vs DE) All 321 EN keys present in DE, no extras
No English remnants Confirmed — all previously untranslated values (keepAppData, releaseNotes, etc.) are now German
Du/Dein capitalization Consistent — all second-person pronouns use capitalized forms (Du, Dein, Deine, Dir, Dich)
Compound spelling Fixed in this commit — no new space-separated compounds introduced
Placeholders preserved {{version}} placeholder intact
JSON validity Valid JSON, parses without errors

Minor pre-existing issues (not introduced by this PR)

A few space-separated compounds exist in the base branch that this PR did not touch. These are out of scope but worth noting for a future cleanup:

  • hardware.driverVersion: "Treiber Version" (should be "Treiberversion")
  • httpsProxy.sslVerification: "SSL Verifikation" (should be "SSL-Verifikation")
  • httpsProxy.ignoreSsl: "SSL Certificates ignorieren" (should be "SSL-Zertifikate ignorieren")
  • showInFileExplorer / general.showInFileExplorer: "Datei Explorer" (should be "Datei-Explorer")

These are not blockers for this PR since they were not part of the changed lines.

Verdict

The new commit cleanly resolves the compound-spelling feedback from the prior review. The translation quality is high — natural German phrasing, consistent register, correct orthography, and complete key coverage.

can merge

Concede threshold -> "Ähnlichkeitsschwellenwert",
topKDesc -> "Anzahl der zurückgegebenen Textpassagen." and
runOnStartup -> "Autostart" to janhq#8256, 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: 358321ffix(i18n): adopt #8256 wording for 3 attachment/server keys

What changed

Alignment commit conceding three overlapping de-DE keys to PR #8256's wording:

  1. threshold"Ähnlichkeitsschwellenwert" (similarity threshold — correct compound)
  2. topKDesc"Anzahl der zurückgegebenen Textpassagen." (descriptive, natural German)
  3. runOnStartup"Autostart" (concise, widely understood loanword)

Assessment

  • All three adoptions are linguistically sound and match PR Resolve (untested): 8221-improve-german-translation #8256's choices.
  • This prevents merge conflicts when both German translation PRs land.
  • The commit is signed off and co-authored by the native-speaker contributor, consistent with prior commits.
  • The extensive new translations added in previous commits (attachments section, notification position, MTP settings, missing dependencies dialog, etc.) remain clean and well-formed.

Previous feedback

All compound-noun corrections from the initial review (API-Server, Datenordner, Systemmonitor, etc.) remain in place. No regressions.

Recommendation: can merge

@qnixsynapse

Copy link
Copy Markdown
Contributor

There are more than one PRs with the same German translations. Please close duplicate ones and keep the one that is final. Thank you.

@tokamak-pm

tokamak-pm Bot commented Jun 17, 2026

Copy link
Copy Markdown

Follow-up — Maintainer Feedback on Duplicate PRs

Acknowledged @qnixsynapse's note. There are currently three overlapping German i18n PRs open:

PRs #8285, #8284, and #8289 each target a different locale file and are complementary, not duplicates of each other. #8256 has overlap with all three in the common.json and settings.json areas.

The contributors (@tobiasheinrichfaska and @Schwachinformatiker) have been coordinating in #8256 to resolve overlaps. From a code perspective, the cleanest path would be to pick one set of translations as the base and have the other contributor rebase.

Recommendation: improve needed — The translations themselves are correct, but the PR authors should consolidate or clearly order their PRs to avoid merge conflicts. Waiting for contributor coordination to finalize.

@tobiasheinrichfaska

Copy link
Copy Markdown
Author

Thanks @qnixsynapse — this is already being handled, just paused on a teammate's availability. Quick summary:

My three PRs aren't duplicates of each other — each touches a different locale file and they don't overlap: #8284provider.json, #8285settings.json, #8289common.json. #8284 in particular overlaps nothing, so it's safe to merge on its own anytime.

The only real overlap is with #8256 (@Schwachinformatiker), on settings.json and common.json. We coordinated on #8256 and agreed a plan that makes the two efforts conflict-free in any merge order:

  1. I opened a small align PR into his branch — fix(i18n): align overlapping de-DE strings with #8284/#8285/#8289 Schwachinformatiker/jan#1 — which sets the 58 overlapping common/settings keys to identical wording (mostly mine, plus a few where his reads better). Once he merges it, his branch and my PRs share the same lines on every overlapping key, so neither rebase nor merge conflicts there.
  2. Then the small locale-only PRs (fix(i18n): complete and improve German (de-DE) provider translations #8284/fix(i18n): complete and improve German (de-DE) settings translations #8285/fix(i18n): complete and clean up German (de-DE) common translations #8289) can be reviewed/merged first, and he rebases Resolve (untested): 8221-improve-german-translation #8256 on top — its unique parts (the code-level i18n wiring, new en keys, assistants/mcp-servers) come through cleanly and intact.

The only thing we're waiting on is @Schwachinformatiker merging that align PR — he mentioned he'd be unresponsive for about a week (from Jun 11), so he should be back around now. Nothing needs closing; once he's merged #1 these will all combine cleanly.

One open translation question for a maintainer when convenient: in #8289 I left an optional commit that unifies thread / chat / conversation → a single German word „Chat" (the stored entity is Thread, and threadId === sessionId === conversationId in the code). Most other locales keep the three distinct, so I've left it as your call — commit 1 stands on its own either way.

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