Выбор языковых тэгов

IANA Language Subtag Registry

Subtag search tool

BCP 47

Вопрос

Какой тэг языка подходит для меня? Как выбрать язык и другие субтэги?

В HTML и XML документах языковой тэг используется для объявления языка контента.

Языковой тэг состоит из одного или нескольких субтэгов (subtag), разделённых дефисами. Субтэги могут быть различных типов.

BCP означает 'Best Current Practice' и является постоянным именем серии RFC документов, чьё количество изменяется по мере их обновления. Последний RFC, описывающий синтаксис языковых тэгов - это RFC 5646, Tags for the Identification of Languages, он заменил предыдущие RFC, такие, как 4646, 3066 и 1766.

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

Эта статья предоставляет советы по выбору компонентов для языковых тэгов. Для обзора концепций, определяемых BCP 47, смотрите Языковые тэги в HTML и XML.

Ответ

Обращение к реестру субтэгов

Все субтэги, которые необходимы для создания языковых тэгов находятся в одном месте - IANA Language Subtag Registry. Реестр представляет собой длинный текстовый файл, содержащий около 8,000 записей.

Первый (и часто единственный) субтэг в языковом тэге всегда означает язык. Он упоминается в BCP 47, как субтэг основного языка (primary language subtag). Мы будем использовать этот термин для субтэга, который обозначает язык, чтобы показать различие со всей строкой, которая называется 'языковым тэгом'.

Чтобы найти субтэг основного языка ищите на странице по имени этого языка. Например, если вы хотите объявить что-либо французским языком, то поиск 'French' в реестре вернет вам запись, которая выглядит так:

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

Ваш поиск совпал с полем Description. Проверьте, что тип этой записи language. То, что вы ищете, это значение поля Subtag, то есть fr.

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

Существуют утилиты, предоставляющие дополнительную помощь в поиске по реестру, такие, как Language Subtag Lookup.

Решение 1: Субтэг основного языка

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

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

2.2.1 Primary Language Subtag

4.1 Choice of Language Tag

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

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

В прошлом при работе с кодами ISO иногда встречались несколько кодов для одного языка - там мог быть двухбуквенный код и один или два трёхбуквенных. Эта неоднозначность была устранена в реестре IANA Subtag Registry, который содержит только один код для одного языка. Если существует двухбуквенный ISO код, то он будет использован, если нет, то трёхбуквенный. Разработчики реестра также координируют текущее развитие реестра с изменениями, происходящими в мире ISO.

Решение 2: Субтэги диалекта

Спецификация BCP 47 позволяет использование дополнительного трёхбуквенного субтэга сразу после субтэга основного языка. Он называется субтэгом диалекта (extended language subtag или extlang). Определено только относительно небольшое количество субтэгов диалекта, и они обязательно должны быть использованы с конкретными субтэгами основного языка (указанного в поле Prefix записи субтэга диалекта в реестре).

На сегодня только семь субтэгов основного языка могут быть использованы с субтэгами диалекта. Шесть из них имеют поле Scope, со значением macrolanguage в реестре (ar, kok, ms, sw, uz и zh). Седьмой код - sgn.

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

Примером использования может быть Общий Репозиторий Языковых Данных (Unicode's CLDR), который использует языковую ветвь zh для отображения путунхуа (Mandarin Chinese) и ku для курдского языка. Таким образом для путунхуа вы используете zh, а не cmn, а для курманджи (севернокурдский) вы используете ku-Latn, а не kmr-Latn. База данных CLDR, однако, вообще не использует субтэги диалектов, так что вам придется использовать yue для кантонского диалекта китайского языка, а не zh-yue.

Решение 3: Субтэги письменности

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

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

2.2.3 Script Subtag

4.1 Choice of Language Tag

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

Вот что нужно учитывать при выборе субтэга письменности.

Решение 4: Субтэги региона

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

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

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

2.2.4 Region Subtag

4.1 Choice of Language Tag

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

Есть 2 типа субтэгов региона: двухбуквенные коды и коды, состоящие из трёх цифр. Последние, как правило, определяют многонациональные регионы, а не конкретные страны. Например es-ES означает испанский, на котором говорят в Испании, тогда, как es-419 означает испанский, распространённый в Латинской Америке.

Решение 5: Субтэги варианта

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

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

2.2.5 Variant Subtags

4.1 Choice of Language Tag

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

Основная вешь, за которой нужно следить при использовании субтэгов варианта - это порядок их использования.

Решение 6: Субтэги расширения

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

2.2.6 Extension Subtags

4.1 Choice of Language Tag

Эти субтэги, состоящие из одного символа, позволяют расширять языковые тэги. На сегодняшний день, зарегистрирован только один субтэг расширения. Субтэг u был зарегистрирован организацией Unicode Consortium для добавления информации о поведении языка или локали. Многие обозначения локалей требуют дополнительных надстроек с конкретными значениями языка, культуры, региона или других вариаций. Это расширение предоставляет механизм использования этих дополнительных надстроек языковых тэгов для постановки их аналогичным образом в другие языковые тэги.

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

Расширение u- определено в RFC 6067, который ссылается на Unicode Consortium's Common Locale Data Repository (CLDR). Оно не определено в BCP 47.

Решение 7: Субтэги частного использования

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

2.2.7 Private Use Subtags

4.1 Choice of Language Tag

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

Устаревшие тэги

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

4.1 Choice of Language Tag

Устаревшие тэги это особые случаи, существующие для обратной совместимости. Это тэги, зарегистрированные до RFC 4646, которые не могут быть полностью собраны из субтэгов текущего реестра, или не следующие сунтаксису, определённому для языковых тэгов.

Практически все устаревшие тэги были заменены в реестре субтэгами или комбинациями субтэгов. Подобные тэги сегодня не рекомендуются к использованию и обычно содержат поле Preferred-Value, указывающее на предпочтительный вариант использования. Например, запись в реестредля устаревшего тэга art-lojban указывает, что вам следует использовать языковой субтэг jbo.

Обратите внимание, что вам не следует использовать дополнительные субтэги в устаревшем тэге.