Html element lang attribute

Объявление языка в HTML

Всегда используйте языковой атрибут тэга html для объявления языка по умолчанию на странице. Если страница содержит контент на другом языке, добавляйте языковой атрибут к элементам, окружающим этот контент.

Используйте lang атрибут для HTML страниц и xml:lang атрибут для страниц XML. Для XHTML 1.x и документов HTML5 Polyglot используйте оба атрибута вместе.

Используйте языковые тэги из IANA Language Subtag Registry . Вы можете найти тэги также с помощью Language Subtag Lookup.

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

Детали

Основы

Всегда используйте языковой атрибут элемента html . Он наследуется всеми другими элементами, и поэтому для текста в head элементе документа будет задан язык по умолчанию.

Обратите внимание, что предпочтительнее использовать html элемент, чем body , так как body элемент не включает в себя текст из head элемента.

Если у вас есть какой-либо контент на странице, язык которого отличается от заданного в языковом атрибуте элемента html , добавляйте языковые атрибуты к элементам окружающим такой контент. Это позволит вам отображать или обрабатывать его различным образом.

С некоторыми частями кода у вас могут возникнуть проблемы. Если у вас есть мультиязычный текст в элементе title , вы не сможете разметить текст, содержащий разные языки, потому что title атрибут поддерживает только символы, а не разметку. То же самое относится к нескольким языкам в значениях атрибутов. На текущий момент эффективное решение этой проблемы отсутствует.

Выбор корректного атрибута

Если ваш документ HTML (то есть обрабатывается, как text/html ), используйте lang атрибут для установки языка документа или блока текста. Например, следующий код установит французский языком по умолчанию:

Screen snap showing a tooltip containing the word

Если ваш код выглядит, как указано ниже, то атрибут языка указывает, что испанский — не только язык контента, но и title текста. Это, очевидно, некорректно.

Вместо этого, перенесите языковой атрибут в другой элемент, как показано в данном примере, в котором span элемент наследует en язык по умолчанию, установленный у html элемента.

Что если нет подходящего элемента для того, чтобы прицепить атрибут языка?

Если вы хотите указать язык контента, но вокруг него нет никакой разметки, используйте такой элемент, как span или div . Вот пример:

You’d say that in Chinese as 中国科学院文献情报中心.

Выбор значений языка

Чтобы быть уверенными, что юзер агенты распознают указанный вами язык, вам следует придерживаться стандартизированному подходу при указании значений атрибутов языка. Вам также необходимо подумать о том, как стандартизированно ссылаться на различные диалекты одного языка, например, такие, как американский и британский английский, которые существенно отличаются своим написанием и произношением.

Правила создания языковых атрибутов описываются IETF спецификацией, которая называется BCP 47. Помимо описания использования простых тэгов языка таких, как en (английский) или fr (французский), BCP 47 описывает, как сочетать языковые тэги, что позволяет вам указывать региональные диалекты, скрипты и другие варианты, относящиеся к данному языку.

Читайте также:  Search function php form

BCP 47 включает в себя, но выходит за рамки ISO списков кодов языков и стран. Чтобы найти подходящий код, вам нужно обратиться к IANA Language Subtag Registry .

Неофициальная утилита Language Subtag Lookup предоставляет удобный фронтенд инструментарий для IANA registry.

Для краткого, но достаточно тщательного ознакомления с синтаксисом тэгов BCP 47, читайте Языковые тэги в HTML и XML . Если необходима помощь в выборе корректного языкового тэга из множества возможных тэгов и комбинаций, смотрите Выбор тэга языка .

Дополнительная информация

Указание метаданных о языке аудитории

Если вы хотите создать метаданные, описывающие скорее язык целевой аудитории страницы, чем язык определенной части текста, реализуйте это с помощью отправки сервером информации в HTTP заголовке Content-Language . Если ваша целевая аудитория говорит более, чем на одном языке, HTTP заголовок позволяет вам использовать список языков, разделённых запятыми.

Это пример HTTP заголовка, объявляющего ресурс смесью английского, хинди панджаби языков:

Обратите внимание, что этот подход не сработает, если страница загружается с жесткого диска, CD или другого источника, не являющегося сервером. В настоящее время нет широко распространенного способа использования таких метаданных внутри страницы.

