Issue #3615040: Say offer and book rather than sell and buy, and booker rather than customer
Second pass on this issue: the money words the first one deliberately left. Nothing in yoyaku says selling any more, in either language.
What changed
sell/sells/selling/sold→ offer where something is made available, book where a booking takes it. 377 occurrences.oversell/oversold→ overbook / overbooked, the word the domain actually uses.buy/buys/buying/bought→ book / books / booking / booked;buyer→ booker.customer→ booker (176 occurrences), which was already the settled noun on the order entity (booker_name,booker_email). This moved the render keys#customer_nameand#customer_emailto#booker_nameand#booker_email, the?customer=order filter to?booker=, the summary CSS class, the Views column labels and theCustomer: %name (%email)string.Sold out→ Full, in all three places a booker sees it, and the identifier behind it in one move across four languages:#offer_sold_out→#offer_full(PHP),element['#offer_full'](Twig),offer.full(JS),.yoyaku-offer--full(CSS), plus the FunctionalJS test that pins the settings payload.sellable→ bookable, and the private$sellablelocal with it.- Nine test method names that carried the word, and the
shoppertest fixtures →booker. - French:
vente/vendu/vendre/vend→réservation/proposé/proposer/propose;client→réservantwherever the English says booker, left alone where it means an API or network client;commande soldée→commande clôturée, since soldée reads as discounted.
Three rewrites needed a different verb than the pattern: "skipping the row sells as though nothing were configured" means behaves, and "which part of the house a tariff buys" means covers.
Kept on purpose
price, pay, payment, charge, refund, checkout, order, cart, ticket — money that is really money — and merchant in the gateway design docs, where it is the card-scheme merchant. client stays where it means a transport client.
Verification
Every tracked file, any extension, both languages, is free of the vocabulary. That sweep is the point: yoyaku.module survived the first pass because the file list was *.php, and .module, .twig, .js, .css, .yml and the .po each hid occurrences.
The po moved with the code: every changed English string had its msgid updated only after confirming the new text exists in the tree, and msgfmt --check passes at 1338 messages with no English or French money word left, comments included.
13 kernel classes covering every changed string, renamed key and renamed method pass locally, phpcs is clean over the module, and the JS parses. eslint and stylelint run in CI, which is where the JS and CSS changes get checked.