#angular #angular-material #accessibility
#angular #angular-материал #Специальные возможности
Вопрос:
Возможно ли изменить язык liveAnnouncer? Он читает текст только на английском, но я бы хотел, чтобы он читал финский текст на финском языке. Я импортировал live announcer с помощью: import { LiveAnnouncer } from '@angular/cdk/a11y';
и, похоже, он не принимает никаких языковых параметров.
Ответ №1:
Если вся ваша страница на финском, просто добавьте lang='fi'
атрибут к корневому <html>
элементу. Этот атрибут требуется для WCAG, поэтому рекомендуется включать его, несмотря ни на что.
Если только часть страницы на финском языке, вам нужно будет добавить атрибут к этой части. В этом случае, я полагаю, его следует добавить в сам регион.
В документах CDK ничего не упоминается, но вы можете добавить lang
атрибут к любому элементу. Я предполагаю, что если вы сможете определить / выбрать живой регион (посмотрите в сгенерированном DOM подсказки о том, как вы можете его выбрать), тогда вы сможете добавить этот атрибут.
Это может быть так просто, как
document.querySelector("*[aria-live]").setAttribute("lang", "fi");
Вам нужно будет убедиться, что элемент был добавлен в DOM перед запуском. (Я не совсем в курсе точной последовательности событий в angular, но я думаю, что это возможно).
Конечно, это хак / ересь в соответствии с подходом angular.
Однако, по-видимому, есть некоторые нерешенные проблемы, по крайней мере, в двух ведущих программах чтения с экрана (NVDA и VoiceOver), где атрибут lang не всегда соблюдается в живых регионах. Это не веские причины опускать атрибут, поскольку ошибки однажды будут исправлены. Если вы все сделали правильно, вы унаследуете исправление, когда Apple и NVDA дойдут до него.
Комментарии:
1. Я поместил lang=»fi» в корень страницы. Он изменяется динамически, когда пользователь меняет язык страницы. Это работает в других местах, но не с liveAnnouncer. LiveAnnouncer создает поле для текста внизу страницы, но читает его только на английском языке.
2. Я немного покопался в этой проблеме, и оказалось, что ни один (!) из ведущих программ чтения с экрана на любой платформе (NVDA, JAWS, VoiceOver …) сегодня не учитывает атрибут lang в live regions. Есть и другие места, где они также терпят неудачу, такие как aria-label и aria-roledescription. Так что я не думаю, что LiveAnnouncer является виновником здесь. Лучшее, что вы можете сделать на данный момент, это просто убедиться, что атрибут установлен правильно в вашей разметке, и (в идеале) сообщить о проблеме поставщикам программ чтения с экрана