Skip to content

Resolve (untested): 8221-improve-german-translation#8256

Open
Schwachinformatiker wants to merge 6 commits into
janhq:mainfrom
Schwachinformatiker:8221-improve-german-translation
Open

Resolve (untested): 8221-improve-german-translation#8256
Schwachinformatiker wants to merge 6 commits into
janhq:mainfrom
Schwachinformatiker:8221-improve-german-translation

Conversation

@Schwachinformatiker
Copy link
Copy Markdown

@Schwachinformatiker Schwachinformatiker commented Jun 1, 2026

Describe Your Changes

This PR improves the translation in German as well as extends the translation.
It also replaces hard coded English text so it can be translated.
This PR is untested due to make dev does have problems on my computer (It complains about missing libraries but they are installed on my system).

Fixes Issues

Self Checklist

  • Added relevant comments, esp in complex areas
  • Updated docs (for bug fixes / features)
  • Created issues for follow-up changes or refactoring needed

@tokamak-pm
Copy link
Copy Markdown

tokamak-pm Bot commented Jun 3, 2026

Review: PR #8256 - DRAFT: 8221-improve-german-translation

Summary

This PR improves the German (de-DE) locale and fixes a hardcoded English string in the interface settings component. It addresses issue #8221.

Changes Analyzed

  1. .gitignore -- Adds .idea/ (JetBrains IDE directory). Reasonable housekeeping.

  2. web-app/src/locales/de-DE/settings.json -- Adds 10 missing German translation keys under the interface section:

    • accentColor, accentColorDesc
    • notificationPosition, notificationPositionDesc, and the four position options
    • showTokenSpeed, showTokenSpeedDesc
    • Also renames "Erscheinungsbild" to "Darstellungseinstellungen" for the interface title and the reset-success message, which is a more precise German term.
  3. web-app/src/locales/en/settings.json -- Adds the missing English keys accentColor and accentColorDesc that were absent from the English locale but were hardcoded in the component.

  4. web-app/src/routes/settings/interface.tsx -- Replaces hardcoded English strings "Accent color" and "Customize the accent color of the application." with t('settings:interface.accentColor') and t('settings:interface.accentColorDesc'). This is a genuine bug fix -- without this, the accent color section was always in English regardless of locale.

Issues Found

  • PR is self-described as WIP/DRAFT in the description: "This merge request is still WIP. Please do not merge it!" However, the GitHub PR is not marked as a Draft PR (the API shows draft: false). The author should either convert it to a proper GitHub Draft PR, or remove the WIP notice if it is actually ready.

  • Other locales are not updated with the new accentColor/accentColorDesc keys. This is not a blocker since most i18n frameworks fall back to the English key, but it would be ideal to note this as follow-up work.

  • German translation quality looks good. The notification position translations and token speed descriptions are natural and accurate. The choice of "Darstellungseinstellungen" over "Erscheinungsbild" is reasonable ("display settings" vs "appearance"), though "Erscheinungsbild" is also widely used -- this is a subjective style preference, not an error.

  • Self-checklist items are unchecked, which aligns with the WIP status.

Verdict

The code changes are correct and well-scoped. The i18n fix in interface.tsx is a genuine improvement beyond just translation. However, the author explicitly states this is not ready for merge. Respect that request.

Recommendation: fix needed

Action items:

  1. Author should clarify readiness: either mark as a proper GitHub Draft PR, or update the description to indicate it is ready for review.
  2. Once the author signals readiness, this is a clean merge candidate.

"errorInvalidType": "Ungültiger Typ '{{type}}' für Server '{{serverName}}'. Typ muss 'stdio', 'http' oder 'sse' sein",
"save": "Speichern"
"save": "Speichern",
"transportType": "Transport Methode"
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Not sure if this is really a meaningful translation...

Comment thread web-app/src/locales/de-DE/settings.json
@Schwachinformatiker Schwachinformatiker changed the title DRAFT: 8221-improve-german-translation Resolve (untested): 8221-improve-german-translation Jun 4, 2026
@Schwachinformatiker
Copy link
Copy Markdown
Author

I cannot test my changes because make dev gets an error that some library (cairo) is not installed, BUT IT IS INSTALLED.

@tokamak-pm
Copy link
Copy Markdown

tokamak-pm Bot commented Jun 5, 2026

Follow-up Review (new commits since Jun 3)

Two new commits since my last review:

  • e07ced53 (Jun 4) — additional translation entries
  • d13fdabf (Jun 4) — merge of remote tracking branch

What Changed

The PR now touches 17 files: 8 German locale files, matching English locale files for new keys, 8 component files converting hardcoded strings to t() calls, and .gitignore. This is solid i18n work — both adding German translations and properly extracting hardcoded English strings from components.

Issues Found

1. German typo in assistants.json:
"noParameter": "Keine Parameter — Nutzte Model Voreinstellungen."
"Nutzte" is past tense; should be "Nutzt" (present tense: "Uses model defaults").

