Касается ли атрибут lang тега этого дерева узлов? - PullRequest
0 голосов
/ 09 января 2019

У меня есть шаблон CMS, который добавляет lang="en" к элементу html, поскольку большинство страниц и шаблон написаны на английском языке, но пользователи могут создать страницу (на самом деле просто содержимое основной области содержимого) и указать другой язык. Таким образом, шаблон с заголовком / навигацией / нижним колонтитулом по-прежнему на английском языке, но содержимое главной страницы может быть на другом языке.

Если я установлю <div id="main-content" lang="es">…</div>, будет ли этот атрибут lang каскадно распространяться на все подэлементы в этом элементе div или каждому дочернему элементу также нужен этот атрибут lang? Это зависит от программы чтения с экрана?

Альтернативой может быть установка <html lang="es"> и добавление lang="en" для всех не редактируемых пользователем элементов шаблона, таких как header / nav / footer, но это может быть довольно громоздким.

Все, что я нашел в lang, относится к элементам верхнего уровня <span lang="en">only some text and no other tags</span> и не затрагивает / не упоминает целое дерево.

1 Ответ

0 голосов
/ 09 января 2019

Да, это каскадом вниз.

https://www.w3.org/TR/html53/dom.html#the-lang-and-xmllang-attributes

Атрибут lang (без пространства имен) указывает основной язык для содержимого элемента ( мой акцент ) ...

«Содержимое элемента» может быть любым элементом, вложенным в него.

Затем говорится:

Если эти атрибуты опущены в элементе, то язык этого элемента совпадает с языком его родительского элемента, если таковой имеется.

Это, по сути, адрес "всего дерева".

Это удобно, так что вы можете установить язык для всей страницы, а затем, если у вас есть небольшие фрагменты на другом языке, каждый маленький фрагмент может иметь свой собственный атрибут lang, и программа чтения с экрана будет переключать диалекты и акцентируйте и читайте слова по-родному (или как родной, как может звучать компьютерный голос).

Чтобы увидеть пример, перейдите на глобальную страницу UPS, https://www.ups.com/us/en/global.page. Если вы развернете, скажем, в Европе, просмотрите исходный код для каждого варианта, и вы увидите атрибут lang повсюду.

<li lang="nl">
  <a href="http://www.ups.com/be/nl/Home.page" ...>België - Nederlands</a>
</li>
<li lang="fr">
  <a href="http://www.ups.com/be/fr/Home.page" ...>Belgique - Français</a>
</li>
...