2013-07-30 2 views
6

Предположим, что я пишу статью в HTML. Язык статьи - шведский, поэтому у меня есть <html lang="sv">. Теперь я хочу, чтобы пометить аббревиатуру должным образом в следующем тексте:Разный язык в заголовке и содержании HTML-тега ABBR

HTML kan användas till mycket. 

С этой целью, я сначала сделать

<abbr title="HyperText Markup Language">HTML</abbr> kan användas till mycket. 

Это само по себе не достаточно хорошо, однако, поскольку язык атрибута title является шведским (sv). Помимо теоретической проблемы, это заставит читателей экрана произносить заголовок очень неудобно. Чтобы исправить это, я мог бы сделать

<abbr title="HyperText Markup Language" lang="en">HTML</abbr> kan användas 
    till mycket. 

Это еще хуже, хотя, так как теперь аббревиатура «HTML» будет читаться в Enligsh вместо шведского [так от шведской точки зрения, это будет звучать как " ejtsch-ti-emm-ell "вместо" hå-te-emm-ell "].

Следовательно, сокращение, или содержания текста из abbr узла, должно быть на шведском, но атрибут title должен быть на английском языке. Каков предпочтительный (HTML5) способ маркировки этого? Это

<abbr title="HyperText Markup Language" lang="en"> 
    <span lang="sv">HTML</span> 
</abbr> kan användas till mycket. 

?

+0

Если это работает так, как вы хотите, обязательно используйте его.(У меня нет шведского учебника для чтения, поэтому я не могу проверить, работает ли он правильно!) –

+0

Mr Lister: У меня нет никакого устройства для чтения экрана, чтобы проверить с ... Нет, это наоборот вокруг. «аббревиатура» устарела; вы используете 'abbr' для всех аббревиатур сегодня (я просто прочитал спецификацию HTML5 сверху вниз). –

+2

Кстати, здесь около 200 000 вопросов о HTML, поэтому я думаю, что вы в нужном месте. –

ответ

2

Ваш вывод верен: при разметке языка в HTML вы не можете указывать содержимое элемента как на языке, отличном от его значений атрибутов, так как lang attribute устанавливает оба из них. И обходным путем является тот, который вы нашли: используйте внутреннюю разметку для контента. Здесь нет разницы между HTML 4 и HTML5.

Однако это очень теоретическая проблема.

Во-первых, the abbr markup is almost useless на практике. Сокращения должны быть объяснены, когда это необходимо, в обычном текстовом контенте, а не в атрибутах. Речевые браузеры могут необязательно читать значения атрибутов title, но в нормальном режиме они игнорируют их - люди, использующие речевые браузеры, предпочитают быстрое чтение и часто привыкли к довольно высоким частотам речевых сигналов, и формулировка аббревиатур нарушит это.

Во-вторых, «аббревиатуры», такие как «HTML» (что действительно правильно , имя, а не что-либо еще) должны редко упоминаться в речи. Вам не хотелось бы слышать такие слова, как «Новая версия языка разметки HyperText - это язык разметки HyperText пять, у которого много расширений для языка разметки гипертекста четыре».

В-третьих, языковая разметка в основном предназначена для записи. В большинстве ситуаций это просто игнорируется. Google не волнует. Браузеры могут использовать его для определения шрифта по умолчанию, который будет использоваться, но большинство страниц определяют свои собственные шрифты, поэтому значения по умолчанию не имеют значения. Некоторые речевые браузеры могут распознавать несколько языков из атрибутов lang, но большинство из них этого не делают: они читают содержимое по правилам для языка, выбранного пользователем . Те, кто использует разметку на языке, могут проводить различие между английским и американским английским, поэтому, если вы все еще считаете, что языковая разметка имеет значение, рассмотрите возможность использования lang="en-GB" в этом контексте. (Я предполагаю, что большинство людей, говорящих на шведском языке, найдут Полученное произношение более понятным и естественным, чем Standard American, но я, возможно, ошибаюсь.)

+1

Спасибо за ваш ответ и +1. Я просто хочу добавить одно: я считаю, что маркировка аббревиатур не * только *, может быть, даже не * в основном *, в интересах читателей экрана. То, как я это вижу, может быть очень полезно для людей, не знакомых с терминологией (если страница в основном ориентирована на людей, которые * знакомы с ней), особенно если нет биекции между набором сокращений и написано словами, . Например, «САПР» означает «болезнь коронарной артерии» или «компьютерный дизайн»? Если текст нацелен на людей с компьютерными навыками или медицинских профессионалов, вы можете не указывать его –

+1

Кроме того, даже если вы (в основном) знаете, что означает аббревиатура, вы можете проверить точное написание текста, а затем удобно иметь его в 'title'. –

+0

Реализации атрибута 'title' в браузерах являются паршивыми (крошечный текст, который исчезает и т. Д.), И авторы все чаще используют« подсказки CSS »(например, используя элемент, который изначально скрыт, но становится видимым, когда какой-то элемент затушевывается). Такие подходы не имеют проблемы разметки языка, обсуждаемой здесь, поскольку текстовое содержимое не отображается в атрибуте, а как содержимое элемента. –

Смежные вопросы