Issue #3614854: Let a resource name what a booking takes, instead of core calling it a place

Introduces a BookingUnit plugin type: the noun for what a booking takes becomes a plugin owning both of its forms, chosen per resource with resource-type inheritance.

The engine ships only the neutral unit. The place unit ships in yoyaku_placement, beside the entity it names, so the word leaves the engine entirely.

A resource running in a venue is given the place unit with nothing configured, through a new yoyaku.booking_unit_default tagged seam. Four widths, narrowest first: the resource, its type, a module that recognizes the resource, then the neutral unit.

A call site holding a resource asks it for its unit. One that does not stays neutral, which is deliberate and documented: a base field is described once for every resource, and a policy on a resource type is handed lines from resources that need not share a unit.

The plural of a unit is now written in exactly one place, the unit plugin, so no call site and no template writes one.

Includes docs/booking-units.md, the French translation, and kernel coverage of all four widths plus the venue default. Two msgids orphaned by an earlier half-rename are deleted, and one pair whose English already said "unit" while its French still said "place" is realigned.

Two corrections to the issue summary, both verified in the code: BookingResource.php already read "one booking per unit", and placesAskedFor() / placesHeldBy() do not exist. Also left alone deliberately: placesOf() and #offer_places in the calendar name the place grades a tariff prices, which is the placement seam, not the quantity.

Merge request reports

Loading
Loading