Skip to content

feat(i18n): backfill German (de) translations (AI-generated, needs review)#41608

Merged
sadpandajoe merged 1 commit into
masterfrom
feat/i18n-de-translations
Jul 1, 2026
Merged

feat(i18n): backfill German (de) translations (AI-generated, needs review)#41608
sadpandajoe merged 1 commit into
masterfrom
feat/i18n-de-translations

Conversation

@rusackas

@rusackas rusackas commented Jul 1, 2026

Copy link
Copy Markdown
Member

SUMMARY

Backfills the 5 remaining untranslated entries in the German (de) catalog using scripts/translations/backfill_po.py, which drafts translations with Claude using every other language's existing translation of the same string as cross-language disambiguation context (per the process documented in docs/developer_docs/contributing/howtos.md).

All generated strings are marked #, fuzzy with a Machine-translated via backfill_po.py attribution comment, so they are excluded from compiled .mo output until a human reviewer confirms them — nothing AI-generated is served to users unreviewed.

The five entries:

English German
Aggregate function to apply when pivoting and computing the total rows and columns Aggregatfunktion, die beim Pivotieren und Berechnen der Gesamtzeilen und -spalten angewendet wird
Copy query Abfrage kopieren
Database upload file exceeds the maximum allowed size. Die hochgeladene Datenbankdatei überschreitet die maximal zulässige Größe.
Fit data An Daten anpassen
`periods` must be between 1 and %(max)s `periods` muss zwischen 1 und %(max)s liegen

Note on diff size: the catalog is re-normalized to the Babel 2.17 canonical format via pybabel update (the toolchain pinned in superset/translations/requirements.txt). The file was previously in an older wrap style, which accounts for the bulk of the line churn. The normalization is idempotent — re-running produces no further diff. This mirrors the recently-merged Japanese backfill (#41466).

This is tracked by check_translation_regression.py as untranslated → fuzzy, which is explicitly not a regression.

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

N/A — translation catalog only, no UI change until entries are reviewed and de-fuzzed.

TESTING INSTRUCTIONS

  • pybabel compile -d superset/translations -l de succeeds (fuzzy entries are skipped, as intended).
  • German native speakers: review the #, fuzzy entries; correct any msgstr and remove the #, fuzzy flag + attribution comment to promote them to confirmed translations.

ADDITIONAL INFORMATION

  • Has associated issue:
  • Required feature flags:
  • Changes UI
  • Includes DB Migration (follow approval process in SIP-59)
    • Migration is atomic, supports rollback & is backwards-compatible
    • Confirm DB migration upgrade and downgrade tested
    • Runtime estimates and downtime expectations provided
  • Introduces new feature or API
  • Removes existing feature or API

…view)

Fills the 5 remaining untranslated entries in the German catalog using
scripts/translations/backfill_po.py (Claude, cross-language context). All
generated strings are marked `#, fuzzy` with an attribution comment so they
are excluded from compiled .mo output until a human reviewer confirms them.

The catalog is also re-normalized to the Babel 2.17 canonical format via
`pybabel update` (the toolchain pinned in superset/translations/requirements.txt),
which accounts for the bulk of the line churn — the file was previously in an
older wrap style. This normalization is idempotent: re-running produces no
further diff.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@dosubot dosubot Bot added the i18n:german Translation related to German language label Jul 1, 2026
@github-actions github-actions Bot added the i18n Namespace | Anything related to localization label Jul 1, 2026
@bito-code-review

bito-code-review Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Bito Automatic Review Skipped - Large PR

Bito didn't auto-review this change because the pull request exceeded the line limit. No action is needed if you didn't intend for the agent to review it. Otherwise, to manually trigger a review, type /review in a comment and save.

@codecov

codecov Bot commented Jul 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 64.42%. Comparing base (3e88b48) to head (8492d92).

Additional details and impacted files
@@           Coverage Diff           @@
##           master   #41608   +/-   ##
=======================================
  Coverage   64.42%   64.42%           
=======================================
  Files        2668     2668           
  Lines      147181   147181           
  Branches    33946    33946           
=======================================
  Hits        94815    94815           
  Misses      50649    50649           
  Partials     1717     1717           
Flag Coverage Δ
hive 39.10% <ø> (ø)
mysql 57.65% <ø> (ø)
postgres 57.72% <ø> (ø)
presto 40.65% <ø> (ø)
python 59.13% <ø> (ø)
sqlite 57.35% <ø> (ø)
unit 100.00% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Comment on lines 3596 to 3598

msgid "Column Configuration"
msgstr "Spaltenkonfiguration"

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.

Suggestion: This new source text has an indisputable grammar typo (does not exists), which should be corrected to avoid shipping incorrect UI copy. [typo]

Severity Level: Minor 🧹
⚠️ Suggestion addresses non-issue; translation entry unused currently.
⚠️ No reproduction; column grammar string not in code.
Steps of Reproduction ✅
1. Examine the diff hunk around
`superset/translations/de/LC_MESSAGES/messages.po:3596-3598`, which adds a new msgid
`Column \"%(column)s\" is not numeric or does not exists in the query results.` with the
grammatical error `does not exists`.

2. Search the current codebase for this English string (or the distinctive phrase `does
not exists in the query results`) using Grep across `/workspace/superset`; no matches are
found in any Python, TypeScript, or other source files, confirming that this msgid is not
referenced by `_()`/`t()` calls today.

3. Confirm that the live catalog file at
`/workspace/superset/superset/translations/de/LC_MESSAGES/messages.po` does not actually
contain this msgid by grepping for `does not exists in the query results`, indicating that
the snippet in the provided diff no longer corresponds to the current PR state.