В прошлом многие люди использовали meta элемент с атрибутом http-equiv со значением Content-Language . Из-за давних путаниц и непоследовательных реализаций этого элемента HTML5 спецификация сделала его несоответствующим стандартам HTML, так что вам больше не следует использовать этот элемент.

Для обратной совместимости, HTML5 описывает алгоритм, с помощью которого язык контента может быть определён из HTTP или meta Content-Language информации при определённых условиях. Как бы то ни было, это только запасной механизм для случаев, когда языковой атрибут отсутствует у html тэга. Если вы используете атрибут языка для html , что следует делать всегда, подобные запасные пути бесполезны.

Для подробной информации о Content-Language в HTTP и meta элементах читайте HTTP и meta для информации о языке .

Различные вещи, которые не относятся к делу

Вероятно, стоит упомянуть ещё несколько моментов, которые не имеют отношения к этой дискуссии.

Первое, невозможно объявить язык с помощью CSS.

Второе, DOCTYPE , с которого должен начинаться любой HTML может содержать то, что выглядит для некоторых людей, как объявления языка. DOCTYPE в примере ниже содержит текст EN, что означает ‘English’. Это, тем не менее, указывает на язык schema (схемы), связанной с данным документом – это никоим образом не указывает на непосредственно язык самого документа.

Третье, иногда люди предполагают, что информация о естественном языке может быть получена из кодировки символов. Тем не менее, кодировка символов не позволяет однозначно идентифицировать естественный язык. Должно быть взаимно однозначное сопоставление между кодировкой и языком, чтобы это сработало, а его нет. Одна кодировка может быть использована многими языками, например Latin 1 (ISO-8859-1) используется и французским, и английским, а ещё многими другими языками. В дополнение, кодировка может отличаться в рамках одного языка, например арабский может использовать ‘Windows-1256’ или ‘ISO-8859-6’ или ‘UTF-8’.

Читайте также:  Python x plane 11 plugin

Все эти примеры кодировок спорны, так как весь контент сегодня должен быть создан в UTF-8, который охватывает все, кроме самых редких, языки.

В некоторых текстах, таких, как арабский и иврит, отображаемый текст читается в основном справа налево, хотя числа и иностранные термины отображаются слева направо. Необходима разметка, такая, как dir атрибут, для объявления right-to-left содержания. И в некоторых случаях разметка необходима для правильного отображения двунаправленного текста, но это невозможно сделать с помощью разметки языка.

То же самое относится к направлению текста. Как и в случае с кодировками, не всегда существует соответствие между языком и текстом, в том числе его направлением. Например, азербайджанский может быть записан справа налево (арабская письменность) и слева направо (латиница и кириллица), соответственно код языка az может относится к обоим вариантам. Дополнительно, разметка направления текста применяет к тексту целый ряд различных значений, в то время, как язык является простым переключателем, который не соответствует поставленным задачам.

