Язык страницы
Поставьте атрибут lang элементу <html> с кодом языка, на котором написана страница:
Видимого эффекта на этот абзац атрибут не оказывает, но меняет то, как обрабатывается страница: программа чтения с экрана читает ее английским голосом, браузер учитывает его, решая, предлагать ли перевод, а программа проверки орфографии может выбрать по нему английский словарь. Без него инструментам приходится угадывать, и программа чтения с экрана, настроенная на другой язык, может прочитать английский текст с неправильным произношением.
Коды языков
Значение это языковой тег по стандарту BCP 47. Чаще всего это двухбуквенный код языка, за которым может идти регион или письменность:
| Код | Язык |
|---|---|
en | Английский |
en-US, en-GB | Английский в США, в Великобритании |
es, es-MX | Испанский, испанский в Мексике |
pt-BR | Португальский в Бразилии |
fr, de, it | Французский, немецкий, итальянский |
ar, he | Арабский, иврит (справа налево, см. ниже) |
ja, ko | Японский, корейский |
zh-Hans, zh-Hant | Китайский в упрощенных, традиционных иероглифах |
Коды не зависят от регистра, но принято писать язык строчными, а регион заглавными. Добавляйте регион, только когда вариант языка важен; en это полное и правильное значение.
Что lang меняет визуально
Большинство эффектов lang предназначены для программ, но некоторые видны на экране. Кавычки элемента <q> зависят от языка, как и правила смены регистра:
В каждой строке свой стиль кавычек. В последнем столбце одно и то же text-transform: uppercase дает «ISTANBUL» в английском и «İSTANBUL» в турецком, потому что в турецком у заглавной i сохраняется точка. Замените lang у турецкой строки на en, и точка исчезнет. Автоматическая расстановка переносов (hyphens: auto в CSS) тоже зависит от lang: браузеру нужно знать язык, чтобы понимать, где можно переносить слова.
Фразы на другом языке
lang работает у любого элемента, а не только у <html>. Когда страница на одном языке цитирует фразу на другом, оберните фразу и дайте ей собственный код. CSS может выбирать языки селектором :lang():
Программа чтения с экрана переключается на французское произношение для «bon appétit» и обратно на английское после нее. :lang(fr) также совпадает с fr-CA и любым другим вариантом французского и совпадает с элементами, которые наследуют язык от предка, чего не сделал бы селектор атрибута вроде [lang="fr"].
Языки с письмом справа налево: dir
Арабский, иврит, персидский и урду пишутся справа налево. lang называет язык; атрибут dir задает направление. Целая страница на арабском использует оба атрибута у <html>:
<html lang="ar" dir="rtl">
Для короткой фразы справа налево внутри страницы с письмом слева направо поставьте оба атрибута элементу вокруг нее:
Blockquote выравнивается по правому краю, и его зеленая полоса тоже переходит вправо, потому что border-inline-start следует направлению. Логические свойства вроде margin-inline-start вместо margin-left сохраняют правильную раскладку в обоих направлениях.
lang и hreflang
lang описывает содержимое элемента. hreflang ставится у ссылки и описывает страницу, на которую она ведет. Сайты с переводами перечисляют все версии в <head>, чтобы поисковики отправляли каждого читателя на нужную:
<link rel="alternate" hreflang="en" href="https://example.com/">
<link rel="alternate" hreflang="de" href="https://example.com/de/">
<link rel="alternate" hreflang="x-default" href="https://example.com/">
Каждая переведенная страница все равно задает собственный lang у <html>: lang="de" у немецкой.
Частые ошибки
- Нет
lang. Многие шаблоны его забывают; задавайте его рядом с doctype на каждой странице. lang="en", скопированный в переводы. Немецкая страница, помеченная как английская, читается с английским произношением. Код должен соответствовать содержимому.- Код страны вместо кода языка.
lang="jp"иlang="gr"это не японский и греческий; их кодыjaиel. langдля задания направления. Одинlang="ar"не заставляет текст идти справа налево. Добавьтеdir="rtl".lang="en_US". Разделитель это дефис:en-US.
Часто задаваемые вопросы
Что делает атрибут lang в HTML?
Он объявляет язык содержимого элемента. Программы чтения с экрана используют его, чтобы выбрать правильный голос и произношение, браузеры предлагают по нему перевод, выбирают кавычки и расставляют переносы, а некоторые программы проверки орфографии выбирают по нему словарь.
Что писать в атрибуте lang у html?
Код языка по стандарту BCP 47: en для английского, ru для русского, es для испанского, ja для японского. Регион добавляйте, только когда он важен, как в en-US, en-GB или pt-BR.
Что использовать: lang="en" или lang="en-US"?
Оба варианта корректны. Для большинства английских страниц достаточно en. Используйте en-US или en-GB, когда важен региональный вариант, например для орфографии, дат или произношения некоторых слов.
Влияет ли атрибут lang на SEO?
Google заявлял, что определяет язык по самому тексту и не полагается на атрибут lang. Все равно задавайте его правильно: его используют другие поисковики, переводчики и программы чтения с экрана. Чтобы связать переведенные версии страницы, используйте ссылки hreflang.
Как отметить текст на другом языке?
Добавьте lang элементу вокруг него: <span lang="fr">bon appétit</span>. Программы чтения с экрана переключают произношение для этой фразы, а CSS может оформить ее через :lang(fr).
Чем lang отличается от hreflang?
lang говорит, на каком языке содержимое элемента. hreflang ставится у ссылки и говорит, на каком языке страница, на которую она ведет, и так сайты указывают поисковикам версии страницы на других языках.