Разное

Lang html: Какую локаль правильно указывать в атрибуте lang тега html? — Хабр Q&A

08.08.2023

HTML/Глобальный атрибут xml:lang

Синтаксис

(X)HTML

<[элемент] xml:lang="[значение]" lang="[значение]"> ... </[элемент]>

Описание

Глобальный атрибут / параметр xml:lang (от англ. «language» ‒ «язык») указывает в XHTML документах базовый язык содержимого элемента и текстовых значений атрибутов элемента.

Примечание

Для облегчения перехода от XHTML допускается использование данного атрибута в HTML5 только при условии, что он будет использован совместно с глобальным атрибутом «lang» и будет иметь такое же значение, как и атрибут «lang» (без учёта регистра символов). При этом значение атрибута «xml:lang» будет иметь приоритет.


Поддержка браузерами

Chrome

Поддерж.

Firefox

Поддерж.

Opera

Поддерж.

Maxthon

Поддерж.

IExplorer

Поддерж.

Safari

Поддерж.

iOS

Поддерж.

Android

Поддерж.


Спецификация

Верс.Раздел
HTML
2.0
3.2
4.01
5.03.2.5.3 The lang and xml:lang attributesПеревод
5.13.2.5.3. The lang and xml:lang attributes
XHTML
1.0C.7. The lang and xml:lang Attributes
DTD: Transitional Strict Frameset
Перевод
1. 1Extensible HyperText Markup Language

Значения

В качестве значения указывается код (человеческого) языка.


Пример использования

Листинг кода

<!DOCTYPE html>

<html>
<head>
<meta charset=»utf-8″>
<title>Глобальный параметр xml:lang</title>
</head>
<body>
<h2>Пример с «xml:lang»</h2>
<p>Он сказал мне: <span lang=»en» xml:lang=»en»>»Do you speak English?»</span></p>
<p>На что я ему ответил: <span lang=»en» xml:lang=»en»>»Yes, I speak English!»</span></p>
</body>
</html>

Глобальный параметр xml:lang

lang | Yocton

Глобальный атрибут lang (от англ. «language» ‒ «язык») позволяет задать язык элемента и для нередактируемых элементов, и для редактируемых элементов, которые заполняются пользователем.

Данный атрибут в элементе <html> устанавливает язык для всего текста на странице. Авторам рекомендуется указывать атрибут lang в элементе html, указав приоритетный язык документа, что помогает инструментам синтеза речи и инструментам перевода. В качестве задаваемого значения должно выступать значение допустимое документом BCP 47.

Синтаксис

<element lang="значение">

Например,

<div lang="ru">Этот тект на русском языке</div>

Значения атрибута

Если значением атрибута является пустая строка lang = "", то язык устанавливается на неизвестный, а если значение атрибута недопустимо в соответствии с BCP47, он считается недействительным. Полный синтаксис BCP47 достаточно сложен, чтобы указывать специфические языковые диалекты, но в большинстве случаях это не требуется. Так предусмотрено указание через дефис (-) подверсии языка (версия языка: en-us, zh-gan; набор символов для написания: sr-Latn ‒ сербский-латиница).

Имеется три наиболее распространенных вида субтега:

Языковой субтег Обязательный. Все языковые тэги должны начинаться с субтэга основного языка. 2-или-3-символьный код, который определяет базовый язык, обычно записываемый строчными буквами. Например, код языка для английского — en , а код для Бадеши — bdz .

Субтеги письменности Необязательный. Субтеги письменности должны быть использованы в качестве части языкового тэга только тогда, когда необходимо передать какую-то отличительную информацию через тэг. Обычно это случаи, когда один язык использует различные типы письма или когда контент был записан с помощью нетипичной для данного языка письменности (например, русский текст, написанный латиницей, будет иметь такой тег: ru-Latn). Субтеги письменности всегда состоят из четырёх букв, и должны идти после любых субтегов языка или диалекта и до всех других субтегов. Этот субтег определяет систему записи, используемую для языка, и всегда имеет длину 4 символа, причем первая буква заглавная.

