Микроформат rel-translation (черновик)

16 июля 2008 года, 15:59

Данный документ является черновым вариантом спецификации микроформата rel-translation. Впоследствии данный черновой вариант будет доработан, переведён на английский язык и будет выведен на обсуждение сообществу микроформатов с последующим брейнстормингом. Данный микроформат претендует на звание открытого стандарта спецификации микроформатов.

Данная спецификация является открытой спецификацией, распространяемой с использованием лицензии Public Domain, как и другие открытые спецификации микроформатов.

В некоторых ситуациях пользователям необходимо предоставить многоязычные версии очень важных документов. Зачастую, механизмы интернационализации не предоставляют «двойную» пользу: они создаются либо только для человека, либо только для машины. В этой записи я постараюсь представить вам черновой вариант будущего выдвиженца в статус микроформата — rel-translation.

Общее описание

Данный микроформат (далее будет использоваться именно это определение, несмотрян на черновой статус документа) может быть использован для указания ссылок на переводы (версии на других языках) текущего документа или части документа. Rel-translation может войти в семейство микроформатов rel, утилизирую тот же самый атрибут, что и некоторые другие микроформаты

Элементы и атрибуты

Микроформат rel-translation следует применять на элементе a, так как именно с помощью ссылки можно обозначить связь между текущим документом, или его частью, и целью ссылки. В данном случае нам понадобятся следующие обязательные (в рамках микроформата) атрибуты элемента a:

  • href — обязателен по спецификации HTML
  • rel — для указания отношения, в микроформате rel-translation должно быть всегда установлено translation
  • hreflang — данный атрибут используется для указания языка документа перевода.

Атрибут href

В данном случае атрибут href используется для обозначения документа, который будет являться переводом документа или его конкретной части.

Атрибут rel

Атрибут rel в данном микроформате всегда должен содержать значение translation.

Атрибут hreflang

Данный атрибут должен содержать информацию о языке перевода, который доступен по текущей ссылке. Информация должна быть представлена в соответствии с RFC 1766, то есть в виде краткого идентификатора языка. Атрибут hreflang должен содержать идентификатор единственного языка для указания перевода. Примерами идентификаторов являются: ru, en и другие. Микроформат rel-translation без указания атрибута hreflang могут считаться невалидными и парсерам следует их игнорировать.

Атрибут title

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

Пример

Вот простой пример указания перевода текущего документа:

Текущий документ на <a href="http://example.com/en/page" hreflang="en" title="english" rel="translation">английском языке</a>.

Помимо этого, вам может понадобится список переводов:

Документ доступен на следующих языках: <ul class="translation"> <li><a href="http://example.com/en/page" hreflang="en" title="english" rel="translation">Английский язык</a></li> <li><a href="http://example.com/en/page" hreflang="de" title="deutsch" rel="translation">Немецкий язык язык</a></li> </ul>

Рекомендуется указывать класс translation для списка переводов с целью соблюдения правил POSH.

XMDP-профиль

Ниже указан XMDP-профиль rel-translation на английском языке:

<dl class="profile"> <dt id="rel">rel</dt> <dd><p> <a rel="help" href="http://www.w3.org/TR/html401/struct/links.html#adef-rel"> HTML4 definition of the 'rel' attribute.</a> Here is an additional value.</p> <dl> <dt id="translation">translation</dt> <dd>Indicates that the referred resource is a translation of the referring page or a part of page.</dd> </dl> </dd> <dt id="hreflang">hreflang</dt> <dd><p> <a rel="help" href="http://www.w3.org/TR/html4/struct/links.html#adef-hreflang"> HTML4 definition of the 'hreflang' attribute.</a> This attribute is required to specify machine-code of language of the referred resource.</p> </dd> </dl>

Нормативные ссылки

Мнения (50)

