содержимое

Обратите внимание, что

  1. данный документ является переводом документа «Language information and text direction» и на данный момент находится на стадии перевода;
  2. данный документ может содержать неточности, опечатки и ошибки перевода;
  3. официальным документом по данной тематике является оригинальный документ на английском языке, расположенный на сайте W3C.

8 Информация о языке и направление текста

Содержимое

  1. Определение языка содержимого: атрибут lang
    1. Коды языков
    2. Наследование кода языка
    3. Интерпретация языковых кодов
  2. Определение направления текста и таблиц: атрибут dir
    1. Введение в двунаправленный алгоритм
    2. Наследование информации о направлении текста
    3. Установка направления вложенного текста


* * *

8.1 Определение языка содержимого: атрибут lang

Определения атрибутов
lang = код-языка [CI]
Этот атрибут задаёт базовый язык значений атрибутов элемента и содержащегося в элементе текста. По умолчанию значение этого атрибута не определено.

Язык информации, указанный с помощью атрибута lang может использоваться агентом пользователя для визуализации элементов управления различными способами. Некоторые ситуации, в которых автор предоставляет информацияю о языке, могут быть полезны и включать:

Атрибут lang указывает язык содержимого элемента и значений атрибутов; относится ли он к данному атрибуту, зависит от синтаксиса и семантики атрибута и задействованной операции.

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

Например, если символы греческого алфавита появляться в середине текста написанного на русском языке:

<P><Q lang="en">Её суперсила была результатом
&gamma;-излучения,</Q> пояснил он.</P>

агент пользователя (1) должен пытаться отобразить русский текст соответствующим образом (например, в представлении кавычек) и (2) должен сделать попытку лучшим образом отобразить γ не смотря на то, что это не русский символ.

Подробнее смотрим раздел о неотображаемых символах для получения соответствующей информации.

8.1.1 Коды языков

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

[RFC1766] определяет и разъясняет языковые коды, которые должны использоваться в HTML документах.

Вкратце, языковые коды состоят из основного кода и, возможно пустого ряда подкодов:

        языковой-код = основной-код ( "-" подкод )*

Вот некоторые примеры языковых кодов:

Двухбуквенные первичные коды зарезервированы для [ISO639] языковых сокращений. Двухбуквенные коды включают fr (французский), de (немецкий), it (итальянский), nl (голландский), el (греческий), es (испанский), pt (португальский), ar (арабский), he (иврит), ru (русский), zh (китайский), ja (японский), hi (хинди), ur (урду), и sa (санскрит).

Под любым двухбуквенным подкодом понимается [ISO3166] код страны.

8.1.2 Наследование кода языка

Элемент наследует информацию о коде языка в следующем порядке (от высшего к низшему):

В представленном ниже примере, основным языком документа является французский («fr»). Один абзац объявлен на испанском языке («es»), после чего возвращается основной французский язык. В следующем абзаце так же объявляется фраза на японском («ja») языке, после которой продолжается текст на французском языке.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML lang="fr">
<HEAD>
<TITLE>Un document multilingue</TITLE>
</HEAD>
<BODY>
...Interpreted as French...
<P lang="es">...Interpreted as Spanish...
<P>...Interpreted as French again...
<P>...French text interrupted by<EM lang="ja">some
         Japanese</EM>French begins here again...
</BODY>
</HTML>
Примечание. Ячейки таблицы могут наследовать значения атрибута lang не от родителей, а от первой ячейки диапазона. Пожалуйста, обратитесь к разделу о наследовании выравнивания для получения более подробной информации.

8.1.3 Интерпретация языковых кодов

В HTML контексте код языка должен интерпретироваться агентами пользователей в виде иерархии знаков, а не как один знак. Когда агент пользователя регулирует отображение документа в соответствии с информацией о языке (допустим, путём сопоставления языковых кодов таблиц стилей и значений lang), он всегда должен находить точное совпадение, а также должен учитывать соответствие основных кодов. Таким образом, если атрибут lang установленный в HTML элементе имеет значение «en-US», то агент пользователя должен отдать предпочтение информации о стиле, которая соответствует «en-US», после основного значения «en».

Примечание. Код языка не гарантирует иерархии, при которой все языки с общим префиксом будут понятны для тех, кто свободно говорит на одном или более языке. Они позволяют пользователю запросить это сходство, когда оно подходит данному пользователю.

8.2 Определение направления текста и таблиц: атрибут dir

Определения атрибутов

dir = LTR | RTL [CI]
Этот атрибут задаёт основное направление нейтрально-направленного текста (то есть текста, который не имеет установленную направленность, как это определено в [UNICODE]) в содержимом элементов и значениях атрибута. Он также определяет направленность таблиц. Возможные значения:
  • LTR: Расположение текста или таблицы cлева направо.
  • RTL: Расположение текста или таблицы справа налево.

В дополнение к спецификации языка документа с помощью атрибута lang, авторы могут указать основную направленность (слева направо или справа налево) фрагментов текста документа, таблицы и т.д. Это делается совместно с атрибутом dir.

[UNICODE] спецификация назначает направление символов и определяет (сложный) алгоритм для определения соответствующего направления текста. Если документ не содержит символ отображаемый справа налево, то соответствующему web-браузеру не требуется применять [UNICODE] двунаправленный алгоритм. Если документ содержит символ отображаемый справа налево, и если web-браузер отображает эти символы, то данный браузер должен использовать алгоритм двунаправленного вывода.

Хотя Unicode определяет специальные символы, которые имеют дело с направлением текста, HTML предлагает конструкции разметки более высокого уровня, которые делают то же самое: атрибут dir (не путайте с элементом DIR) и элемент BDO. Таким образом, приводя цитату на иврите, её написание распознаётся интуитивно