Например, французский, написаный шрифтом Брайле — fr-Brail а ja-Kana — японский, написанный с алфавитом катаканы. Если язык написан весьма типичным способом, например, английский в латинском алфавите, нет необходимости использовать этот субтег.

Субтеги региона Необязательный. Этот субтег определяет диалект базового языка из определенного места и представляет собой либо 2 прописные буквы , соответствующие коду страны, либо 3 числа, соответствующие области, не относящейся к стране. Субтэги региона связывают выбранный вами субтэг языка с определённым регионом мира. Субтэги региона должны идти после всех субтэгов языка и письменности. Как и субтэги письменности, субтэги региона следует использовать только, если они вносят информацию, необходимую, чобы отличить этот языковой тэг от другого; если нет — отбрасывайте его. Например,

en-GB может быть полезным отличием при проверке правописания, но субтэг региона в ja-JP вряд ли полезен, если только вы намеренно не подчёркиваете, что это не японский, используемый в других частях мира.
Есть 2 типа субтэгов региона: двухбуквенные коды и коды, состоящие из трёх цифр. Последние, как правило, определяют многонациональные регионы, а не конкретные страны. Например es-ES означает испанский, на котором говорят в Испании, тогда, как es-419 означает испанский, распространённый в Латинской Америке Субтег письменности предшествует региону, если присутствуют оба, например, ru-Cyrl-BY является русским, написанным на кириллице, как говорят в Беларуси.

Даже если атрибут lang установлен, он нен учитывется, если установлен атрибут xml:lang, т.к. он имеет больший приоритет.

Для CSS псевдо-класса :lang

два неправильных значения различаются, если их имена различны. Так, значение :lang(es) соответствует и lang="es-ES", и lang="es-419", а вот значение :lang(xyzzy) не будет соответствовать lang="xyzzy-Zorp!".

Коды распространенных языков

ЯзыкКод
Абхазскийab
Азербайджанскийaz
Аймарскийay
Албанскийsq
Английскийen
Американский английскийen-us
Арабскийar
Армянскийhy
Ассамскийas
Африкаансaf
Башкирскийba
Белорусскийbe
Бенгальскийbn
Болгарскийbg
Бретонскийbr
Валлийскийcy
Венгерскийhu
Вьетнамскийvi
Галисийскийgl
Голландскийnl
Греческийel
Грузинскийka
Гуараниgn
Датскийda
Зулуzu
Ивритiw
Идишji
Индонезийский
in
Интерлингва (искусственный язык)ia
Ирландскийga
Исландскийis
Испанскийes
Итальянскийit
Казахскийkk
Камбоджийскийkm
Каталанскийca
Кашмирскийks
Кечуаqu
Киргизскийky
Китайскийzh
Корейскийko
Корсиканскийco
Курдскийku
Лаосскийlo
Латвийский, латышскийlv
Латыньla
Литовскийlt
Малагасийскийmg
Малайскийms
Мальтийскийmt
Маориmi
Македонскийmk
Молдавскийmo
Монгольскийmn
Науруna
Немецкийde
Непальскийne
Норвежскийno
Пенджабиpa
Персидскийfa
Польскийpl
Португальскийpt
Пуштунскийps
Ретороманскийrm
Румынскийro
Русскийru
Самоанскийsm
Санскритsa
Сербскийsr
Словацкийsk
Словенскийsl
Сомалиso
Суахилиsw
Суданскийsu
Тагальскийtl
Таджикскийtg
Тайскийth
Тамильскийta
Татарскийtt
Тибетскийbo
Тонгаto
Турецкийtr
Туркменскийtk
Узбекскийuz
Украинскийuk
Урдуur
Фиджиfj
Финскийfi
Французскийfr
Фризскийfy
Хаусаha
Хиндиhi
Хорватскийhr
Чешскийcs
Шведскийsv
Эсперанто (искусственный язык)eo
Эстонскийet
Яванскийjw
Японскийja