Дополнительные материалы

  • Приступаете к работе? Язык в Сети
  • руководство, Работа с языком в HTML
  • Ссылки по теме, Разработка HTML и CSS
    • Язык
    • Использование атрибутов для объявления языка
    • Выбор значений языка
    • Объявление изменений языка в документе

    Источник

    lang

    The lang global attribute helps define the language of an element: the language that non-editable elements are written in, or the language that the editable elements should be written in by the user. The attribute contains a single «language tag» in the format defined in RFC 5646: Tags for Identifying Languages (also known as BCP 47).

    Note: The default value of lang is unknown , therefore it is recommended to always specify this attribute with the appropriate value.

    Try it

    If the attribute value is the empty string ( lang=»» ), the language is set to unknown; if the language tag is not valid according to BCP47, it is set to invalid.

    Even if the lang attribute is set, it may not be taken into account, as the xml:lang attribute has priority.

    For the CSS pseudo-class :lang , two invalid language names are different if their names are different. So while :lang(es) matches both lang=»es-ES» and lang=»es-419″ , :lang(xyzzy) would not match lang=»xyzzy-Zorp!» .

    Language tag syntax

    The full BCP47 syntax is in-depth enough to mark extremely specific language dialects, but most usage is much simpler.

    A language tag is made of hyphen-separated language subtags, where each subtag indicates a certain property of the language. The 3 most common subtags are:

    Required. A 2-or-3-character code that defines the basic language, typically written in all lowercase. For example, the language code for English is en , and the code for Badeshi is bdz .

    Optional. This subtag defines the writing system used for the language, and is always 4 characters long, with the first letter capitalized. For example, French-in-Braille is fr-Brai and ja-Kana is Japanese written with the Katakana alphabet. If the language is written in a highly typical way, like English in the Latin alphabet, there is no need to use this subtag.

    Optional. This subtag defines a dialect of the base language from a particular location, and is either 2 letters in ALLCAPS matching a country code, or 3 numbers matching a non-country area. For example, es-ES is for Spanish as spoken in Spain, and es-013 is Spanish as spoken in Central America. «International Spanish» would just be es .

    The script subtag precedes the region subtag if both are present — ru-Cyrl-BY is Russian, written in the Cyrillic alphabet, as spoken in Belarus.

    To find the correct subtag codes for a language, try the Language Subtag Lookup.

    Accessibility

    WCAG Success Criterion 3.1.1 requires that a page language is specified in a way which may be ‘programmatically determined’ (i.e. via the lang attribute).

    WCAG Success Criterion 3.1.2 requires that pages with parts in different languages have the languages of those parts specified too. Again, the lang attribute is the correct mechanism for this.

    The purpose of these requirements is primarily to allow assistive technologies such as screen readers to invoke the correct pronunciation.

    For example, the language menu on this site (MDN) includes a lang attribute for each entry:

    div class="dropdown-container language-menu"> button id="header-language-menu" type="button" class="dropdown-menu-label" aria-haspopup="true" aria-owns="language-menu" aria-label="Current language is English. Choose your preferred language."> English span class="dropdown-arrow-down" aria-hidden="true">span> button> ul id="language-menu" class="dropdown-menu-items right show" aria-expanded="true" role="menu"> li lang="ca" role="menuitem"> a href="/ca/docs/Web/HTML/Global_attributes/lang" title="Catalan"> bdi>Catalàbdi> a> li> li lang="de" role="menuitem"> a href="/de/docs/Web/HTML/Globale_Attribute/lang" title="German"> bdi>Deutschbdi> a> li> li lang="es" role="menuitem"> a href="/es/docs/Web/HTML/Atributos_Globales/lang" title="Spanish"> bdi>Españolbdi> a> li> li lang="fr" role="menuitem"> a href="/fr/docs/Web/HTML/Attributs_universels/lang" title="French"> bdi>Françaisbdi> a> li> li lang="ja" role="menuitem"> a href="/ja/docs/Web/HTML/Global_attributes/lang" title="Japanese"> bdi>日本語bdi> a> li> li lang="ko" role="menuitem"> a href="/ko/docs/Web/HTML/Global_attributes/lang" title="Korean"> bdi>한국어bdi> a> li> li lang="pt-BR" role="menuitem"> a href="/pt-BR/docs/Web/HTML/Global_attributes/lang" title="Portuguese (Brazilian)"> bdi>Português (do Brasil)bdi> a> li> li lang="ru" role="menuitem"> a href="/ru/docs/Web/HTML/Global_attributes/lang" title="Russian"> bdi>Русскийbdi> a> li> li lang="uk" role="menuitem"> a href="/uk/docs/Web/HTML/%D0%97%D0%B0%D0%B3%D0%B0%D0%BB%D1%8C%D0%BD%D1%96_%D0%B0%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8/lang" title="Ukrainian"> bdi>Українськаbdi> a> li> li lang="zh-Hans" role="menuitem"> a href="/zh-CN/docs/Web/HTML/Global_attributes/lang" title="Chinese (Simplified)"> bdi>中文 (简体)bdi> a> li> li> a href="/en-US/docs/Web/HTML/Global_attributes/lang$locales" rel="nofollow" id="translations-add"> Add a translation a> li> ul> div> 

    Specifications

    Browser compatibility

    BCD tables only load in the browser

    See also

    Источник

Оцените статью