feat(i18n): backfill French (fr) translations (AI-generated, needs review)#41655
Conversation
…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>
Codecov Report✅ All modified and coverable lines are covered by tests. 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
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:
|
There was a problem hiding this comment.
Code Review Agent Run #953ee6
Actionable Suggestions - 4
-
superset/translations/fr/LC_MESSAGES/messages.po - 4
- Wrong translation for Enable icons · Line 6237-6237
- Wrong translation for Error enabling fullscreen · Line 6462-6462
- Missing printf placeholder in translation · Line 6734-6734
- Cross-contaminated translation · Line 8983-8984
Additional Suggestions - 1
-
superset/translations/fr/LC_MESSAGES/messages.po - 1
-
Inconsistent axis label capitalization · Line 3661-3661The 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.
-
superset/translations/fr/LC_MESSAGES/messages.po - 4
- CWE-793: Incomplete Translation Warning Text · Line 19182-19184
- Missing fuzzy flag on machine entry · Line 12847-12858
- Missing fuzzy flag on machine entry · Line 13088-13099
- Escaped percent corrupted in msgid · Line 208-224
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
| msgstr "Activer le mode JavaScript pour les icônes" | ||
|
|
||
| #, fuzzy | ||
| msgid "Enable icons" |
There was a problem hiding this comment.
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" |
There was a problem hiding this comment.
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é" | |||
There was a problem hiding this comment.
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
| 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
| msgid "Mapbox (API key required)" | ||
| msgstr "le courriel est obligatoire" |
There was a problem hiding this comment.
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
|
Hi @rusackas |
sadpandajoe
left a comment
There was a problem hiding this comment.
Translation-only .po update under superset/translations.
|
Thanks for looking, @jeanpommier! 🙏 For defuzzing: they're all 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 ( |
- 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
SUMMARY
Backfills the remaining untranslated entries in the French (
fr) catalog usingscripts/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
#, fuzzywith an attribution comment. The#, fuzzyflag 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#, fuzzyflag to confirm. Format placeholders are preserved (verified programmatically).Tracked by
check_translation_regression.pyasuntranslated → 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 frsucceeds.#, fuzzyentries and de-fuzz once confirmed.ADDITIONAL INFORMATION