feat(i18n): backfill German (de) translations (AI-generated, needs review)#41608
Conversation
…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>
|
Bito Automatic Review Skipped - Large PR |
Codecov Report✅ All modified and coverable lines are covered by tests. 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
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
|
||
| msgid "Column Configuration" | ||
| msgstr "Spaltenkonfiguration" |
There was a problem hiding this comment.
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.(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| "format might have changed, rendering the old data stake. You need to re-" | ||
| "run the original query." | ||
| msgstr "" |
There was a problem hiding this comment.
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.(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| "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." |
There was a problem hiding this comment.
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.(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| "Unable to identify temporal column for date range time comparison.Please " | ||
| "ensure your dataset has a properly configured time column." | ||
| msgstr "" |
There was a problem hiding this comment.
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.(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
SUMMARY
Backfills the 5 remaining untranslated entries in the German (
de) catalog usingscripts/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 indocs/developer_docs/contributing/howtos.md).All generated strings are marked
#, fuzzywith aMachine-translated via backfill_po.pyattribution comment, so they are excluded from compiled.mooutput until a human reviewer confirms them — nothing AI-generated is served to users unreviewed.The five entries:
Note on diff size: the catalog is re-normalized to the Babel 2.17 canonical format via
pybabel update(the toolchain pinned insuperset/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.pyasuntranslated → 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 desucceeds (fuzzy entries are skipped, as intended).#, fuzzyentries; correct anymsgstrand remove the#, fuzzyflag + attribution comment to promote them to confirmed translations.ADDITIONAL INFORMATION