Является ли lang= неизвестный атрибут действительным?
Предоставлен HTML-документ на определенном языке (английский).
Я определил атрибут lang для тега:
<html lang="en">
Некоторые тексты на странице написаны на другом языке (например, на французском):
<span lang="fr">
blabla...
</span>
Но если я не могу определить язык, но знаю, что это НЕ английский, могу ли я установить "unknown" в качестве допустимого значения для атрибута lang?
<span lang="unknown">
blabla...
</span>
Я прочитал это в документации по w3c, но я не уверен, что "значение по умолчанию [...] неизвестно" означает, что "неизвестно" является реальным значением...
http://www.w3.org/TR/html4/struct/dirlang.html
lang = language-code [CI] Этот атрибут определяет базовый язык значений атрибута элемента и текстового содержимого. Значение по умолчанию этого атрибута неизвестно.
2 ответа
Формулировка в спецификации HTML 4.01 неясна; Значение unknown
не является допустимым языковым тегом, и спецификация использует слово "unknown" как обычное английское слово. То есть значением по умолчанию является значение, которое указывает, что язык не известен, но это значение не указано явно.
Спецификация частично устарела в этой области, поскольку она ссылается на замененный RFC на языковых тегах. Текущий RFC - это RFC 5646, Метки для идентификации языков, также известный как BCP (Лучшая текущая практика) 47. Он относится, среди прочего, к ISO 639-2 в отношении тегов основного языка, и они содержат код und
для "неопределенного". Так что технически вы могли бы использовать lang=und
, но RFC говорит: "Этот подтег НЕ ДОЛЖЕН использоваться, если не требуется языковой тег и информация о языке недоступна или не может быть определена. Опускать языковой тег (где это разрешено) предпочтительнее ".
И это подход, принятый в HTML5 RC, который говорит оlang
: "Установка атрибута в пустую строку означает, что основной язык неизвестен. [BCP47]"
Таким образом, для текста на неидентифицируемом языке вы можете использовать, например, <span lang="">...</span>
,
Это в принципе полезно, когда вы указали язык на более высоком уровне вложенности элементов. настройка lang=""
Например, это может означать, что пользовательские агенты отключают проверку орфографии и языковое форматирование, хотя это все еще довольно теоретически.
Я бы предпочел не устанавливать его вообще, если не нужно. Обратите внимание, что lang=
Значение будет получено из включающего (родительского) элемента, если оно не установлено.
Если вы как- то вынуждены установить его, установите его по умолчаниюunknown
как вы уже предложили, кажется вполне законным в соответствии со спецификацией.