Language tags in html and xml

Языковые тэги в HTML и XML

В данной статье мы называем значения языкового атрибута такие, как fr-CA языковым тэгом . Части fr и CA называются субтэгами (subtag) в случаях, если они являются частями тэга. Если имеются ввиду элементы списков стран или языков ISO, fr и CA называются кодами .

Языковые тэги используются для обозначения языка текста или других элементов в HTML и XML документах. Используйте lang атрибут для указания языковых тэгов в HTML и xml:lang атрибут для XML

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

RFC — это то, что IETF называет спецификациями. Каждый RFC имеет уникальный номер. К сожалению, невозможно определить, читая RFC 1766 или RFC 3066, что эти спецификации устарели и заменены другими спецификациями.

Синтаксис языковых тэгов был установлен IETF в BCP 47. BCP означает ‘Best Current Practice’ (Лучшая практика на сегодня) и яаляется постоянным именем для целой серии RFC , чьё число изменяется по мере их обновления. Последняя RFC, описывающая синтаксис языковых тэгов, это RFC 5646, Tags for the Identification of Languages , она является обновлением RFC 4646, 3066 и 1766.

Раньше вам нужно было искать субтэги обращаясь к спискам кодов различных ISO стандартов, но сегодня вы можете найти все субтэги в IANA Language Subtag Registry . Мы опишем новый реестр ниже.

Примечание! Если вам нужно пошаговое руководство по выбору языкового тэга, вам следует читать Выбор языкового тэга . Здесь далее следует обзор более продвинутого уровня синтаксиса и концепций, относящихся к языковым тэгам, как описано в BCP 47.

Большинство языковых тэгов состоят из двух- или трёхбуквенного субтэга. Часто за ним следует субтэг региона, состоящий из двух букв или трёх цифр. RFC 5646 также разрешает использование ещё нескольких субтэгов, если это необходимо. Это будет кратко рассмотрено в следующем разделе, в том числе диалект, написание, вариант языка, расширение и частное использование субтэгов.

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

Код Язык Субтэги (subtag)
en английский язык
mas масаи язык
fr-CA канадский французский язык + регион
es-419 испанский, используемый в Латинской Америке язык + регион
zh-Hans китайский, использующий упрощенное написание язык + написание

HTML и XML также предоставляют возможность предотвратить наследование языка использованием пустой строки, то есть xml:lang=»». По сути, это говорит: «Я не хочу ассоциировать какой-либо язык с этой информацией».

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

Читайте также:  My first html project

Создание языковых тэгов

Некоторые из ключевых разниц между RFC 5646 и более ранними спецификациями, такими, как RFC 3066:

  1. есть только одно место поиска валидных субтэгов — новый IANA registry
  2. субтэги имеют фиксированную позицию и длину, что делает более простым сопоставление языковых тэгов
  3. теперь есть больше гибкости вокруг потенциальных компонентов языкового тэга.

RFC 3066 по существу позволял вам составлять языковые теги, которые были либо кодом языка, либо кодом языка и кодом страны, либо одним из небольшого числа специально зарегистрированных значений в IANA language tag registry.

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

Хотя RFC 5646 предоставляет дополнительные возможности для создания языковых вариаций, он также охватывает все тэги, которые были валидными ранее. Так, что если вы использовали RFC 1766, RFC 3066 или RFC 4646 нет необходимости вносить какие-либо изменения в ваши тэги.

Список ниже демонстрирует различные типы субтэгов, которые доступны. Мы рассмотрим, как они работают в следующих разделах.

language — extlang — script — region — variant -extension- privateuse

Язык, диалект, письменность, регион, вариант, расширение, частное использование.

Записи в реестре следуют определенным соглашениям в отношении верхнего и нижнего регистра букв. Например, языковые тэги в нижнем регистре, буквенные субтэги региона — в верхнем, тэги написания начинаются с заглавной буквы. Это только договоренность! Когда вы используете эти субтэги вы вольны делать это, как вам нравится, до тех пор, пока вы не ограничены правилами системы, с которой работаете. В языковой разметке HTML и XML регистр не важен.

Использование субтэгов (subtag) реестра

Как отмечено выше, раньше вам приходилось обращаться к различным ISO стандартам для поиска субтэгов, но сегодня вы можете найти все субтэги в одном месте. Реестр IANA registry поначалу выглядит сложным в сравнении со списками ISO кодов, но он достаточно прост, как только вы поймёте его структуру.

Реестр это длинный текстовый файл. Для поиска языкового субтэга, ищите по названию языка на английском. Если мы ищем ‘French’ (французский), мы найдём такую запись:

%% Type: language Subtag: fr Description: French Added: 2005-10-16 Suppress-Script: Latn %%

Заметьте, что тип этой записи language . То, что мы ищем, это код с меткой Subtag , который имеет значение fr .

Таким же образом вы можете искать другие тэги. Например, чтобы найти тэг fr-CA (канадский французский), вам необходимо искать Canada (Канада), и убедиться, что вы нашли тэг типа region (регион).

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

Читайте также:  Html table scroll horizontal

Есть также неофициальная удобная утилита для поиска по реестру.

Следующий раздел предоставит вам больше информации о конкретных субтэгах.

Субтэг основного языка

Читайте подробнее в BCP 47:

Все языковые тэги должны начинаться с субтэга основного языка.

Примеры простых языковых тэгов включают:

  • en (английский)
  • ast (астурийский — в ISO списках нет двухбуквенного кода для астурийского)

