Install
Works with Drupal: ^11.3 || ^12Using Composer to manage Drupal site dependencies
Alternative installation files
Release notes
No schema change, no update hook, and an alpha7 site upgrades in place. No table, column, service or route changes, so deploy the code, rebuild caches, and re-import the French catalogs of every Kessai module (drush locale:import fr <module>/translations/fr.po --type=not-customized --override=not-customized, one per catalog): most of this release is French wording, and a site keeps what it imported until it imports again. One shipped view changed, and shipped configuration never reaches an installed site: the claims listing is now called Payment claims in its label, page title and table caption. Change the three in the Views UI or reinstall kessai_views to pick it up; nothing breaks if you do neither, and the listing reads Prélèvements in French either way.
One consumer site that does not answer no longer holds cron for minutes
#3621976, for sites running kessai_server. Every event a payment announces is posted to the consumer that took it, in the same request, with an eight second timeout, and cron's expiry sweep announces one per payment it expires, up to 200 a run. When a consumer site was down behind a firewall that drops the connection, each of those posts waited out the whole timeout, so a batch of one consumer's payments could hold cron for more than 25 minutes, past the 15 minutes core locks cron for, at which point a second cron run can start beside the first.
A consumer that a notice timed out on before any of it was sent is now sent nothing else for the rest of that request or cron run, and the line logged for that first notice says so. A consumer that refused the connection, answered with an error, or took the notice and was slow to answer is still told about every payment: a refusal costs nothing to hear again, and the other two are up. Delivery stays best effort, as before: a consumer that missed a notice can still read the payment.
"Claim" no longer shares its translation with other modules
#3621975. Locale keeps one string table for a whole site, so a word two modules translate differently is one row, and whichever was imported last wins it. The claim entity's labels were the bare word Claim, and on a site running a workflow engine beside Kessai, that engine's "claim this task" link read Prélèvement, a direct debit offered as a task action. Every form of the entity label, and the Claims menu link, now carries the Payment translation context, so Kessai's claims keep their French without lending it to anybody else.
French: one word for each thing
- A notice, the signed message one Kessai posts to another when a payment moves, is now a notification everywhere. The client said
avisin five places andnotificationin two, and its settings page was titledLimites des avis; it is nowLimites des notifications, as the status report already called it. EnabledandDisabledon the payment accounts listing readActivéeandDésactivéewhile two other modules translatedEnabledasActivé, so the word on every page depended on which module was installed last. All three now sayActivéandDésactivé.- The label of the consumer origin constraint is declared with the
Validationcontext and its French entry named none, so it was never looked up. The entry now names it.
For developers
ConsumerOriginConstraint::$notAnOrigin and $notEncrypted are now $notAnOriginMessage and $notEncryptedMessage (#3621977). Code that sets or reads them by name has to follow. The extractor localize.drupal.org runs reads a constraint's messages only from properties whose name ends in message, which is also how core names every extra message a constraint carries, so the two refusals are now offered to translators there.
Also
A translations job checks every string against the catalog of the project that ships it with potx, context included, and replaces fifteen test cases that read the project's own files for their words (#3621977). The metrics page is refreshed, and the cspell project words lose four entries the dictionaries already know (#3621979).