Problem/Motivation
On a French site a task row reads Validate submission as its heading while the line under it reads En attente de : Valider la soumission. The same step, twice, in two languages.
Both name the same workflow node. They disagree because they come from different places:
- The heading is the work item's stored
labelcolumn, rendered by a plainfieldhandler. It is a string written when the task was created, so it carries whatever language was current then and never follows a translation made later. - The line below is the current-step field, which resolves the node through the workflow configuration and therefore reads the French override.
A French translation of the workflow already existed on the site where this was found, translating every node label, which is why the two disagree so visibly.
The engine itself does this correctly: WorkItemManager::getLabel() reads the live node label first and falls back to the stored column only when the workflow or node is gone. The stored column is a sound fallback; it is wrong as the thing a row is headed by.
Proposed resolution
Head the row with the workflow name instead, and let the step keep its own line. The row then says what the run is and what it is waiting for, each once:
- The card takes its title from a
workflow_labelfield on the instance relationship, theorchestra_workflow_labelhandler this project already ships and three other views already use. It resolves the workflow config entity, so it follows the same translation as everything else on the row. - The stored
labelfield leaves the view. Left in, it would simply move from the heading to a labeled column, since the card renders every field no role claims. - Both displays take the change: they are two displays of one view and share one row template, so they are not allowed to drift apart.
The stored column stays on the entity, where it is the fallback getLabel() needs, and remains the exposed sort it already is.
Remaining tasks
None beyond the change and its test.
AI-Generated: Yes (Claude Code was used to diagnose this against a running site and to draft this issue summary and the change. The two sources were confirmed by reading the stored column, the live node label, and the French workflow override that already existed.)
Issue fork orchestra-3624998
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 #3
mably commentedComment #5
mably commented