Install
Works with Drupal: ^10.2 || ^11Using Composer to manage Drupal site dependencies
Alternative installation files
Release notes
Bug fixes
- #3614332: On multilingual sites where the media source field is translatable, only the default translation's PDF was ever checked. Translated files were skipped by upload-time checks, by
drush pa:check(bulk and single-item), and by thepdfa11y_checkqueue worker, and showed "Accessibility: Not checked" on the translated media page while the run summary counted the item as checked. Every code path now resolves the distinct files referenced by any translation of a media item and checks each one. A file shared by several translations is analyzed once.- Upload and save hooks check the files of all translations on insert. On update, each translation is compared with the same translation on the original entity, so saving a French translation re-checks only the French file.
drush pa:checkreports per file. The run summary counts files ("Checked N files"), and eachsummaryline shows the file ID and the language codes that reference it, for examplemid 42 [document] fid 108 (fr) – PASS (Rapport). Thetableformat prints one table per file.--missing-onlynow converges for translated items. Previously a media item whose translation's file had never been checked was reselected on every pass and its default-language file re-analyzed each time.- Report page (/media/{id}/accessibility) shows one results block per file, headed with the file name and languages when a media item has more than one. "Run accessibility check" re-checks every translation's file.
- Admin Views report: the Media report link field names and links to the translation that references the row's file, the Referencing entity field links to the matching translation, and the Pass count / Fail count fields sum across all of a media item's files instead of reporting whichever file loaded last.
Upgrade notes
No schema or configuration changes.
CSV and JSON output of drush pa:check gain a langcode column. It is appended as the last column (comma-separated when a file is shared by several translations), so scripts that read CSV columns by position keep working; scripts that validate the header row or column count need updating.
Multilingual sites should run a backfill. Translated files that were never checked have no stored results, so drush pa:check --bundle=BUNDLE --missing-only (or --missing-only --queue followed by drush queue:run pdfa11y_check) will pick them up without re-checking files that already have results. Expect more work than the media count suggests, because the run is now counted per file. Sites with a single language are unaffected.
Custom Views that aggregate over the Media relationship on the results table join once per translation and will double-count translated items. Prefer the per-file fields (Overall status, Failing issues list) or group by file ID. The shipped report is unaffected.
Known issues
The advisory next-major (Drupal 13.x-dev) CI jobs report new core deprecations unrelated to this release, including drupal_static_reset(), annotation-based Views plugin discovery, and implicit transaction commits. They are tracked in #3614333, which also proposes raising the minimum core version to 10.3. Drupal 10.3+ and 11 are unaffected.