4. Because the erroneous text is not present in the compiled catalog and not used by any
runtime code path, there is no practical way to trigger this message in the product; the
suggestion targets a non-existent or unused string.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** superset/translations/de/LC_MESSAGES/messages.po
**Line:** 3596:3598
**Comment:**
	*Typo: This new source text has an indisputable grammar typo (`does not exists`), which should be corrected to avoid shipping incorrect UI copy.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

Comment on lines +4520 to 4522
"format might have changed, rendering the old data stake. You need to re-"
"run the original query."
msgstr ""

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.

Suggestion: This user-facing source string contains an obvious typo (stake instead of stale), which will be shown in product error messages; fix the typo in the source string and regenerate catalogs. [typo]

Severity Level: Major ⚠️
⚠️ SQL Lab results backend error message contains typo.
⚠️ Error clarity reduced when deserialization failures occur.
Steps of Reproduction ✅
1. Run a SQL Lab query so that it is stored in the results backend, then simulate a
deserialization failure (e.g., by changing `RESULTS_BACKEND_USE_MSGPACK` or tampering with
stored payload) to trigger `_deserialize_results_payload()` to raise `SerializationError`
at `superset/commands/sql_lab/results.py:12`.

2. The exception handler at `results.py:13-23` raises `SupersetErrorException` with
`SupersetError.message` set via `__()` using the msgid spanning lines `results.py:15-18`:
`Data could not be deserialized from the results backend. The storage format might have
changed, rendering the old data stake. You need to re-run the original query.`.

3. The same English msgid is present in the German catalog at
`superset/translations/de/LC_MESSAGES/messages.po:4520-4522`, so the typo `stake` instead
of `stale` appears both in the source string and, for users on the fallback English
locale, in the rendered error message.

4. Observe in the SQL Lab UI (or API error payload) that when this deserialization error
occurs, users see the malformed sentence `rendering the old data stake`, which is
confusing and unprofessional.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** superset/translations/de/LC_MESSAGES/messages.po
**Line:** 4520:4522
**Comment:**
	*Typo: This user-facing source string contains an obvious typo (`stake` instead of `stale`), which will be shown in product error messages; fix the typo in the source string and regenerate catalogs.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

Comment on lines +4926 to +4928
"that serparate the area above and below a given threshold. Isobands "
"represent a collection of polygons that fill the are containing values in"
" a given threshold range."

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.

Suggestion: This source string includes a clear misspelling (serparate), which will propagate to UI/help text; correct the spelling and regenerate the translation template. [typo]

Severity Level: Major ⚠️
⚠️ Contour layer description shows misspelled explanatory text.
⚠️ Reduces professionalism of UI help for contour charts.
Steps of Reproduction ✅
1. Open the Contour layer visualization in Explore; its control panel configuration is
defined at
`superset-frontend/plugins/preset-chart-deckgl/src/layers/Contour/controlPanel.ts:106-110`.

2. At `controlPanel.ts:107-110`, the `description` field is set via `t()` to a multi-line
string: `Define contour layers. Isolines represent a collection of line segments that
serparate the area above and below a given threshold. Isobands represent a collection of
polygons that fill the are containing values in a given threshold range.`.

3. This exact English text is extracted into the German catalog msgid at
`superset/translations/de/LC_MESSAGES/messages.po:4926-4928`, including the misspellings
`serparate` and `are` (missing letter in `area`).

4. When a user configures a Contour chart, the control panel UI displays this description
beneath the option, and the typos are visible directly in the help text, reducing
readability and polish of the product documentation.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** superset/translations/de/LC_MESSAGES/messages.po
**Line:** 4926:4928
**Comment:**
	*Typo: This source string includes a clear misspelling (`serparate`), which will propagate to UI/help text; correct the spelling and regenerate the translation template.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

Comment on lines +15605 to 15607
"Unable to identify temporal column for date range time comparison.Please "
"ensure your dataset has a properly configured time column."
msgstr ""

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.

Suggestion: The sentence is missing a space after the period (comparison.Please), causing a visibly broken message; add the missing whitespace in the source string. [typo]

Severity Level: Major ⚠️
⚠️ Temporal-column validation error message has missing whitespace.
⚠️ Users see malformed guidance when date comparison fails.
Steps of Reproduction ✅
1. Configure a date-range comparison on a dataset without a valid temporal column (or with
misconfigured time column) so that Superset fails to identify a suitable datetime column
for the comparison.

2. In `superset/models/helpers.py:1865-1878`, when this condition is detected, the code
raises `QueryObjectValidationError` with a message built from two adjacent string literals
at lines 1875-1876: `"Unable to identify temporal column for date range time comparison."`
and `"Please ensure your dataset has a properly configured time column."`.

3. Python automatically concatenates these two literals without inserting a space,
producing the combined msgid `Unable to identify temporal column for date range time
comparison.Please ensure your dataset has a properly configured time column.`, which is
exactly what appears in the German catalog at
`superset/translations/de/LC_MESSAGES/messages.po:15605-15607`.

4. When this validation error surfaces in the Explore UI or API response, users see the
malformed sentence with `comparison.Please` jammed together, which is clearly incorrect
English and harms readability of the guidance.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** superset/translations/de/LC_MESSAGES/messages.po
**Line:** 15605:15607
**Comment:**
	*Typo: The sentence is missing a space after the period (`comparison.Please`), causing a visibly broken message; add the missing whitespace in the source string.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

@sadpandajoe sadpandajoe merged commit b3c709b into master Jul 1, 2026
63 checks passed
@sadpandajoe sadpandajoe deleted the feat/i18n-de-translations branch July 1, 2026 17:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

i18n:german Translation related to German language i18n Namespace | Anything related to localization size/XXL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants