Содержание
Объявление языка в HTML
Объявление языка в HTML
Вопрос
Как установить язык содержимого моей 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
атрибут для установки языка документа
или блока текста. Например, следующий код установит французский языком по умолчанию:
<html lang="fr">
Когда XHTML 1.x или страницы Polyglot обрабатываются, как text/html
, используйте оба атрибута lang
и xml:lang
вместе каждый раз, когда вы хотите объявить язык. Атрибут xml:lang
— это стандартный способ объявления языковой информации в XML. Убедитесь, что значения обоих атрибутов идентичны.
<html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
Атрибут xml:lang
не особо полезен для обработки HTML файлов, но он будет перекрывать значение lang
атрибута каждый раз, когда вы обрабатываете документ, как XML. Атрибут lang
разрешен синтаксисом XHTML и может быть распознан браузерами.
Однако, когда используются другие синтаксические анализаторы XML (например, функция lang()
в XSLT), вы не можете полагаться на то, что атрибут lang
будет распознан.
Если вы обрабатываете ваш документ, как XML (то есть используете MIME type application/xhtml+xml
), то
атрибут lang
не нужен, будет достаточно атрибута xml:lang
.
<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
Что, если содержимое элемента и значения его атрибутов на разных языках?
Иногда язык текста в атрибутах и язык непосредственно контента элемента различаются. Например, в правом верхнем углу этой статьи расположен список ссылок на другие переводы данной страницы.
Текст ссылки отображает язык целевой страницы, но связанный title
атрибут содержит подсказку на языке текущей страницы:
Если ваш код выглядит, как указано ниже, то атрибут языка указывает, что испанский — не только язык контента, но и title
текста.
Это, очевидно, некорректно.
Некорректный код. Не копируйте!
<a lang="es" title="Spanish"
href="qa-html-language-declarations.es">Español</a>
Вместо этого, перенесите языковой атрибут в другой элемент, как показано в данном примере, в котором span
элемент наследует en
язык по умолчанию, установленный у html
элемента.
<span title="Spanish"><a lang="es"
href="qa-html-language-declarations.es">Español</a></span>
Что если нет подходящего элемента для того, чтобы прицепить атрибут языка?
Если вы хотите указать язык контента, но вокруг него нет никакой разметки, используйте такой элемент, как span
или div
.
Вот пример:
<p>You'd say that in Chinese as <span lang="zh-Hans">中国科学院文献情报中心</span>. </p>
Выбор значений языка
Чтобы быть уверенными, что юзер агенты распознают указанный вами язык, вам следует придерживаться стандартизированному подходу при указании значений атрибутов языка.
Вам также необходимо подумать о том, как стандартизированно ссылаться на различные диалекты одного языка, например, такие, как американский и британский английский, которые существенно отличаются своим написанием и произношением.
Правила создания языковых атрибутов описываются IETF спецификацией, которая называется BCP 47. Помимо описания использования простых тэгов языка таких, как en
(английский) или fr
(французский), BCP 47 описывает,
как сочетать языковые тэги, что позволяет вам указывать региональные диалекты, скрипты и другие варианты, относящиеся к данному языку.
BCP 47 включает в себя, но выходит за рамки ISO списков кодов языков и стран. Чтобы найти подходящий код, вам нужно обратиться к IANA Language Subtag Registry.
Неофициальная утилита Language Subtag Lookup предоставляет удобный фронтенд инструментарий для IANA registry.
Для краткого, но достаточно тщательного ознакомления с синтаксисом тэгов BCP 47, читайте Языковые тэги в HTML и XML. Если необходима помощь в выборе корректного языкового тэга из множества возможных тэгов и комбинаций, смотрите Выбор тэга языка.
Дополнительная информация
Указание метаданных о языке аудитории
Если вы хотите создать метаданные, описывающие скорее язык целевой аудитории страницы, чем язык определенной части текста, реализуйте это с помощью отправки сервером
информации в HTTP заголовке Content-Language
. Если ваша целевая аудитория говорит более, чем на одном языке, HTTP заголовок позволяет вам использовать список языков, разделённых запятыми.
Это пример HTTP заголовка, объявляющего ресурс смесью английского, хинди панджаби языков:
Content-Language: en, hi, pa
Обратите внимание, что этот подход не сработает, если страница загружается с жесткого диска, 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 (схемы), связанной с данным документом – это никоим образом не указывает на непосредственно язык самого документа.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Третье, иногда люди предполагают, что информация о естественном языке может быть получена из кодировки символов. Тем не менее, кодировка символов не позволяет однозначно идентифицировать естественный язык. Должно быть взаимно однозначное сопоставление между кодировкой и языком, чтобы это сработало, а его нет. Одна кодировка может быть использована многими языками, например Latin 1 (ISO-8859-1) используется и французским, и английским, а ещё многими другими языками. В дополнение, кодировка может отличаться в рамках одного языка, например арабский может использовать ‘Windows-1256’ или ‘ISO-8859-6’ или ‘UTF-8’.
Все эти примеры кодировок спорны, так как весь контент сегодня должен быть создан в UTF-8, который охватывает все, кроме самых редких, языки.
В некоторых текстах, таких, как арабский и иврит, отображаемый текст читается в основном справа налево, хотя числа и иностранные термины отображаются слева направо. Необходима разметка, такая, как dir
атрибут, для объявления right-to-left содержания. И в некоторых случаях разметка необходима для правильного отображения двунаправленного текста, но это невозможно сделать с помощью разметки языка.
То же самое относится к направлению текста. Как и в случае с кодировками, не всегда существует соответствие между языком и текстом, в том числе его направлением. Например, азербайджанский может быть записан справа налево (арабская письменность) и слева направо (латиница и кириллица), соответственно код языка az
может относится к обоим вариантам. Дополнительно, разметка направления текста применяет к тексту целый ряд различных значений, в то время, как язык является простым переключателем, который не соответствует поставленным задачам.
Дополнительные материалы
Приступаете к работе? Язык в Сети
руководство, Работа с языком в HTML
Ссылки по теме, Разработка HTML и CSS
- Язык
- Использование атрибутов для объявления языка
- Выбор значений языка
- Объявление изменений языка в документе
HTML: что это за язык программирования
HTML — это язык разметки гипертекстовых документов. Он нужен, чтобы отображать в браузере специальным образом отформатированный документ с множеством вложенных элементов: заголовками, абзацами, списками, гиперссылками, медиаисточниками, расположением изображений, видео и аудио.
HTML-документ можно составлять в любом редакторе, который есть в операционной системе: Notepad на MS Windows, TextEdit в Mac, Pico на Linux. Браузер для работы HTML–документа желателен, но необязателен. Он нужен для того, чтобы показать отформатированный документ.
Просматривать HTML-страницы можно и без выхода в интернет. Для этого нужно создать несколько HTML-файлов в одной папке, расположить в них гиперссылки и переходить по ним от одного документа к другому.
Курс
Уверенный старт в IT
Поможем определить подходящую вам IT-профессию и освоить её с нуля. Вы на практике попробуете разные направления: разработку на разных языках, аналитику данных, Data Science, менеджмент в IT. Это самый подходящий курс для построения карьеры в IT в новой реальности.
Подробнее
HTML-документ это текстовый файл с расширением .html или .htm. В браузере он преобразуется в веб-страницу и состоит из набора тегов. Они как раз и помогают представлять текст на экране: благодаря им браузер понимает, что он читает не просто текст, а структурированную информацию, разбитую на блоки.
Тег выглядит как набор символов, заключенный в угловые скобки. Символы в скобках обозначают имя тега, которое описывает его функции. Вот несколько примеров:
- <h2> </h2> — заголовок;
- <p> </p> — абзац;
- <i> </i> — курсив.
Тег – это составной элемент, определяющий разметку структурных блоков. Он открывается, и этим начинает свое действие; и закрывается, обозначая завершение команды. Закрытые и открытые теги различаются только слешем перед именем тега. Эти теги создают оболочку, в которую помещается текст.
Именно незакрытые теги приводят к частым ошибкам и некорректным отображениям страницы. Для наглядности представим, что теги – это матрешки, из которых можно собрать набор. Складывая в большую матрешку все фигурки важно не забывать закрывать все половинки (ставить закрывающие теги), иначе игрушка не получится.
Внутри тега могут быть атрибуты – дополнительная информация, которую нужно скрыть из основного текста. Они ставятся только в открывающий тег, между ним и именем тега должен быть пробел, а после него идет знак равенства. Значение атрибута заключается в кавычки. С их помощью можно расширить возможности тегов и обратиться к ним, чтобы узнать подробную информацию.
Есть теги, которые нет необходимости закрывать. Пример: тег переноса строки <br> — он одиночный и закрывать его не нужно. Раньше одиночные теги писались с закрывающим слэшем перед закрывающей скобкой. Например: <br />. В стандарте HTML5 использование закрывающего слеша в одиночных тегах необязательно. Примеры одиночных тегов: <br>, <hr>, <img>.
Помимо атрибутов в тег можно добавлять вложения, эти элементы могут менять стиль текста. Например, можно выделить какое-то слово <strong>жирным</strong> шрифтом.
<!DOCTYPE html>
<html>
<head>
<title>Привет, SkillFactory</title>
</head>
<body>
<img src=» https://static. tildacdn.com/tild6565-6361-4831-a664-366538616534/SF_MRG_logo_new.svg«>
</body>
</html>
<!DOCTYPE html> –предназначается для указания типа документа, так как браузер может интерпретировать разные версии HTML (например, EXtensible HyperText Markup Language, расширенный язык разметки гипертекста). По умолчанию его всегда включают в начало страницы.
<html> </html> – сообщает браузеру, что это за HTML-документ. Этот тег хранит в себе остальные теги.
<head> </head> – нужен для хранения других элементов, которые помогают браузеру в работе с данными. Внутри него есть метатеги, которые применяются, чтобы сохранять информацию для браузеров и поисковых систем.
<body> </body> – тело документа, в котором находятся все видимые пользователю элементы.
<title> </title> – заголовок веб-страницы. Именно его браузер загрузит как название, а при сохранении страницы в избранное он использует эту фразу как описание закладки.
<img> – помещает изображение в нужное место. Обычно к нему добавляют атрибут src, в котором содержится путь к этому изображению. Атрибуты width, height определяют ширину и высоту изображения в пикселях.
Основная разметка HTML-страницы – это заголовки, абзацы и списки. Они структурируют информацию на странице, все как в документе Word.
В HTML бывает шесть уровней заголовков: <h2> – <h6>.
<h2>Привет, SkillFactory</h2>
<h3>Расскажешь</h3>
<h4>Какие бывают</h4>
<h5>Уровни заголовка</h5>
Заголовок типа <h2> используют обычно один раз, потому что он основной.
Как и на обычном письме, делит текст по смыслу.
<p>Спасибо, SkillFactory, всё понятно. Давай дальше</p>
Самые распространенные типы списков нумерованные и ненумерованные.
Ненумерованные или маркированные списки добавляются тегом <ul></ul>. Такие списки применяются когда нам не важна последовательность их элементов.
В нумерованном списке, где пункты расположены в определенном порядке, используется тег <ol></ol>.
Отдельные элементы в любом типе списков заводятся тегом <li></li>, который также нужно закрывать после каждого пункта.
HTML не обрабатывает данные, а только их отображает. То есть с помощью него нельзя выполнить сложение или умножение, можно только показать текст, в котором будет содержаться нужная формула с ответом. Он отвечает за разметку – ограниченный набор действий, который помогает браузеру отображать страницы.
Однако HTML обладает синтаксисом, семантикой и лексикой, поэтому он попадает в категорию декларативных языков программирования.
Курс
Frontend- разработчик PRO
Получите перспективную творческую профессию и знания уровня middle. Вы изучите JavaScript и TypeScript. За время обучения вы выполните 5 проектов на JavaScript и получите 13 проектов в портфолио.
Подробнее
HTML: Язык гипертекстовой разметки | MDN
HTML (язык гипертекстовой разметки) является основным строительным блоком Интернета. Он определяет значение и структуру веб-контента. Другие технологии, помимо HTML, обычно используются для описания внешнего вида/представления веб-страницы (CSS) или функциональности/поведения (JavaScript).
«Гипертекст» относится к ссылкам, которые соединяют веб-страницы друг с другом либо в пределах одного веб-сайта, либо между веб-сайтами. Ссылки являются фундаментальным аспектом Интернета. Загружая контент в Интернет и связывая его со страницами, созданными другими людьми, вы становитесь активным участником всемирной паутины.
HTML использует «разметку» для комментирования текста, изображений и другого содержимого для отображения в веб-браузере. Разметка HTML включает специальные «элементы», такие как
,
,
,
,
, ,
, ,
,
, <в сторону>
,
,
,
,
,
,
,
,
и многие другие. Элемент HTML отделяется от другого текста в документе «тегами», которые состоят из имени элемента, окруженного « <
» и « >
". Имя элемента внутри тега нечувствительно к регистру. То есть оно может быть написано в верхнем регистре, нижнем регистре или в смеси. Например, тег
может быть записан как
,
или любым другим способом. Однако принято и рекомендуется писать теги строчными буквами.
Следующие статьи помогут вам узнать больше о HTML.
- Введение в HTML
Если вы новичок в веб-разработке, обязательно прочитайте нашу статью «Основы HTML», чтобы узнать, что такое HTML и как его использовать.
- Учебники по HTML
Для получения статей о том, как использовать HTML, а также учебных пособий и полных примеров посетите нашу область обучения HTML.
- Ссылка HTML
В нашем обширном справочном разделе HTML вы найдете подробную информацию о каждом элементе и атрибуте HTML.
Хотите стать веб-разработчиком?
Мы подготовили курс, который включает в себя всю необходимую информацию, необходимую для
работайте над своей целью.
Начало работы
В нашей области обучения HTML есть несколько модулей, которые обучают HTML с нуля — никаких предварительных знаний не требуется.
- Введение в HTML
Этот модуль устанавливает этап, знакомя вас с важными понятиями и синтаксисом, такими как рассмотрение применения HTML к тексту, создание гиперссылок и использование HTML для структурирования веб-страницы.
- Мультимедиа и встраивание
Этот модуль исследует, как использовать HTML для включения мультимедиа на ваши веб-страницы, включая различные способы включения изображений, а также способы встраивания видео, аудио и даже целых других веб-страниц.
- HTML-таблицы
Представление табличных данных на веб-странице в понятной и доступной форме может оказаться непростой задачей. Этот модуль охватывает базовую разметку таблиц, а также более сложные функции, такие как реализация подписей и сводок.
- HTML-формы
Формы являются очень важной частью Интернета — они предоставляют большую часть функций, необходимых для взаимодействия с веб-сайтами, например. регистрация и вход в систему, отправка отзывов, покупка продуктов и многое другое. Этот модуль поможет вам приступить к созданию клиентской/интерфейсной части форм.
- Используйте HTML для решения общих проблем
Содержит ссылки на разделы контента, объясняющие, как использовать HTML для решения очень распространенных проблем при создании веб-страницы: работа с заголовками, добавление изображений или видео, выделение контента, создание базовой формы и т. д.
- Изображение с поддержкой CORS
Атрибут crossorigin
в сочетании с соответствующим заголовком CORS позволяет загружать изображения, определенные элементом
, из внешних источников и использовать в элементе
, как если бы они загружались из текущее происхождение.
- Атрибуты настроек CORS
Некоторые элементы HTML, обеспечивающие поддержку CORS, например
или
, имеют атрибут crossorigin
(свойство crossOrigin
), который позволяет настраивать запросы CORS для извлеченных данных элемента.
- Предварительная загрузка содержимого с помощью rel="preload"
Значение preload
атрибута rel
элемента
позволяет вам писать декларативные запросы на выборку в HTML
, указывая ресурсы, которые потребуются вашим страницам вскоре после загрузки, что вам, следовательно, нужно. чтобы начать предварительную загрузку на раннем этапе жизненного цикла загрузки страницы, до того, как включится основной механизм рендеринга браузера. Это гарантирует, что они станут доступными раньше и с меньшей вероятностью заблокируют первый рендеринг страницы, что приведет к повышению производительности. В этой статье представлено основное руководство о том, как предзагрузка
работает.
- HTML-ссылка
HTML состоит из элементов , каждый из которых может быть модифицирован некоторым количеством атрибутов . HTML-документы связаны друг с другом ссылками.
- Ссылка на элемент HTML
Просмотрите список всех элементов HTML.
- Ссылка на атрибут HTML
Элементы в HTML имеют атрибута . Это дополнительные значения, которые настраивают элементы или корректируют их поведение различными способами.
- Глобальные атрибуты
Глобальные атрибуты могут быть указаны для всех элементов HTML, даже для тех, которые не указаны в стандарте . Это означает, что любые нестандартные элементы должны по-прежнему разрешать эти атрибуты, даже если эти элементы делают документ несовместимым с HTML5.
- Строчные элементы и блочные элементы
Элементы HTML обычно являются «встроенными» или «блочными» элементами. Встроенный элемент занимает только пространство, ограниченное определяющими его тегами. Элемент уровня блока занимает все пространство своего родительского элемента (контейнера), тем самым создавая «блок».
- Типы ссылок
В HTML можно использовать различные типы ссылок для установления и определения отношений между двумя документами. Элементы ссылки, для которых можно установить типы, включают
, <область>
и <ссылка>
.
- Руководство по типам и форматам мультимедиа в Интернете
Элементы
и
позволяют воспроизводить аудио- и видеоматериалы непосредственно в вашем контенте без необходимости поддержки внешнего программного обеспечения.
- Категории содержимого HTML
HTML состоит из нескольких видов контента, каждый из которых разрешен для использования в определенных контекстах и запрещен в других. Точно так же у каждого есть набор других категорий контента, которые они могут содержать, и элементы, которые могут или не могут использоваться в них. Это руководство по этим категориям.
- Режим Quirks и стандартный режим
Историческая информация о причудливом режиме и стандартном режиме.
- Применение цвета к элементам HTML с помощью CSS
В этой статье описывается большинство способов использования CSS для добавления цвета к содержимому HTML, перечисляются части HTML-документов, которые можно окрашивать, и какие свойства CSS следует использовать при этом. Включает примеры, ссылки на инструменты для создания палитр и многое другое.
Последнее изменение: , участниками MDN
Объявление языка в HTML
Объявление языка в HTML
Вопрос
Как мне установить язык содержимого моей HTML-страницы?
На этой странице описывается, как разметить HTML-страницу, чтобы она давала информацию о языке страницы. Он начинается с общего резюме, а затем предоставляет дополнительные сведения в последующих разделах.
Быстрый ответ
Всегда используйте атрибут языка в теге html
, чтобы объявить язык текста по умолчанию на странице. Это наследуется всеми другими элементами. Например:
Обратите внимание, что следует использовать элемент html
, а не элемент body
, поскольку элемент body
не закрывает текст внутри элемента head
документа.
Если страница содержит содержимое на другом языке, добавьте атрибут языка к элементу, окружающему это содержимое. Это позволяет вам стилизовать или обрабатывать его по-разному. Например:
Название: "Le Bon Usage".
Используйте атрибут lang
для страниц, обслуживаемых как HTML. (Информацию о страницах, представленных в формате XML, включая полиглот-документы XHTML 1.x и HTML5, см. в разделе Выбор правильного атрибута.)
Используйте языковые теги из реестра IANA Language Subtag . Вы можете найти вложенные теги, используя неофициальный инструмент поиска языковых подтегов. (подробнее)
В некоторых частях вашего кода могут возникнуть проблемы. Если у вас есть многоязычный текст в title
, вы не можете размечать части текста для разных языков, потому что атрибут title
допускает только символы — без разметки. То же самое касается нескольких языков в значениях атрибутов. На данный момент нет хорошего решения для этого.
Используйте вложенные элементы, чтобы позаботиться о содержимом и значениях атрибутов одного и того же элемента на разных языках. (подробнее)
Вы никогда не должны использовать метаэлемент
с http-equiv 9Для атрибута 0010 установлено значение Content-Language
, чтобы указать язык страницы, но в определенных обстоятельствах вы можете захотеть предоставить информацию о языке с заголовком HTTP, чтобы указать предполагаемую аудиторию вашей страницы. Независимо от того, используете ли вы заголовок HTTP или нет, вы всегда должны объявлять язык текста на странице с помощью языкового атрибута в теге html
. Для получения дополнительной информации см. сопутствующую статью, заголовки HTTP, мета-элементы
и информацию о языке.
Детали
В этом разделе представлена более подробная информация по различным темам, связанным с объявлением языка в HTML.
Не забудьте также использовать атрибут dir
при работе с двунаправленным текстом, таким как арабский, иврит и т. д.
Что делать, если содержимое элемента и значения атрибутов на разных языках?
Иногда язык текста в
атрибут и содержимое элемента на разных языках. Например, в правом верхнем углу этой статьи есть ссылки на переведенные версии этой страницы.
текст ссылки показывает язык целевой страницы, используя язык целевой страницы, но связанный атрибут title
содержит подсказку в
язык текущей страницы:
Если ваш код выглядит следующим образом, язык
атрибуты на самом деле означают, что не только содержимое, но и текст атрибута title
на испанском языке.
Это явно неправильно.
Неверный код. Не копируйте!
Вместо этого переместите атрибут, содержащий текст на другом языке, в другой элемент, как показано в этом примере, где элемент a
наследует настройку по умолчанию en
элемента html
.
Что делать, если нет элемента, на который можно повесить атрибут?
Если вы хотите указать язык содержимого, но вокруг него нет разметки, используйте такой элемент, как span
, bdi
или div
вокруг содержимого.
Вот пример:
Вы бы сказали, что по-китайски это 中国科学院文献情报中心.
Выбор языковых значений
Чтобы быть уверенным, что все пользовательские агенты распознают язык, который вы имеете в виду, вам необходимо следовать стандартному подходу при предоставлении значений языковых атрибутов.
Вам также необходимо подумать о том, как стандартно относиться к диалектным различиям между языками, например, к различиям между английским (США) и
британский английский, которые значительно расходятся с точки зрения написания и произношения.
Правила создания значений языковых атрибутов описаны в спецификации IETF под названием BCP 47. В дополнение к определению того, как использовать простые языковые теги, такие как en
для английского или fr
для французского, BCP 47 описывает
как составлять языковые теги, которые позволяют указывать региональные диалекты, сценарии и другие варианты, связанные с этим языком.
BCP 47 включает наборы кодов языков и стран ISO, но выходит за их рамки. Чтобы найти соответствующие коды, вы должны обратиться к Реестр языковых подтегов IANA .
Неофициальный инструмент поиска языковых подтегов предоставляет удобный внешний интерфейс для реестра IANA.
Нежное, но достаточно подробное введение в синтаксис тегов BCP 47 см. в статье Language.
теги в HTML и XML . Для получения помощи в выборе правильного языкового тега из множества возможных тегов и комбинаций см. Выбор языкового тега .
Выбор правильного атрибута
Если ваш документ HTML (т.е. используется как text/html
), используйте атрибут lang
, чтобы установить язык
документа или диапазона текста. Например, следующее устанавливает французский язык по умолчанию:
При обслуживании страниц XHTML 1.x или полиглотов как text/html
используйте оба атрибута lang
и атрибут xml:lang
вместе каждый раз, когда вы хотите установить язык. 9Атрибут 0277 xml:lang — это стандартный способ определения информации о языке в XML. Убедитесь, что значения обоих атрибутов идентичны.
Атрибут xml:lang
на самом деле не полезен для обработки файла как HTML, но заменяет атрибут lang
каждый раз, когда вы обрабатываете или обслуживаете документ как XML. Атрибут lang
разрешен синтаксисом XHTML и может также распознаваться браузерами. Однако при использовании других парсеров XML (таких как lang()
в XSLT), вы не можете полагаться на распознавание атрибута lang
.
Если вы обслуживаете свою страницу как XML (т.е. используете тип MIME, такой как application/xhtml+xml
), вы делаете
не нужен атрибут lang
. Одного атрибута xml:lang
будет достаточно.
Дополнительная информация
Информация в этом разделе вряд ли будет полезна, но предоставлена для полноты.
Указание метаданных о языке аудитории
В дополнение к включению атрибута языка на странице в тег html
(что следует всегда делать), вы также могли столкнуться с объявлениями языка в заголовке HTTP (который обслуживается страницей) или как метаданные .
элементов.
Важно отметить, что объявление языка на странице всегда переопределяет информацию HTTP, когда дело доходит до определения фактического языка текста, но информация HTTP может предоставить более общую информацию о предполагаемое использование ресурса. Не рекомендуется использовать элементы meta
на странице HTML для объявления языка.
Для получения информации о Content-Language
в HTTP и в мета-элементах
см. HTTP-заголовки, мета-элементы
и информацию о языке .
Различные вещи, которые не имеют значения
На всякий случай и ради полноты, возможно, стоит упомянуть еще несколько моментов, которые , а не , относящийся к этому обсуждению.
Во-первых, нельзя объявить язык текста с помощью CSS.
Во-вторых, DOCTYPE
, который должен запускать любой HTML-файл, может содержать то, что некоторым людям кажется объявлением языка. DOCTYPE
в приведенном ниже примере содержит текст EN, что означает «английский». Это, однако, указывает на язык схемы , связанной с этим документом — это не имеет ничего общего с языком самого документа.
В-третьих, иногда люди предполагают, что информация о естественном языке может быть получена из кодировки символов. Однако кодировка символов не позволяет однозначно идентифицировать естественный язык: должно быть однозначное соответствие между кодировкой и языком, чтобы этот вывод работал, а такого нет. Например, одна кодировка символов может использоваться для многих языков, например. Латинский 1 (ISO-8859-1) мог кодировать как французский, так и английский, а также множество других языков. Кроме того, кодировка символов может варьироваться в зависимости от одного языка, например, для арабского языка могут использоваться такие кодировки, как «Windows-1256», «ISO-8859-6» или «UTF-8».
Все эти примеры кодировки, однако, в настоящее время являются спорными, поскольку весь контент должен быть написан в кодировке UTF-8, которая охватывает все языки, кроме самых редких, в единой кодировке символов.
В некоторых алфавитах, таких как арабский и иврит, отображаемый текст читается преимущественно справа налево, хотя в этом потоке числа и текст из других алфавитов отображаются слева направо.