Вы делаете это правильно, но если у вас нет разных языков, установленных с вашей программой чтения с экрана, вы можете не услышать разницу.Вы не упомянули, какую программу чтения с экрана вы используете.
С VoiceOver, по крайней мере на iOS, я думаю, вы получаете большинство языков по умолчанию.Я не уверен насчет VoiceOver на Mac.С NVDA и JAWS я уверен, что вам нужно установить языковые пакеты.
Следующие все автоматически переключают языки.Он работал с VoiceOver на iOS.
<label for="eninput">this is in english</label>
<textarea id="eninput"></textarea><br>
<label for="deinput">das ist in deutsch</label>
<textarea id="deinput" lang="de"></textarea><br>
<label for="frinput">c'est en français</label>
<textarea id="frinput" lang="fr"></textarea><br>
<label for="ruinput">это по-французски</label>
<textarea id="ruinput" lang="ru"></textarea><br>
Обратите внимание, что атрибут lang
находится на <textarea>
, а не на <label>
, потому что текстовая область получает фокус.Однако в VoiceOver есть некоторые нюансы.Если я перемещаюсь по полям обычным жестом, проведенным пальцем вправо, фокус переходит от поля к полю, и я слышу переключение языка.Но если я коснусь ярлыка напрямую и наведу на него фокус, то сам ярлык читается на английском языке, поскольку <label>
не имеет атрибута lang
.
В вашем случае у вас есть <label>
как контейнер, так что если язык находится в контейнере, то все внутри будет иметь язык тоже.Таким образом, также работает следующее:
<label for="frinput" lang="fr">c'est en français
<textarea id="frinput"></textarea><br>
</label>
Когда фокус перемещается в поле, он читается по-французски.Если я намеренно нажму на сам ярлык, он также будет читаться по-французски.
Если бы я хотел, чтобы мой первый пример кода работал, с <label>
и <textarea>
в качестве братьев и сестер, то я мог бы иметь *Контейнер 1027 * с установленным языком.
<div lang="fr">
<label for="frinput">c'est en français</label>
<textarea id="frinput"></textarea><br>
</div>
(Обратите внимание, что во всех моих примерах я всегда указываю атрибут for
в <label>
- , явно ассоциирует метку ссоответствующий <textarea>
, даже если текстовая область вложена в метку. Существуют некоторые комбинации программы чтения с экрана и браузера, где даже если текстовая область вложена в метку ( неявная метка), метканеправильно связано с текстовой областью. Я всегда осторожно говорю и задаю for
.)