Skip to content

fix(i18n): regenerate messages.pot to match source - #44509

Merged
hainenber merged 1 commit into
masterfrom
fix/regenerate-messages-pot
Sep 22, 2026
Merged

hainenber merged 1 commit into
masterfrom
fix/regenerate-messages-pot

Conversation

@rusackas

Copy link
Copy Markdown
Member

SUMMARY

#44465 added/renamed a handful of translatable strings (report/alert retry copy, screenshot cache error messages) without regenerating messages.pot. That leaves the extraction template out of sync with source, which breaks check_pot_drift.py for every PR built on top of current master — both the standalone babel-extract CI job and its unit-test twin (tests/unit_tests/scripts/translations/check_pot_drift_test.py::test_committed_template_matches_a_fresh_extraction), which is part of the required unit-tests gate.

This regenerates messages.pot via scripts/translations/babel_update.sh (5 new msgids added, 4 stale ones removed) and updates the language catalogs accordingly. Existing translations are untouched; the new strings land untranslated, same as any other string addition.

Pure translation-template regen, no application code changes.

TESTING INSTRUCTIONS

python scripts/translations/check_pot_drift.py

Should report superset/translations/messages.pot matches a fresh extraction.

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

🤖 Generated with Claude Code

@bito-code-review

bito-code-review Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #a5c030

Actionable Suggestions - 0
Additional Suggestions - 12
  • superset/translations/sl/LC_MESSAGES/messages.po - 1
    • Untranslated new strings · Line 4441-4441
      New msgids were added but left with empty `msgstr`, so Slovenian users will see English text for these strings (all confirmed live in source: `AlertReportModal.tsx`, `dashboards/api.py`, notification tests). Per BITO.md rule 12743, fill in the translations before merging.
  • superset/translations/ru/LC_MESSAGES/messages.po - 1
    • Missing Russian translations · Line 4315-4315
      Newly added msgids (4315, 4384, 12067, 12608, 12611) all ship with empty `msgstr ""`, so Russian users will see untranslated English text. Per BITO.md rules [12743]/[13343], fill in Russian translations before merge.
  • superset/translations/zh/LC_MESSAGES/messages.po - 5
    • Missing zh translation · Line 4441-4441
      New/changed msgid `Configure retries when alert or report generation fails before delivery.` (used in `AlertReportModal.tsx`) has an empty `msgstr ""`, so zh users will see English. Fill the translation before merging.
    • Missing zh error translation · Line 4521-4521
      New msgid `Contact the report owner for error details.` (used in `webhook.py`, `slack_mixin.py`, `email.py`) has an empty `msgstr ""`. This is a user-facing error message; zh users will see English. Fill the translation.
    • Missing zh translation · Line 12731-12731
      New msgid `Retry generation failures before delivery starts. Alerts re-check their condition on each attempt. Delivery failures are not replayed.` (used in `AlertReportModal.tsx`) has an empty `msgstr ""`. zh users will see English. Fill the translation.
    • Missing zh error translation · Line 13291-13291
      New msgid `Screenshot cache is unavailable` (used in `dashboards/api.py` as an error message) has an empty `msgstr ""`. zh users will see English on screenshot failures. Fill the translation.
    • Missing zh error translation · Line 13294-13294
      New msgid `Screenshot request is temporarily unavailable` (used in `dashboards/api.py` as an error message) has an empty `msgstr ""`. zh users will see English on screenshot failures. Fill the translation.
  • superset/translations/cs/LC_MESSAGES/messages.po - 4
    • Untranslated msgid · Line 4505-4505
      New msgid 'Contact the report owner for error details.' has empty `msgstr ""`. Czech users will see English. Fill in the translation per BITO.md [12743]/[13343].
    • Untranslated msgid · Line 12503-12505
      New multi-line msgid 'Retry generation failures before delivery starts...' has empty `msgstr ""`. Czech users will see English. Fill in the translation per BITO.md [12743]/[13343].
    • Untranslated msgid · Line 13065-13065
      New msgid 'Screenshot cache is unavailable' has empty `msgstr ""`. Czech users will see English. Fill in the translation per BITO.md [12743]/[13343].
    • Untranslated msgid · Line 13068-13068
      New msgid 'Screenshot request is temporarily unavailable' has empty `msgstr ""`. Czech users will see English. Fill in the translation per BITO.md [12743]/[13343].
  • superset/translations/fr/LC_MESSAGES/messages.po - 1
    • New strings untranslated · Line 4428-4428
      The five newly added msgids all carry an empty `msgstr`, so French users will see the English fallback text for these UI strings (gettext uses the msgid when msgstr is empty). These strings are live UI copy extracted from source (present in every locale file). Add French translations to complete the locale update.
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

