Problem
Two vocabulary rules the engine holds itself to in English are broken elsewhere.
The engine says sale where nothing is sold. A great deal of what it books is free: a public house gives places away, so a message telling an operator a seat is "out of sale" says something untrue about it. Six user-facing strings say it, in SlotSeatsForm and SlotSeatCommands, and thirty-one comments say it too. The French follows them faithfully, which is how retiree de la vente got onto four screens.
Three French strings are the translation's own doing: two render a booker as client where the English says only "human-facing" and "self-cancellation", and one turns Units this tariff may take per slot into peut vendre par creneau, so "may take" became "may sell". Where the English client means a network client throttled by IP, or a software client contract, the French is correct and stays.
The documentation still calls a slot a session. Code, admin screens and help text say slot, because session is already taken: it is the web session a basket lives in, and one word for both is what makes a sentence about holding places ambiguous. The prose under docs/ was never swept and says session 209 times across 21 files, of which exactly one means the web session it collides with. A reader therefore arrives at the admin screens having learned the wrong noun, and the two heaviest pages for it are the ones about holding capacity.
Booker-facing strings are a separate matter and stay as they are: to somebody buying a ticket the performance is a session, and that is deliberate.
Proposed resolution
One pass over the French translation, replacing the money words with the booker vocabulary the English already uses, and correcting the one mistranslated string. One pass over docs/, saying slot where the subject is the engine's record and leaving session where the subject is what a booker attends, with the distinction stated once where the vocabulary is introduced.
Both passes are checked in the two directions a translation audit needs: every string in the code has an entry, and every entry answers to a string that still exists. A reworded string leaves both a missing entry and an orphan, so the two are paired rather than the missing one simply added.
Remaining tasks
None beyond the two passes. No behavior changes, so the existing suite is the whole check.
User interface changes
Six English strings and the French that follows them stop saying sale. The message identifiers change, so a site that has overridden one of them re-translates it.
API changes
None.
AI-Generated: Yes (Claude Code found both vocabulary breaches while reading the translation and the documentation for other work, counted them, and wrote this issue summary. No code has been written for it yet.)
Issue fork yoyaku-3618369
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
mably commentedComment #4
mably commentedComment #6
mably commented