Hallo,
ich verstehe dein Problem nicht ganz - du vermischt einiges in deiner Problembeschreibung, was mir nicht dabei hilft, zu verstehen, wo eigentlich die Kernfrage liegt.
Wenn die Frage ist, wie Screenreader deine Inhalte ausgibt, ist die serverseitige PHP-Logik erst einmal sekundär. Entscheidend ist dann, welches HTML und CSS beim Browser ankommt. Wenn das problematisch ist, wäre darüber nachzudenken, welches HTML und CSS geeigneter wäre, dann, wie die serverseitige Logik angepasst werden muss, um solches zu erzeugen.
Das Programm namens A.php füllt ein Array mit den zu übergebenden Werten und ruft eine Routine auf, die sich die Datei A_de.htm holt und die Werte in korrespondierende Platzhalter einträgt und dann A_de.htm ausgibt.
Was soll A_de.htm und wann und wo wird es gezeigt?
Natürlich sind auch die Fehlertexte in der A_de.htm enthalten und werden per CSS ein- oder ausgeblendet.
Wenn ich das recht verstehe, sind *alle* Fehlertexte darin enthalten. Du willst aber immer noch einen (?) zeigen, das machst du anscheinend, indem du alle anderen mit CSS versteckst. Das ist ein problematisches, nicht als barrierefrei zu bezeichnendes System.
... <span class='rot [display_f01]'>Hier fehlt der Name</span> ...
Im Fehlerfall wird [display_f01] = '', sonst 'nodisplay'
Ich vermute mal, dass ein Screenreader alle Fehlermeldungen vorliest, obwohl sie nicht angezeigt werden. Ist das richtig?
Jein - kommt darauf an. Wenn du .nodisplay { display:none; } notierst, werden die meisten Screenreader die Elemente tatsächlich verstecken, also deren Inhalt auch nicht ausgeben. Siehe: http://www.access-matters.com/screen-reader-test-results/
Das heißt aber nicht, das diese Lösung barrierefrei ist. Bei abgeschaltetem, nicht unterstützten oder nicht (vollständig) umgesetztem CSS muss der (relevante) Inhalt des Dokuments zugänglich sein - wenn plötzlich alle Fehlermeldungen sichtbar werden, funktioniert die Kommunikation mit dem Benutzer nicht.
Mathias