Аудиторія: шифровальщики XML и XHTML/HTML (используя редакторы или скрипты), разработчики скриптов (PHP, JSP, и т.д.), Менеджеры веб-проектов, и те, кто хочет лучше понять, как назначить язык текста на веб-странице.
Как можно установить язык контента на вашей HTML странице?
Всегда используйте языковой атрибут в html тэге для того, чтобы назначить по умолчанию язык текста на странице. Когда страница содержит контент на другом языке, то необходимо добавить языковой атрибут к элементу, который окружает этот контент.
Используйте атрибут lang для страниц, которые обслуживаются как HTML, и атрибут xml:lang для страниц, которые обслуживаются как XML. Для многоязычных документов XHTML 1.x и HTML5 используйте вместе оба атрибуты.
Используйте языковые тэги с Языкового Subtag Реестра IANA.
Всегда используйте языковой атрибут в html элементе. Он наследуется всеми другими элементами, и поэтому будет устанавливать
в элементе head документа язык для текста по умолчанию.
Обратите внимание, что вы должны использовать элемент html, а не элемент body, поскольку элемент
body не распространяется на текст в header (заголовке) документа.
Если у вас на странице есть контент на другом языке, чем тот, который предназначен в
html элементе, то используйте языковые атрибуты в элементах, окружающих этот контент. Это позволит вам по-разному его стилизовать или обработать.
В некоторых частях кода у вас могут возникнуть проблемы. Если у вас есть многоязычный текст в элементе title
, вы не можете размечать его разными языками, так как атрибут title позволяет только символы - не разметку.
То же самое касается текста в атрибутах. На данный момент нет хорошего решения этой проблемы.
Если ваш документ - HTML (то есть обслуживается как text/html), то для того чтобы установить язык документа или фрагмента текста
используйте атрибут lang. Например, далее показано как установить Французский язык языком по умолчанию:
<html lang="fr">
Если XHTML 1.x или многоязычные страницы обслуживаются как 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 тип, как application/xhtml+xml), то вам
не нужен атрибут lang. Достаточно будет только атрибута xml:lang.
<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
Если вы хотите указать язык некоторого контента, но нет разметки вокруг него, то вокруг контента используйте такие элементы, как span или div.
Вот пример XHTML 1.0, что обслуживается как text/html:
<p>На китайском это будет <span lang="zh-Hans">中国科学院文献情报中心</span>.</p>
Убедитесь, что все клиентские приложения распознают тот язык, который вы имеете в виду, вы должны следовать стандартному подходу при предоставлении значения языковому атрибуту. Кроме того, необходимо решить, как стандартным способом обращаться к таким диалектным различиям между языками, как разница между Американским Английским и Британским Английским, которые существенно расходятся с точки зрения правописания и произношения.
Правила для создания значений атрибута языка описываются спецификацией IETF, которую называют BCP 47. В дополнение к указанию как использовать такие простые языковые тэги, как en для Английского или fr для Французского языка, BCP 47 описывает
как составлять языковые тэги, которые позволяют указывать региональные диалекты, скрипты и другие варианты, которые связанные с этим языком.
BCP 47 содержит наборы языков и кодов стран ISO, но одновременно с тем еще и выходит за их рамки. Чтобы найти соответствующие коды вы должны свериться с Языковым Subtag Реестром IANA.
Чтобы поверхностно, но достаточно полно ознакомиться с синтаксисом BCP 47 тегов, читайте Языковые тэги в HTML и XML. Чтобы выбрать нужный языковой тэг из многих возможных тэгов и комбинаций, смотрите Выбор языкового тэга.
Если вы хотите создать metadata, что описывают язык целевой аудитории страницы, а не язык определенного диапазона текста, то сделать это можно заставив сервер отправлять
информацию в HTTP заголовок Content-Language. Если ваша целевая аудитория говорит на нескольких языках, то заголовок HTTP позволяет использовать список языков, который разделенный запятыми.
Вот пример заголовка HTTP который назначает, чтобы ресурс был смесью Английского, Хинди и Панджаби:
Content-Language: en, hi, pa
Обратите внимание, что такой подход не является эффективным, если ваша страница будет доступна с жесткого диска, CD диска или других несерверных мест. В настоящее время нет широко распространенного метода использования этого вида metadata внутри страницы.
В прошлом многие люди использовали элемент meta с атрибутом http-equiv установленным в Content-Language. Через древнюю путаницу и непоследовательную реализацию этого элемента, спецификация HTML5 сделала его неподходящим в HTML, так что вы больше не должны его использовать.
Для обратной совместимости, HTML5 описывает алгоритм, согласно которому язык контента по умолчанию при определенных условиях можно угадать с HTTP или meta Content-Language информации. Однако, это лишь запасной механизм для случаев, когда языковой атрибут не использовался в HTML тэге. Если вы использовали языковой атрибут в html тэге, что нужно делать всегда, то приведенные действия не нужны.
Подробнее о HTTP и meta Content-Language информации смотрите HTTP та meta для речевой информации.
Просто на всякий случай, пожалуй, стоит упомянуть еще несколько других моментов, которые не относятся к этой дискуссии.
Во-первых, невозможно назначить язык текста с помощью CSS.
Во-вторых, doctype, с которого должен начинаться любой HTML или XHTML файл может содержать запись, который некоторые люди могут воспринять за назначение языка. 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'.
Это же касается и направления текста. Как и в случае с кодировками и языком, не всегда есть однозначное соответствие между языком и скриптом, и как результат с направленностью. Например, Азербайджанский язык может быть написан с использованием как скриптов, которые выравниваются справа налево так и скриптов, которые выравниваются слева направо, и код языка az может быть актуальным для обеих случаев. Кроме того, разметка направления текста, которая используется со встроенным текстом применяет ряд различных значений к тексту, в то время как язык является простого переключателем, который не нужен для этих задач.
Приступаете к работе? Язык в Сети
Руководство, Работа с языком в HTML
Ссылки по теме, Разработка HTML и CSS – Язык – Использование атрибутов для назначения языка – Выбор языковых значений – Выявление изменений языка в документе
Ссылки: