chore(i18n): complete the French catalog — 0 fuzzy, 0 untranslated - #174
Merged
Conversation
- Resolve the 104 pending entries of locale/fr: 77 identity translations for French msgids (catalog convention), 27 new French strings for English msgids, aligned on the existing terminology - Drop "citations" from the privacy string: the Quote feature is gone - Recompile both catalogs; en.mo loses 11 stale identity plurals its own .po no longer carried (rendering verified unchanged) - Assert on the view context in test_follow_ui rather than on translated empty-state labels: fuzzy entries were excluded from the .mo, so two assertions were silently vacuous and one broke once translated
- Mixed FR/EN msgids: a French msgid takes an identity translation - gettext drops fuzzy entries from the .mo, so they render as raw msgid — lifting a fuzzy flag changes the rendering - Assert on view context, never on translated labels - A versioned .mo can drift from its own .po; diff with msgunfmt first
Move the rule to 05-pytest, which is scoped to tests/; the i18n rule is scoped to suddenly/ and templates/, so it never loads while editing tests.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexte
make i18n-checkétait rouge sur 104 entrées en attente danslocale/fr: 50 marquéesfuzzy, 54 vides.Ce que fait la PR
Catalogue français — les 104 entrées sont réglées :
achievements.py,settings_views.py,_composer.html, templates messaging/users). C'est la convention du catalogue : les chaînes sources sont mixtes FR/EN.Like/Unlike→ « Aimer / Ne plus aimer cette scène », calqué sur le couple Suivre/Se désabonner.Un arbitrage de contenu : la traduction fuzzy héritée de la page vie privée mentionnait « citations ». Retirée — la feature Quote a été supprimée et le msgid ne dit plus que « scenes, characters ».
Le patch a été appliqué par adressage indexé des entrées (jamais de msgid retapé), donc aucun risque de corruption d'accents,
…ou—.Deux tests recâblés —
tests/activitypub/test_follow_ui.py. gettext exclut les entrées fuzzy du.mocompilé : ces libellés s'affichaient donc encore en anglais. Les traduire a basculé le rendu en français, ce qui a révélé que deux assertions négatives étaient vacuement vraies et qu'une troisième cassait. Les trois portent désormais sur le contexte de vue (is_suddenly,activity,remote_games,remote_characters) — la propriété que les tests veulent réellement établir, insensible à la formulation et à la locale.Point d'attention —
en.moLe
.moanglais passe de 1960 à 594 octets. Ce n'est pas une perte de traduction : leen.mocommité était désynchronisé de son propre.po, compilé par Babel depuis un état antérieur, et portait 11 pluriels absents du.po(dont%(counter)s quote). Toutes étaient des traductions identité, donc gettext retombe sur le msgid. Rendu anglais vérifié empiriquement, inchangé :3 characters,followers,3 scenes · readable by all.en.poreste vide à 884/890 — dette préexistante (838/844 surmain, proportion identique), hors périmètre.Vérification
locale/fr: 890 entrées, 0 fuzzy, 0 vide,msgfmt -cpropremakemessages— c'était le vrai risque,make i18n-checkrégénère avant de testerpytest tests/core/test_i18n.py tests/core/test_locale_formatting.py→ 15/15pytest tests/activitypub/test_follow_ui.py tests/offers tests/users tests/core→ 199 passedruff checketruff format --checkverts🤖 Generated with Claude Code