Эти коды взяты из ISO 639 и поддерживаются актуальными.

Из-за того, что RFC 3066 не предоставлял список валидных субтэгов, а просто ссылался на ISO 639, есть некоторая путаница в том, как поступать, если список ISO кодов содержит и двух- и трёхбуквенный код (а иногда и более, чем трёхбуквенный). Сегодня все валидные субтэги перечислены в едином реестре IANA registry, который принимает только одно значение из ISO списков для каждого языка. Если двухбуквенный ISO код доступен, то только он один будет в реестре. Иначе — только трёхбуквенный код. Это сделано для упрощения.

Когда RFC 5646 был опубликован, свыше 7,000 новых ISO 639-3 трёхбуквенных кодов были добавлены в Subtag Registry.

Это пример основного субтэга основного языка для испанского es в реестре:

%% Type: language Subtag: es Description: Spanish Description: Castilian Added: 2005-10-16 Suppress-Script: Latn %%

Хотя коды регистронезависимы, они обычно пишутся в нижнем регистре, но это просто соглашение.

Субтэг диалекта

Читайте подробнее в BCP 47:

Мы будем ссылаться на субтэги диалектов, как extlang . Субтэг extlang всегда должен идти после субтэга основного языка, он должен быть единственным и идти до всех других субтэгов.

Примеры языковых тэгов, включающих субтэги диалектов:

Комбинация язык + диалект предоставлена для отображения устаревших форм языковых тегов, однако, есть единый субтэг для каждой комбинации языка + диалекта. Следует использовать этот языковой субтэг вместо сочетания языка и диалекта там, где это возможно. Например, используйте yue , а не zh-yue для кантонского диалекта, и afb вместо ar-afb для арабского диалекта Персидского залива.

Субтэги диалекта вседа состоят из 3 букв. Каждая extlang запись в реестре содержит поле Prefix которая определяет язык, идущий перед субтэгом диалекта. Записи также включают поле Preferred-Value которое обозначает эквивалентный языковой тэг.

Это пример кода для арабского диалекта Персидского залива, afb , в реестре:

%% Type: extlang Subtag: afb Description: Gulf Arabic Added: 2009-07-29 Preferred-Value: afb Prefix: ar Macrolanguage: ar %%

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

Например, zh означает китайский, но этот код охватывает множество китайских диалектов, зачастую взаимонепонятных. Когда zh используется сам по себе, то это обычно используется для обозначения преобладающего языка в охватываемом диапазоне, хотя это явно не указано в BCP 47. Например, условно считается, что zh обозначает преобладающую форму китайского языка — путунхуа (Mandarin). Там, где нужна абсолютная точность, используйте cmn , если это не нарушает функциональную совместимость. Однако, если вы используете zh для представления языка, который не является путунхуа, например, диалект Хакка, то лучше использовать более конкретный код (в данном случае, hak ).

Читайте также:  Как изменить масштаб страницы html

С другой стороны, zh-Hans в общем смысле использует zh . Это удобный способ описать письменность упрощенного китайского, так как китайский использует одинаковую письменность вне зависимости он диалекта читателя.

Субтэг письменности

Читайте подробнее в BCP 47:

Примеры языковых тэгов, включающих в себя субтэги письменности:

  • zh-Hans (упрощенный китайский)
  • az-Latn (азербайджанский, записанный латиницей — так как азербайджанский может быть записан и на основе арабского письма)

Субтэг письменности был впервые представлен в RFC 4646. Субтэги были взяты из списка кодов ISO 15924 и поддерживаются соответственно ему.

В языковом тэге может быть только один субтэг письменности, и он должен следовать сразу же за субтэгом языка или диалекта. Он всегда состоит из 4 букв.

Следует использовать субтэг письменности только тогда, когда необходимо подчеркнуть это различие. Как писал соавтор RFC 4646 Эддисон Филлипс: «Для практически любого контента, который не использует субтэг письменности сегодня, остается лучшей практикой не использовать его и в будущем».

Если вы специально хотите указать, что контент не является письменным, то для этого есть специальный субтэг. Например, вы можете использовать en-Zxxx чтобы обозначить, что англоязычная аудиозапись не является письменным контентом.

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

Это пример записи реестра для кириллической записи, Cyrl , которую использует, например, русский язык:

%% Type: script Subtag: Cyrl Description: Cyrillic Added: 2005-10-16 %%

Хотя в целом, маловероятно, что вам нужно будет указывать письменность при использовании языковых тэгов, есть одна или две ситуации о которых нужно знать. Одним из подобных примеров является китайский язык. Существует множество китайских диалектов, часто взаимно непонятных носителям, но все эти диалекты записаны либо с помощью упрощенного китайского письма, либо с помощью традиционного. Люди обычно хотят обозначить, то текст является упрощенным либо традиционным, но, до недавлего времени не было способа сделать это. Люди выли вынуждены использовать что-то вроде zh-CN (обозначающее китайский, используемый в Китае) для указания упрощенного китайского даже в Сингапуре, и zh-TW (обозначающее китайский, используемый на Тайване) для традиционного китайского. (Другие люди, также используют zh-HK для традиционного китайского). Доступность zh-Hans и zh-Hant для письменного китайского в упрощенном и традиционном виде должно улучшить согласованность и точность, и уже сегодня это широко применяется, хотя, конечно, вы можете использовать и старые тэги в каких-то случаях для совместимости.

Субтэг региона

Источник

Оцените статью