2. Compound noun in mcp-servers.json:
"transportType": "Transport Methode"
German compound nouns are written as one word: should be "Transportmethode".

3. PR not marked as GitHub Draft:
The body says "do not merge" but the PR is not a GitHub Draft. Consider clicking "Convert to Draft" to prevent accidental merges.

Cairo Build Issue

Regarding the cairo library error when running make dev — this is a common issue on Linux. Try:

  • Ensure libcairo2-dev (Debian/Ubuntu) or cairo-devel (Fedora) is installed, not just the runtime libcairo2.
  • If using NixOS/nix, add cairo and pkg-config to your dev shell.
  • Check that pkg-config --libs cairo returns a valid path.
  • If the error is from a Node native module (e.g., canvas), you may also need pango, libjpeg, and giflib dev packages.

Recommendation: improve needed

The translation work is high quality overall. Fix the two typos above and resolve the local testing before requesting merge. Once tested and the typos are corrected, this should be ready.

@Schwachinformatiker
Copy link
Copy Markdown
Author

@qnixsynapse I cannot make make dev work on my computer, it complains about the cairo dependency not installed on my system but it is installed. Do you have any idea what could be wrong?

@tokamak-pm
Copy link
Copy Markdown

tokamak-pm Bot commented Jun 6, 2026

Review: PR #8256 — Resolve (untested): 8221-improve-german-translation

Reviewing commit: 8ef17ca6fd ("Fixed LLM findings") — new since last review.


Overview

This PR extends and improves the German (de-DE) translation, adds missing English source keys to match, and converts several hardcoded English strings in component files to t() calls. The scope has grown to 17 files (8 locale files, 8 component files, .gitignore). The translation quality is generally good, and the i18n extraction work is valuable.

Critical Issues (build-breaking)

1. Syntax error in ChatInput.tsx (lines ~2084-2088)

The reasoning tooltip assignment uses {t(...)} inside a plain JS expression (not JSX). Curly braces here create an object literal, which is syntactically invalid:

const tooltipText =
  reasoningValue === 'on'
    ? {t('common:reasoningForced')}       // <-- SyntaxError
    : reasoningValue === 'off'
      ? {t('common:reasoningDisabled')}   // <-- SyntaxError
      : {t('common:reasoningAuto')}       // <-- SyntaxError

Fix: Remove the curly braces — these are JS ternary expressions, not JSX interpolations:

const tooltipText =
  reasoningValue === 'on'
    ? t('common:reasoningForced')
    : reasoningValue === 'off'
      ? t('common:reasoningDisabled')
      : t('common:reasoningAuto')

2. Syntax error in local-api-server.tsx (line ~520)

Same issue — bare {t(...)} inside a JS ternary expression:

) : (
  {t('settings:localApiServer.serverStatusStopped')}
)

This is inside a description prop that alternates between a JSX element and a string. Since the falsy branch is not inside JSX, wrapping with curly braces creates an invalid object literal.

Fix: Remove the braces:

) : (
  t('settings:localApiServer.serverStatusStopped')
)

Both of these will cause TypeScript / build failures and must be fixed before merge.


Minor Issues

3. .gitignore addition of .idea/ — Fine as housekeeping, though unrelated to the translation scope. No objection.

4. German translation nits (non-blocking):

  • "mcpOnServerDesc": "Erlaube Serverseitige Toolnutzung." — "serverseitige" should be lowercase ("Erlaube serverseitige Toolnutzung.").
  • "defaultModel": "Standard Model lokaler API-Server" — "Model" should be "Modell" in German. Same issue in defaultModelDesc and defaultModelPlaceholder.
  • "enableDesc": "Erlaube das Hochladen sowie die Indexierung von Dokumente" — should be "von Dokumenten" (dative plural).

5. Consistency: The English source file en/common.json uses sentence case "Add images" / "Add audio" replacing the original title case "Add Images" / "Add Audio". This is actually an improvement, but worth noting.


What Looks Good

  • Proper extraction of hardcoded strings from TokenCounter.tsx, ParametersSection.tsx, DownloadManagement.tsx, hardware.tsx, interface.tsx, local-api-server.tsx, and AddEditMCPServer.tsx.
  • English source keys are added alongside the German translations, keeping locale files in sync.
  • The llamacppBusyOnExit section was previously left untranslated in German — now fully translated.
  • The large attachments section in de-DE/settings.json fills a substantial gap.
  • Grammar fixes like "weiterzuchatten" -> "weiter zu chatten" and "Umgebungs Variable" -> "Umgebungsvariable" are correct.

Testing

The author explicitly notes this is untested due to build environment issues. Given the two syntax errors identified above, a build would indeed fail. After fixing those, manual verification of the German locale in-app would be needed.


Recommendation

fix needed — The two syntax errors in ChatInput.tsx and local-api-server.tsx will break the build. These are straightforward fixes (remove extraneous curly braces around t() calls in JS expressions). Once fixed, this is solid i18n work that should be safe to 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.

idea: Improve translation for German

1 participant