Review Details
  • Files reviewed - 31 · Commit Range: 3ca9f00..3ca9f00
    • superset/translations/ar/LC_MESSAGES/messages.po
    • superset/translations/ca/LC_MESSAGES/messages.po
    • superset/translations/cs/LC_MESSAGES/messages.po
    • superset/translations/de/LC_MESSAGES/messages.po
    • superset/translations/en/LC_MESSAGES/messages.po
    • superset/translations/es/LC_MESSAGES/messages.po
    • superset/translations/fa/LC_MESSAGES/messages.po
    • superset/translations/fi/LC_MESSAGES/messages.po
    • superset/translations/fr/LC_MESSAGES/messages.po
    • superset/translations/it/LC_MESSAGES/messages.po
    • superset/translations/ja/LC_MESSAGES/messages.po
    • superset/translations/ko/LC_MESSAGES/messages.po
    • superset/translations/lv/LC_MESSAGES/messages.po
    • superset/translations/messages.pot
    • superset/translations/mi/LC_MESSAGES/messages.po
    • superset/translations/nl/LC_MESSAGES/messages.po
    • superset/translations/pl/LC_MESSAGES/messages.po
    • superset/translations/pt/LC_MESSAGES/messages.po
    • superset/translations/pt_BR/LC_MESSAGES/messages.po
    • superset/translations/ro/LC_MESSAGES/messages.po
    • superset/translations/ru/LC_MESSAGES/messages.po
    • superset/translations/sk/LC_MESSAGES/messages.po
    • superset/translations/sl/LC_MESSAGES/messages.po
    • superset/translations/sr/LC_MESSAGES/messages.po
    • superset/translations/sr_Latn/LC_MESSAGES/messages.po
    • superset/translations/ta/LC_MESSAGES/messages.po
    • superset/translations/th/LC_MESSAGES/messages.po
    • superset/translations/tr/LC_MESSAGES/messages.po
    • superset/translations/uk/LC_MESSAGES/messages.po
    • superset/translations/zh/LC_MESSAGES/messages.po
    • superset/translations/zh_TW/LC_MESSAGES/messages.po
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@github-actions github-actions Bot added i18n Namespace | Anything related to localization i18n:spanish Translation related to Spanish language i18n:italian Translation related to Italian language i18n:french Translation related to French language i18n:chinese Translation related to Chinese language i18n:japanese Translation related to Japanese language i18n:russian Translation related to Russian language i18n:korean Translation related to Korean language i18n:dutch i18n:slovak i18n:ukrainian i18n:portuguese i18n:brazilian i18n:traditional-chinese i18n:persian i18n:czech i18n:latvian preset-io labels Sep 22, 2026
@codecov

codecov Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 80.86%. Comparing base (ee4b8dd) to head (e5aa9f4).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@             Coverage Diff             @@
##           master   #44509       +/-   ##
===========================================
+ Coverage   66.15%   80.86%   +14.70%     
===========================================
  Files        2946     2946               
  Lines      176943   176943               
  Branches    40965    40965               
===========================================
+ Hits       117063   143087    +26024     
+ Misses      57384    31155    -26229     
- Partials     2496     2701      +205     
Flag Coverage Δ
hive 36.93% <ø> (ø)
mysql 56.16% <ø> (ø)
postgres 56.17% <ø> (+<0.01%) ⬆️
presto 38.88% <ø> (ø)
python 85.18% <ø> (+28.68%) ⬆️
sqlite 55.88% <ø> (ø)
unit 77.36% <ø> (?)

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.

@gabotorresruiz gabotorresruiz left a comment

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.

LGTM.

Not a blocker, one note for whoever reads the description: this is not superseded by #44513, but it no longer fixes what the description says it fixes.

Verified empirically on 13502a6:

  • master (5c1f617) is still red on the drift check, now because of #43655 rather than #44465. The three missing strings are Security token error and Reload the page and try again to continue. from superset-frontend/src/components/ErrorMessage/CsrfErrorMessage.tsx, lines 42 and 43, and The CSRF token could not be validated. from superset/views/error_handling.py:235. pytest tests/unit_tests/scripts/translations/check_pot_drift_test.py reports 1 failed, 6 passed on master and 7 passed on this head.
  • The regeneration reproduces. I ran ./scripts/translations/babel_update.sh on a clean worktree of this head with TZ=UTC, and the only difference against the committed files is the POT-Creation-Date header, in all 31 of them. No ordering or wrapping noise.
  • Nothing was lost in the catalogs. Across the 30 .po files the change is exactly 8 msgids added and 4 removed, the same set in every locale, with zero msgstr changes, zero new #, fuzzy flags and zero changed #. do-not-translate comments. The only removed id that carried translations is Sorry, an unknown error occurred, which no longer exists in source, and every locale that had it already translates Sorry, an unknown error occurred. too, so no string falls back to English.

