Skip to content

feat(i18n): backfill French (fr) translations (AI-generated, needs review)#41655

Merged
rusackas merged 1 commit into
masterfrom
feat/i18n-fr-translations
Jul 2, 2026
Merged

feat(i18n): backfill French (fr) translations (AI-generated, needs review)#41655
rusackas merged 1 commit into
masterfrom
feat/i18n-fr-translations

Conversation

@rusackas

@rusackas rusackas commented Jul 2, 2026

Copy link
Copy Markdown
Member

SUMMARY

Backfills the remaining untranslated entries in the French (fr) catalog using scripts/translations/backfill_po.py (Claude, cross-language context), skipping do-not-translate tokens (icon names, enum values, SQL keywords, API field names, placeholders — see #41651).

All generated strings are marked #, fuzzy with an attribution comment. The #, fuzzy flag marks each entry as machine-generated and needing native-speaker review. Note on serving: both the frontend (po2json --fuzzy) and backend (pybabel compile --use-fuzzy, see #41648) builds include fuzzy entries, so these translations render in the UI once built — reviewers should verify each and remove the #, fuzzy flag to confirm. Format placeholders are preserved (verified programmatically).

Tracked by check_translation_regression.py as untranslated → fuzzy, which is explicitly not a regression. Part of a per-language sweep.

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

Translation catalog only — no layout or behavior change. Strings render once the frontend/backend are rebuilt.

TESTING INSTRUCTIONS

  • pybabel compile --use-fuzzy -d superset/translations -l fr succeeds.
  • French native speakers: review the #, fuzzy entries and de-fuzz once confirmed.

ADDITIONAL INFORMATION

  • Has associated issue:
  • Required feature flags:
  • Changes UI
  • Includes DB Migration (follow approval process in SIP-59)
  • Introduces new feature or API
  • Removes existing feature or API

…view)

Fills the remaining untranslated entries in the French catalog using
scripts/translations/backfill_po.py (Claude, cross-language context), skipping
do-not-translate tokens. All generated strings are marked `#, fuzzy` with an
attribution comment for native-speaker review; they preserve format
placeholders. Both the frontend (`po2json --fuzzy`) and backend builds serve
fuzzy entries, so reviewers should verify and de-fuzz to confirm.

Catalog re-normalized to the Babel 2.17 canonical format via `pybabel update`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@rusackas rusackas requested a review from mistercrunch July 2, 2026 02:55
@dosubot dosubot Bot added the i18n:french Translation related to French language label Jul 2, 2026
@github-actions github-actions Bot added the i18n Namespace | Anything related to localization label Jul 2, 2026
@codecov

codecov Bot commented Jul 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 64.62%. Comparing base (748060d) to head (a080e30).
⚠️ Report is 2 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master   #41655      +/-   ##
==========================================
- Coverage   64.63%   64.62%   -0.01%     
==========================================
  Files        2674     2674              
  Lines      147711   147711              
  Branches    34098    34098              
==========================================
- Hits        95466    95459       -7     
- Misses      50509    50513       +4     
- Partials     1736     1739       +3     
Flag Coverage Δ
hive 39.10% <ø> (ø)
mysql 57.83% <ø> (ø)
postgres 57.89% <ø> (-0.01%) ⬇️
presto 40.64% <ø> (ø)
python 59.30% <ø> (-0.01%) ⬇️
sqlite 57.47% <ø> (ø)
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.

@bito-code-review bito-code-review Bot 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.

Code Review Agent Run #953ee6

Actionable Suggestions - 4
Additional Suggestions - 1
  • superset/translations/fr/LC_MESSAGES/messages.po - 1
    • Inconsistent axis label capitalization · Line 3661-3661
      The file consistently uses capital 'X' for the X-axis (e.g., line 3372: 'l'axe X', line 2613: 'l'axe X'). The new translation 'axe x' deviates from this established pattern and should be updated to 'axe X'.
Filtered by Review Rules

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

Review Details
  • Files reviewed - 1 · Commit Range: a080e30..a080e30
    • superset/translations/fr/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 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

msgstr "Activer le mode JavaScript pour les icônes"

#, fuzzy
msgid "Enable icons"

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.

Wrong translation for Enable icons