Все эти хорошие люди уже прокомментировали запись. Поделитесь собственным мнением, расскажите, что вы думаете о поставленной проблеме, задаче, озвученных мыслях.

  • Sam

    16 июля 2008 г.16:32

    Неплохо. Минусов не вижу.

  • blia

    16 июля 2008 г.16:48

    Дин, а где его использовать?

  • Дин автор

    16 июля 2008 г.17:13

    @blia, в любых Web-страницах.

  • blia

    16 июля 2008 г.17:37

    Это я понимаю:) Чем он может быть полезен систеам работающим с микроформатами. Не могу придумать

  • Дин автор

    16 июля 2008 г.17:42

    А даже придумывать не надо. Автоматические парсеры могут обрабатывать эту информацию, чтобы предоставить пользователю выбор (или оповещение) о том, что существуют версии и на других языках.

    Чисто теоретические мысли: если браузер будет поддерживать данный микроформат, то при загрузке страницы и обнаружении ссылок с rel-translation он сможет сразу перебросить пользователя на страницу, язык которой соответствует языку, установленному в системе по умолчанию, или просто оповестить пользователя о том, что такая страница существует.

    Вариантов применения, вообще, масса.

  • blia

    16 июля 2008 г.18:54

    А. Ну да. Это я и хотел узнать. Да интересный микроформат. Давай домучивай:)

  • Curly Brace

    16 июля 2008 г.19:13

    Ага! Претендую на копирайты! :)))

  • tenshi

    16 июля 2008 г.19:32

    Поздравляю с изобретением велосипеда =)

    Http://www.w3.org/TR/html401/types.html#type-links

  • Дин автор

    16 июля 2008 г.19:36

    @tenshi, вы про что? Что-то я не понимаю.

  • Sam

    16 июля 2008 г.19:40

    6.12 Link types

    Alternate

    Designates substitute versions for the document in which the link occurs. When used together with the lang attribute, it implies a translated version of the document. When used together with the media attribute, it implies a version designed for a different medium (or media).

  • Дин автор

    16 июля 2008 г.19:42

    Если вы про alternate, @tenshi, то вы ошибаетесь, и то, что вы предлагаете, не является микроформатом ни в коей мере. Микроформат — это видимые пользователю данные, а указанные вами способ является лишь представлением meta-информации. Rel-translation же видим конечному пользователю.

  • Sam

    16 июля 2008 г.19:44

    Хм… Каким-таким образом rel=language виден пользователю? :)

  • Дин автор

    16 июля 2008 г.19:45

    Rel-translation представляется ссылкой, на которую даже можно нажать, а не только увидеть, а элемент link не отображается не Web-странице никоим образом.

  • Дин автор

    16 июля 2008 г.19:50

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

  • Sam

    16 июля 2008 г.19:51

    12.2 The A element.

    Rel = link-types [CI]

    Идём к http://www.w3.org/TR/html401/types.html#type-links

    Alternate

    Designates substitute versions for the document in which the link occurs. When used together with the lang attribute, it implies a translated version of the document. When used together with the media attribute, it implies a version designed for a different medium (or media).

    Соотв.

  • Sam

    16 июля 2008 г.19:52

    Код порезало. В общем, в rel задать alternate, в lang язык.

  • tenshi

    16 июля 2008 г.20:01

    HTML (от англ. Hypertext Markup Language — «язык разметки гипертекста») — это стандартный язык разметки документов во Всемирной паутине. Все веб-страницы создаются при помощи языка HTML (или XHTML). Язык HTML интерпретируется браузером и отображается в виде документа, удобном для человека.

    <a href="http://fr.wikipedia.org/wiki/Hypertext_Markup_Language" hreflang="en">эта статья на французском языке</a>

    <a href="http://fr.wikipedia.org/wiki/Hypertext_Markup_Language" lang="en">this article translated on english</a>

  • Дин автор

    16 июля 2008 г.20:27

    Последний пример вообще ни о чём не говорит, и, да, я знаю, что такое HTML.

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

    Скажите Тантеку, что hCard — тоже велосипед, потому что использует div/span и атрибут class для создания собственной структуру, вот он посмеётся-то. :-)

  • Sam

    16 июля 2008 г.20:35

    Проблема в том, что в отличие от hCard (кстати, неудачного) представленный микроформат уже учтён в HTML.

    Отличия:

    — «alternate» заменён на «translation». //примерно то же

    — «hreflang» обязателен.

  • Дин автор

    16 июля 2008 г.20:50

    Проблема в том, что alternate используется не только для обозначения переводов документов и непонятно вообще что это такое.

    Если вы называете hCard неудачным, почему же тогда он используется биллионами в сети Интернет? Или все эти люди, которые создали себе hCard — неудачники? Почему создаются поисковые системы по микроформатам (Technorati, Yahoo, Google), раз они неудачны? Этим утверждением вы называете все вышеприведённые компании недальновидными и показываете, что у них слабый исследовательский центр, в чём я вынужден сомневаться.

    Ещё одна проблема в том, что представленный микроформат (как и все микроформаты) и должен базироваться на существующих (X)HTML-блоках, как и сказано в определении микроформатов. Я уже рекомендовал его почитать. Я не понимаю, кто вам сказал, что микроформаты должны быть построены «from scratch» и они должны быть действительно чем-то новым? Или не дают покоя лавры Линуса Торвальдса? :-)

  • Sam

    16 июля 2008 г.21:07

    Как это непонятно? Всё очень чётко:

    «Designates substitute versions for the document in which the link occurs. When used together with the lang attribute, it implies a translated version of the document.»

    HCard неудачен потому, что является HTML-зеркалом vCard. В этом же его плюс и поэтому он так распространён.

    Можно было бы сделать лучше… Например, зачем ограничивать набор полей? Может я хочу добавить адрес MSN, Jabber… Тот же ICQ.

    Про людей-неудачников и микроформаты в целом повеселило :)

    Не вижу связи между людьми, одним не очень удачным микроформатом и микроформатами в целом.

    То, что западные компании начали использовать vCard — вполне понятно и оправдано:

    — есть hCard с софтом, который его замечательно переваривает.

    — есть общепринятые (на западе) нормы оформления визиток, в которые vCard отлично вписывается.

    — бизнес на западе не ведётся через ICQ или Skype. MSN/GTalk чаще всего совпадают с email, поэтому надобности в дополнительных полях нет.

    Микроформаты не должны быть чем-то новым, но почему они должны дублировать другие микроформаты?

  • Sam

    16 июля 2008 г.21:07

    Да ё-моё… Что ж оно текст-то кусает так :(

  • Дин автор

    16 июля 2008 г.21:52

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

    Вот вы насмешили-то: hCard специально был создан как отображение vCard на семантический (X)HTML. Вы не поняли до сих пор, что это было сделано специально? Это не минус, а плюс, так как микроформаты, повторюсь в третий раз, призваны использовать существующие стандарты и спецификации; не изобретать ничего нового.

    Набор полей неограничен. Вы можете указать и MSN, Jabber, ICQ и другие протоколы, какие вам угодно. Это написано даже в спецификации hCard.

    Связь определённая есть: если ты используешь что-то, значит это что-то удобно. Ваши рассуждения подходили бы, если бы это была закрытая лаборатория, а люди были бы кроликами, на которых испытывали бы микроформаты, как новые препараты или вакцины.

    Стандарт vCard используется давно. HCard — его логическая проэкция на (X)HTML. Это и есть та суть, которую я пытаюсь донести.

  • Sam

    16 июля 2008 г.22:11

    Конечно специально :) Я об этом и говорил.

    Можно пример с указанием ICQ, который поймёт парсер микроформатов?

    Связи нет. Если она есть, то отказ BBC от использования одного неудачного микроформата значит то, что они все неудачны ;)

    Если кто-то что-то использует, используемое не обязательно удобно. Взять тот же IE6 или Outlook 2007.

  • Дин автор

    16 июля 2008 г.22:43

    Тогда абсурдно утверждение о неудаче hCard по указанной причине, ибо в этом и заключаются микроформаты.

    Можете посмотреть мой hCard через пункт меню «Как связаться?», там есть не только ICQ, но и XMPP, Skype и другие протоколы. Парсеры их понимают.

    Пример про IE6 и Outlook 2007 натянут: если данные программы используют, значит удобно. Понятие «удобства» может дрейфовать от человека к человеку, поэтому не нужно отображать ваше отношение к данным программам на всех людей. ;-)

  • Дин автор

    16 июля 2008 г.22:54

    Так и ждёшь, когда прийдёт кто-нибудь и скажет: «вот флудеры, расфлудились тут совсем со своими микроформатами!». :-/

  • Sannis

    17 июля 2008 г.00:02

    @Дин, я сказал это себе ещё когда утром заходил, не стал ввязываться :)

  • Дин автор

    17 июля 2008 г.00:40

    @Sannis, ага, не говори. :-)

    У меня уже почти полностью готов черновик на английском, а я морально готов к брейнстормингу. Вот так. :-)

  • Miscђka

    17 июля 2008 г.01:13

    link и meta из HTML-секции head давно пора на свалку относить.

  • Sannis

    17 июля 2008 г.02:09

    Ночью обычно приходят самые лучшие мысли и критические замечания.

    Данный микроформат может быть использован для указания ссылок на переводы текущего документа или части документа.
    Тогда следует указать в описании, как это осуществить, связь ссылки(<a>) и переводимого фрагмента.

    Атрибут hreflang должен содержать идентификатор единственного языка для указания перевода.
    Ограничение на один язык связано со спецификацией аттрибута hreflang или это собственное дополнение? Не хотелось бы иметь такое ограничение. Вполне активно используется метод «перевода», когда имеется одна ссылка на страницу, где текст(когда она маленький) переведена на несколько языков. Имхо одна ссылка лучше, чем несколько ссылок, указывающих на разные якоря внутри второй страницы.

  • Дин автор

    17 июля 2008 г.02:28

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

    По поводу второй части:

    Briefly, language codes consist of a primary code and a possibly empty series of subcodes:

    language-code = primary-code ( «-» subcode )*

    То есть, это ограничение спецификации.

    И я был бы за тот вариант, когда будет несколько ссылок, а то получается смысл, что документ сразу доступен на всех указанных языках на одной странице.

  • Sannis

    17 июля 2008 г.02:57

    То есть, это ограничение спецификации.

    Жаль. Тогда получается, что с точки зрения парсера плюсы этого микроформата по сравнению с link+alternate только в указании перевода для частей страницы.

  • Дин автор

    17 июля 2008 г.11:06

    link+alternate — это слишком общее определение, чтобы его можно было использовать при парсинге. Даже если учитывать alternate при установленном атрибуте hreflang, то получается, что если автор просто баловался и указал alternate и hreflang, то мы получим перевод, а он лишь дал ссылку на какой-то сторонний внешний ресурс с указанием его языка напрямую, но это не перевод текущей страницы.

    С помощью непосредственного указания отношения текущего документа к цели ссылки (rel), мы показываем, что это именно перевод. Причём, мы можем раскрыть машинные данные в атрибуте hreflang с использованием атрибуте title для указания полного названия языка. Такие данные можно парсить прямо на JavaScript и выводить в скобках рядом со ссылкой (выводить сразу в содержимое элемента нельзя, потому что у них разные языки, и язык содержимого ссылки должен соответствовать языку содержимого документа).

    И ещё одно, о чём я до сих пор говорю: некорректно связывать данный микроформат с alternate по неоднократно указанным выше причинам.

  • Дин автор

    17 июля 2008 г.11:15

    Ладно… Если люди не хотят идти к документации, документация сама прийдёт к людям:

    Микроформаты — это:

    * направление мыслей о данных

    * принципы дизайна форматов

    * адаптирование существующих средств и принципов разработки и использование паттернов.

    * форматы, тесно связанные с семантическим XHTML

    Микроформаты не являются:

    * новым языком

    * бесконечно расширяемыми и полностью открытыми

    * попыткой заставить всех сменить тактику и переписать свои утилиты

    * панацеей от таксономии, антологий и других подобных абстракций

    * определением мира

    Принципы:

    * Решать определённую узкую задачу

    * Быть простым настолько, насколько это возможно (Keep It Simple)

    * Быть ближе к людям во-первых, к машинам во-вторых

    * Использовать вновь и вновь существующие широко-распространённые стандарты

    * Модульность, встраиваемость

    * Децентрализованная разработка, контент, сервисы

    alternate не удовлетворяет по крайней мере нескольким приведённым пунктам.

  • Curly Brace

    17 июля 2008 г.12:06

    Уф, глаза чуть не выпали по все прочитал :)

  • Дин автор

    17 июля 2008 г.12:12

    Curly Brace, я же говорил-говорил! ;-)

  • Sam

    17 июля 2008 г.15:46

    Дин, да насчёт hCard был неправ.

    Пример про IE6 и Outlook 2007 не натянут. Заставляют пользоваться в больших компаниях. Народ матерится, но использует…

    Против rel-translation как такового не против, хотя и есть некоторые сомнения относитьельно дублирования alternate…

  • Дин автор

    17 июля 2008 г.16:19

    Ну не знаю… я когда был на Windows, меня устраивал Internet Explorer; когда я начал заниматься Web-разработкой — перестал устраивать. Тут дело в том, что требуется от программного обеспечения. :-)

    Скажем так: не дублирование, а уточнение. ;-)

  • Sam

    17 июля 2008 г.16:32

    Ну, как уточнение — вполне.

  • Дин автор

    17 июля 2008 г.17:09

    Ведь, если так посудить, с помощью alternate можно указывать и другие микроформаты, но парсеры не будут знать, что это такое вообще, а это неправильно. Микроформаты должны быть machine-and-people-compliant.

  • Sam

    17 июля 2008 г.17:26

    Парсер можно научить понимать alternate. С помощью rel тоже можно указать всё что угодно и парсеры не будут этого понимать.

    rel="alternative-solution"

  • blia

    17 июля 2008 г.17:29

    Вам не надоело спорить? 40 сообщений в ящике:)

  • Дин автор

    17 июля 2008 г.18:03

    @Sam, учить парсеру тому. что используется не только для конкретной цели совершенно бесмысленно. Введение нового значения rel позволяет указать напрямую о значении элемента и удовлетворяет принципам микроформатов.

  • Дин автор

    17 июля 2008 г.18:11

    Да, я считаю, что спорить бессмысленно, потому что в ближайшее время микроформат отправляется на брейнсторминг. Всем спасибо. :-)

  • tenshi

    18 июля 2008 г.20:35

    - а-а-а! я не понимаю что такое «альтернативное представление»! моих мозгов хватает только на «локализацию»! поэтому я тут побрейнштормил и родил гениальный «микроформат», который с точностью до терминологии повторяет существующую спецификацию!

    открою тебе страшную тайну: микроформаты — это средство расширения семантики весьма ограниченного html в рамках его dtd.

    лапшу из «документации» вешай, пожалуйста, на кого-нибудь другого.

    так вот, в хтмл уже есть средства указания на перевод со вполне чётким синтаксисом. что даёт твой «микроформат»? ещё один способ указания на перевод?

    что будет дальше? микроформат «lang-blockquote», который будет декларировать, что для указания языка в блочной цитате нужно задать для него аттрибут lang с кодом языка и аттрибут title для его названия?

  • Дин автор

    18 июля 2008 г.22:02

    Я уже сделал множество попыток объяснить, повторяться не намерен.

    Хочу лишь добавить, что приведённое тобой определение микроформатов является по меньшей мере ужатым, существующее средство указания связанного документа перевода неточным, а контраргумент с blockquote абсурдным.

  • Сергей

    24 июля 2008 г.09:06

    Din Neville has been working hard this week, updating the Russian translation of the wiki. Thank you, Din.

    Спасибо, Дин!

  • Дин автор

    24 июля 2008 г.14:39

    Всмысле, за то что веду Wiki? :-) Да не за что, честное слово. Зато будет куда отсылать с «банальными» вопросами. ;-)

  • Sannis

    22 августа 2008 г.05:16

    Как успехи черновика? :)

  • Дин автор

    22 августа 2008 г.19:25

    @Sannis, переведённая версия уже лежит на столе (рабочем, да), но пускать её на брейнсторминг пока нет возможности: при отсутствии времени со стороны соискателя, они там задушат её. :-)

Я тоже знаю!

Для обращения к человеку используйте символ @, после которого следует имя того, к кому обращаетесь (пробелы заменяются на знак подчёркивания). Если вам интересно, можете подписаться на комментарии по RSS или по эл. почте. Ведите себя достойно, вы же не роботы, правда?

Вы можете использовать следующие XHTML-элементы в разметке комментария: strong, em, span[class=crossline], a[href=uri], code[type=язык], blockquote, ul и ol. В качестве языка кода может быть указан, например, javascript или css.