Worth refreshing the description before merge: against current master the template gains 3 msgids and drops none, and the .po catalogs are what carry the other 5, since #44513 committed only messages.pot.

Several merged PRs (CSRF-recovery copy, a native-filters display-format
control, and others) added or renamed translatable strings without
regenerating the extraction template, leaving master's own
check_pot_drift.py (both the standalone babel-extract job and its
unit-test twin) failing for every PR built on top of it.

Regenerated via scripts/translations/babel_update.sh with the pinned
Babel/jinja2 toolchain; verified no existing translations regressed
(translated/fuzzy counts unchanged across all 28 catalogs against a
fresh master baseline).

Co-Authored-By: Evan Rusackas <evan@preset.io>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@rusackas
rusackas force-pushed the fix/regenerate-messages-pot branch from 13502a6 to e5aa9f4 Compare September 22, 2026 18:01
@sadpandajoe
sadpandajoe self-requested a review September 22, 2026 18:11
@rusackas rusackas added the merge-if-green If approved and tests are green, please go ahead and merge it for me label Sep 22, 2026
@hainenber
hainenber merged commit 0fe0662 into master Sep 22, 2026
80 checks passed
@hainenber
hainenber deleted the fix/regenerate-messages-pot branch September 22, 2026 18:41
rebenitez1802 added a commit to rebenitez1802/superset that referenced this pull request Sep 22, 2026
Pick up apache#44509 (messages.pot regeneration) so the required babel-extract /
pot-drift checks pass.
aminghadersohi added a commit to aminghadersohi/superset that referenced this pull request Sep 22, 2026
aminghadersohi added a commit to aminghadersohi/superset that referenced this pull request Sep 22, 2026
aminghadersohi added a commit to aminghadersohi/superset that referenced this pull request Sep 22, 2026
aminghadersohi added a commit to aminghadersohi/superset that referenced this pull request Sep 22, 2026
aminghadersohi added a commit to aminghadersohi/superset that referenced this pull request Sep 22, 2026
aminghadersohi added a commit to preset-io/superset that referenced this pull request Sep 22, 2026
@bito-code-review

Copy link
Copy Markdown
Contributor

Bito Automatic Review Skipped – PR Already Merged

Bito scheduled an automatic review for this pull request, but the review was skipped because this PR was merged before the review could be run.
No action is needed if you didn't intend to review it. To get a review, you can type /review in a comment and save it

villebro added a commit that referenced this pull request Sep 22, 2026
Native run of scripts/translations/babel_update.sh, superseding the
cherry-pick of #44509 (pure master-source regeneration, skipped) and
reconciling the auto-merged .po diffs from #44467/#44144/#44513/
#44286/#44508 with 7.0's actual translatable strings.
rusackas added a commit that referenced this pull request Oct 1, 2026
babel-extract runs check_pot_drift.py, added in #44467 to fail a PR that
adds or renames a translatable string without regenerating
messages.pot. It is not currently in .asf.yaml's required contexts, so
it can be red (or, on a PR whose branch predates the script's own
existence, error outright) without blocking merge.

That gap let #44465 land 18 minutes after #44467 regenerated the
template, reintroducing drift immediately: #44465's branch was cut
before #44467 merged, so check_pot_drift.py did not exist on it yet,
and nothing required babel-extract to be green (or even present) on
the up-to-date branch before allowing the merge. #44509 cleaned up the
resulting drift.

babel-extract is also the only translation-drift check gated on both
Python and frontend changes (unit-tests-required, which independently
covers check_pot_drift.py via check_pot_drift_test.py, only runs when
a PR touches Python), so it is the one that has to be required for a
frontend-only string addition to be caught at all.

This does not by itself close the race that let #44465 through -- that
needs required_status_checks.strict: true, a separate, repo-wide
decision left for a follow-up PR stacked on this one. This PR only
makes the existing check_pot_drift.py gate binding on the PR's own
branch.

Co-Authored-By: Evan Rusackas <evan@preset.io>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

i18n:brazilian i18n:chinese Translation related to Chinese language i18n:czech i18n:dutch i18n:french Translation related to French language i18n:italian Translation related to Italian language i18n:japanese Translation related to Japanese language i18n:korean Translation related to Korean language i18n:latvian i18n:persian i18n:portuguese i18n:russian Translation related to Russian language i18n:slovak i18n:spanish Translation related to Spanish language i18n:traditional-chinese i18n:ukrainian i18n Namespace | Anything related to localization merge-if-green If approved and tests are green, please go ahead and merge it for me preset-io size/XXL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants