Repository navigation
French interface translation - #110
Merged
Merged
Conversation
Les 3 118 clés de messages.en.yaml, plus les domaines validators et
security, traduits en français. Le catalogue seul ne change rien à
l'écran : la locale est déclarée au commit suivant. CatalogueParityTest
vérifie désormais le français comme l'allemand et le pirate. C'est le
seul garde-fou, car Symfony retombe sans bruit sur l'anglais quand une
clé manque.
Choix de traduction, pour qui reprendra ces fichiers :
- Vouvoiement, l'usage des logiciels en français, alors que
l'allemand tutoie. Aucun test ne l'impose, contrairement à
GermanIsInformalTest.
- « Agenda » pour calendar, « libellé » pour label, « suivi » pour
star (comme Gmail en français), « mettre en attente » pour snooze,
« courrier » pour mail quand c'est le contenu et « mail » pour un
message. Les termes des consoles Google et Microsoft sont repris tels
que leurs interfaces françaises les affichent.
- Apostrophe typographique (’) partout dans le texte. Avec une
apostrophe droite, chaque chaîne entre guillemets simples devrait la
doubler, et un oubli casse le fichier entier. L'espace avant « : » à
la française oblige aussi à mettre la valeur entre guillemets :
security.fr.yaml ne se chargeait plus à cause de ça (« A colon cannot
be used in an unquoted mapping value »). C'est corrigé et vérifié en
chargeant les trois fichiers.
- Placeholders (%count%, {skinTone}, {{ limit }}) et formes plurielles
({0}…|{1}…|]1,Inf[…) contrôlés clé par clé contre l'anglais : aucun
écart.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018nYWPc4bWacb79hm4ytfni
Ajoute 'fr' à AppLocale et à framework.enabled_locales, qui doivent rester synchronisés (le commentaire de translation.yaml le dit). Le sélecteur de langue des réglages et celui de l'installation lisent AppLocale::cases() : « 🇫🇷 Français » y apparaît sans autre modification. Deux réglages suivent la langue et devaient connaître le français : - ClockFormat::forLocale() : le français écrit 14 h 00, donc 24 heures par défaut comme l'allemand. Sans ça, un utilisateur francophone qui n'a rien choisi verrait « 2 PM ». Testé dans ClockFormatResolverTest. - Le sélecteur d'emoji charge ses noms et mots-clés par langue (la recherche « cœur » ne trouve rien dans les données anglaises). assets/emoji/fr/data.json vient de emoji-picker-element-data, comme en/ et de/. J'ai vérifié que ces deux fichiers sont identiques octet pour octet à ceux publiés par le paquet, donc fr/ vient bien de la même source. Le gabarit choisit maintenant de, fr ou en d'après la langue au lieu du seul test « starts with 'de' ». Laissé tel quel : DeterministicDateDetector, qui lit les dates dans le contenu des mails selon leur langue, et non la langue de l'interface. Apprendre les dates françaises (« le 4 août ») est un autre chantier. Docs : README, features/appearance.md (et sa traduction allemande, avec le hash mis à jour), et une entrée de CHANGELOG. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018nYWPc4bWacb79hm4ytfni
Owner
|
Merged, thank you — the catalogues are excellent. On top of it I added French to the content readers rather than leaving it for later: the calendar date detector (months, weekdays, 1er, 14h30, demain/après-demain, mardi prochain, French quote attributions), day-first slashed dates for French readers, and French vocabulary in the invoice and login-code extractors (b4b4eb1). |
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.
Adds French as an interface language.
What changes
translations/messages.fr.yamlcovers all 3,118 keys of the English catalogue, plusvalidators.fr.yamlandsecurity.fr.yaml.CatalogueParityTestnow checks French alongside German and pirate English.AppLocale::French(fr, « Français », 🇫🇷) is added, andfrjoinsframework.enabled_locales.AppLocale::cases(), so French shows up there without further changes.ClockFormat::forLocale()); a test is added.assets/emoji/fr/data.json, so emoji search works with French names.emoji-picker-element-datarelease asen/andde/; I checked that those two are byte-identical to the published ones.de,froreninstead of testing only forde.features/appearance.mdnow list the language (German translation and its hash updated), and the CHANGELOG has an entry under a new Unreleased section.Translation choices
Formal register. It uses « vous », the usual register for French software; the German catalogue uses « du », and no test enforces either for French.
Terminology:
Google and Microsoft console labels are written as their French UIs show them.
Typography:
''escaping.Checks: every key's placeholders (
%x%,{x},{{ x }}) and plural forms match the English. All three files load through Symfony's YAML loader, anddebug:translation fr --only-missingreports nothing.Not in this PR
DeterministicDateDetectorstill reads dates in mail content in English and German only; French dates (« le 4 août ») are a separate change.CatalogueParityTestwill point them out.Testing
Run here without Postgres:
ClockFormatResolverTest;lint:twig.EmbeddingPresetTest, which boots the translator for every locale includingfr, and the clock rendering tests need the database stack.🤖 Generated with Claude Code
https://claude.ai/code/session_018nYWPc4bWacb79hm4ytfni