<Q lang="he" dir="rtl">...цитата на иврите...</Q>

чем эквивалент с Unicode ссылками:

&#x202B;&#x05F4;...цитата на иврите...&#x05F4;&#x202C;

Агенты пользователей не должны использовать атрибут lang для определения направления текста.

Атрибут dir наследуется, и может быть переопределён. Пожалуйста, обратитесь к разделу о наследовании направления вывода текста для получения более подробной информации.

8.2.1 Введение в двунаправленный алгоритм

Следующий пример иллюстрирует ожидаемое поведение алгоритма двунаправленного вывода. Он включает в себя английский, со сценарием вывода слева направо и текст на иврите, со сценарием вывода справа налево.

Рассмотрим следующий пример текста:

  english1 HEBREW2 english3 HEBREW4 english5 HEBREW6

Символы в этом примере (и во всех соответствующих примерах) хранятся в компьютере в том виде, в котором они отображаются здесь: первый символ в файле это «е», второй это «n» и последний символ это «6».

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

english1 2WERBEH english3 4WERBEH english5 6WERBEH
         <------          <------          <------
            H                H                H
------------------------------------------------->
                       E

Пунктирные линии указывают структуру предложения: английский текст является преобладающим и вложен некоторый еврейский текст. Формирование правильного представления не требует дополнительной разметки, поскольку фрагменты с ивритом будут правильно изменены агентами пользователей, использующими двунаправленный алгоритм.

С другой стороны, если преобладающим языком документа является иврит, основное направление вывода будет справа налево. Правильное представление, таким образом будет:

6WERBEH english5 4WERBEH english3 2WERBEH english1
        ------->         ------->         ------->
            E                E                E
<-------------------------------------------------
                       H

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

8.2.2 Наследование информации о направлении текста

Unicode алгоритм двунаправленного вывода нуждается в базовом направлении текста для текстовых блоков. Чтобы указать основное направление элемента блочного уровня, установите элементу атрибут dir. Значением по умолчанию атрибута dir является "ltr" (текст слева направо).

Когда атрибут dir установлен для элемента блочного уровня, он остается в силе на протяжении всего элемента и всех вложенных элементов блочного уровня. Применение атрибута dir ко всем вложенным элементам отменяет предыдущее, унаследованное ими значение.

Чтобы установить основное направление текста для всего документа, установите атрибут dir в элементе HTML.

Например:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML dir="RTL">
<HEAD>
<TITLE>...title справа налево...</TITLE>
</HEAD>
...текст справа налево...
<P dir="ltr">...текст слева направо...</P>
<P>...ещё раз текст справа налево...</P>
</HTML>

С другой стороны, встроенные элементы не наследуют атрибут dir. Это означает, что встроенный элемент без атрибута dir не создаёт дополнительный уровень вложенности относительно алгоритма двунаправленного вывода. (Здесь, элемент рассматривается как элемент блочного уровня или встроенный элемент на основе его представления по умолчанию. Обратите внимание, что INS и DEL элементы могут быть блочного уровня или встроенными в зависимости от контекста.)

8.2.3 Установка направления вложенного текста

[UNICODE] алгоритм двунаправленного вывода автоматически переворачивает вложенные последовательности символов в соответствии с присущей им направленностью (как показано в предыдущих примерах). Однако, как правило, только один уровень вложенности может быть учтён. Для обеспечения изменения направления дополнительнительных уровней вложенности, вы должны использовать атрибут dir для встроенного элемента.

Рассмотрим тот же пример текста, указанный ранее:

english1 HEBREW2 english3 HEBREW4 english5 HEBREW6

Предположим, что основным языком документа, содержащим данный абзац, является английский. Кроме того, указанное английское предложение содержит раздел на иврите, расположенный от HEBREW2 до HEBREW4 и раздел на иврите содержащий предложение на английском (english3). Желательное представление текста выглядит таким образом:

english1 4WERBEH english3 2WERBEH english5 6WERBEH
                 ------->
                    E
         <-----------------------
                    H
------------------------------------------------->
                    E

Для двух вложенных элементов меняется направление, мы должны предоставить дополнительную информацию, которую мы делаем, разделяя второе вложение в явном виде. В этом примере мы используем элемент SPAN и атрибут dir для разметки текста:

english1 <SPAN dir="RTL">HEBREW2 english3 HEBREW4</SPAN> english5 HEBREW6

Авторы могут также использовать специальные символы Unicode для изменения направления множества встроенных элементов. Для вывода текста слева направо окружите вложенный текст, символом СЛЕВА НАПРАВО («LRE», шестнадцатеричный 202A) и символом ФОРМАТИРОВАНИЯ НАПРАВЛЕННОСТИ («PDF», шестнадцатеричный 202C). Для вывода текста справа налево окружите вложенный текст, символом СПРАВА НАЛЕВО («RTE», шестнадцатеричный 202 B) и PDF.

Использование направленности HTML разметки с символами Unicode. Авторы и разработчики авторского программного обеспечения должны знать, что могут возникнуть конфликты в случае, если атрибут dir используется во встроенных элементах (в том числе в BDO) одновременно с соответствующими [UNICODE] символами форматирования. Желательно использовать исключительно только один из представленных способов направления вывода текста. Метод разметки предлагает лучшую гарантию структурной целостности документа и устраняет некоторые проблемы при редактировании двунаправленного HTML текста в простом текстовом редакторе, но некоторые программы могут быть более склонны использовать [UNICODE] символы. Если используются оба метода, большое внимание следует обратить на обеспечение правильной вложенности разметки и направления вложения или переопределения, иначе результат будет неопределенным.


* * *