Пример

<p lang="ru" >Евклид (др. -греч. <span lang="el">Εὐκλείδης </span>) — древнегреческий математик,
    автор первого из дошедших до нас теоретических трактатов по математике.</p>

Совместимость браузеров

Настольные браузеры

Базовая поддержкадададададада

Мобильные браузеры

Базовая поддержкададададададада

См. также:

  • WHATWG HTML Living Standard
  • HTML5

lang — HTML: язык гипертекстовой разметки

Глобальный атрибут lang помогает определить язык элемента: язык, на котором написаны нередактируемые элементы, или язык, на котором редактируемые элементы должны быть написаны пользователем. Атрибут содержит один «языковой тег» в формате, определенном в Теги для идентификации языков (BCP47) .

Значение по умолчанию для lang unknown , поэтому рекомендуется всегда указывать для этого атрибута соответствующее значение.

Исходный код этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, клонируйте https://github.com/mdn/interactive-examples и отправьте нам запрос на включение.

Если значением атрибута является пустая строка ( lang="" ), язык устанавливается равным unknown ; если языковой тег недействителен в соответствии с BCP47, он устанавливается на недействительным .

Синтаксис языкового тега

Полный синтаксис BCP47 является достаточно подробным, чтобы помечать очень специфические языковые диалекты, но в большинстве случаев использование намного проще.

Языковой тег состоит из разделенных дефисом языковых вложенных тегов , где каждый вложенный тег указывает на определенное свойство языка. 3 наиболее распространенных вложенных тега:

Языковой вложенный тег
Обязательно. Двух- или трехсимвольный код, определяющий базовый язык, обычно пишется строчными буквами. Например, код языка для английского — 9.0004 en , а код Бадеши — bdz .
Вложенный тег сценария
Дополнительно. Этот вложенный тег определяет систему письма, используемую для языка, и всегда имеет длину 4 символа, причем первая буква заглавная. Например, французский шрифт Брайля — это fr-Brai , а ja-Kana — это японский алфавит катакана. Если язык написан очень типичным способом, например, английский латинским алфавитом, нет необходимости использовать этот подтег.
Вложенный тег региона
Дополнительно. Этот вложенный тег определяет диалект базового языка из определенного места и представляет собой либо 2 буквы в ALLCAPS, соответствующие коду страны, либо 3 цифры, соответствующие области за пределами страны. Например, es-ES соответствует испанскому языку, на котором говорят в Испании, а es-013 — испанскому языку, на котором говорят в Центральной Америке. «Международный испанский» будет просто es .

Вложенный тег script предшествует вложенному тегу региона, если оба присутствуют — ru-Cyrl-BY — это русский язык, написанный кириллицей, как говорят в Беларуси.

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

Даже если установлен атрибут lang , он может не учитываться, так как атрибут xml:lang имеет приоритет.

Для псевдокласса CSS :lang два недопустимых имени языка различны, если их имена различны. Итак, в то время как :lang(es) соответствует обоим lang="es-ES" и lang="es-419" , :lang(xyzzy) будет соответствовать , а не , lang="xyzzy-Zorp!" .

Технические характеристики

Спецификация Статус Комментарий
HTML Living Standard
Определение «язык» в этой спецификации.
Уровень жизни Нет изменений по сравнению с последним моментальным снимком, HTML 5.1
HTML 5.1
Определение языка в этой спецификации.
Рекомендация Снимок HTML Living Standard, без изменений по сравнению с HTML5
HTML5
Определение языка в этой спецификации.
Рекомендация Моментальный снимок HTML Living Standard, определено поведение с xml:lang и алгоритм определения языка. Это также настоящий глобальный атрибут.
Спецификация HTML 4.01
Определение языка в этой спецификации.
Рекомендация Поддерживается для всех элементов, кроме , , ,
, , , 900 04