The msgstr for Enable icons reads "Colonnex du tableau" (literally "Table columns"), which is an unrelated error from a prior human translator. The new backfill translation correctly translated the adjacent Enable icon JavaScript mode as "Activer le mode JavaScript pour les icônes" but missed this entry. The correct French for "Enable icons" is "Activer les icônes".

Code Review Run #953ee6


Should Bito avoid suggestions like this for future reviews? (Manage Rules)

  • Yes, avoid them

msgstr "Erreur lors de la désactivation du plein écran : %s"

#, fuzzy, python-format
msgid "Error enabling fullscreen: %s"

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.

Wrong translation for Error enabling fullscreen

The msgstr for Error enabling fullscreen: %s duplicates the translation of Error deleting %s ("Une erreur s'est produite durant la récupération des données"), which means "error fetching data" — entirely wrong for an enabling-fullscreen action. It also mismatches the adjacent Error disabling fullscreen: %s translation at line 6458 ("Erreur lors de la désactivation du plein écran"). The correct translation is "Erreur lors de l'activation du plein écran : %s".

Code Review Run #953ee6


Should Bito avoid suggestions like this for future reviews? (Manage Rules)

  • Yes, avoid them

@@ -6510,8 +6733,11 @@ msgstr "Échec de l'export, veuillez réessayer."
msgid "Export failed: %s"
msgstr "Rapport échoué"

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.

Missing printf placeholder in translation

The msgid "Export failed: %s" has a #, fuzzy, python-format flag, but the msgstr is missing the %s placeholder. The usage at superset-frontend/src/SqlLab/components/ResultSet/index.tsx:243 calls addDangerToast(t('Export failed: %s', error)), passing error as a substitution argument. At runtime, the error detail will be silently dropped, producing "Rapport échoué" instead of the intended "Rapport échoué: ".

Code suggestion
Check the AI-generated fix before applying
Suggested change
msgstr "Rapport échoué"
msgstr "Échec de l'exportation : %s"

Code Review Run #953ee6


Should Bito avoid suggestions like this for future reviews? (Manage Rules)

  • Yes, avoid them

Comment on lines 8983 to 8984
msgid "Mapbox (API key required)"
msgstr "le courriel est obligatoire"

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.

Cross-contaminated translation

The msgstr for "Mapbox (API key required)" reads "le courriel est obligatoire" (email is mandatory), which has no semantic relation to the English source. This is a cross-contamination from a different source string. Fix: "Mapbox (clé API requise)".

Code Review Run #953ee6


Should Bito avoid suggestions like this for future reviews? (Manage Rules)

  • Yes, avoid them

@jeanpommier

Copy link
Copy Markdown
Contributor

Hi @rusackas
I had a quick look, it looks quite good actually. What are your expectations ? How do you suggest we "defuzzy" the translations ? I don't think I can push directly to this branch, can I ?

@jeanpommier

Copy link
Copy Markdown
Contributor

It also might collide with #41688. Could we refresh this one on top of #41688 ?

@sadpandajoe sadpandajoe left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Translation-only .po update under superset/translations.

@rusackas

rusackas commented Jul 2, 2026

Copy link
Copy Markdown
Member Author

Thanks for looking, @jeanpommier! 🙏

For defuzzing: they're all #, fuzzy on purpose (machine-drafted), so a native speaker just skims each, fixes anything off, and drops the #, fuzzy line and the Machine-translated via... attribution to confirm it. No need to do them all in one go.

And yeah, #41688 will collide with this. Let's land yours first and I'll rebase this on top, so your fixes win and this only fills whatever's still empty. I'll take the rebase once it merges.

Side note: the bot flagged a few strings here that are just wrong (Enable icons, Mapbox (API key required)...) which actually predate this PR... might be worth grabbing in #41688 while you're in there. Thanks!

@rusackas rusackas merged commit 0370384 into master Jul 2, 2026
63 checks passed
@rusackas rusackas deleted the feat/i18n-fr-translations branch July 2, 2026 21:58
jeanpommier added a commit to jeanpommier/superset that referenced this pull request Jul 3, 2026
- Check # fuzzy AI-generated translation from recent PR
apache#41655
- Fix quite a few other fuzzy translations
- replace "ensemble de données" by "jeu de données", which is more
  widely used
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

i18n:french Translation related to French language i18n Namespace | Anything related to localization size/XXL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants