Выбор language Тэга

Предполагаемая аудитория: шифровальщики XHTML / HTML (используя редакторы или скрипты), разработчики скриптов (PHP, JSP, и т.д.), шифровальщики CSS, разработчики схем (DTDs, XML Schema, RelaxNG, и т.д.), разработчики XSLT, менеджеры веб проектов, и каждый, кому нужен совет о том, как построить language теги.

Вопрос

Какой language тег мне подходит? Как выбрать language и другие subtags?

Вводная информация

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

Language тэг из одного или нескольких subtags разделенных дефисами. Subtags могут быть разных типов.

BCP означает 'Best Current Practice'(Лучшая Нынешняя Практика), и является постоянным названием для серии RFCs(запросы комментариев) , чьи номера меняются, при обновлении. Самый последний RFC, который описывает синтаксис language тэга RFC 5646, Тэги для Определения Языков, и он отменяет действие таких более старых RFCs 4646 3066 и 1766.

Синтаксис language тэга определяется IETF(Специальная Комиссия Интернет Разработок) BCP 47. В прошлом надо было свериться со списками кодов в различных стандартах ISO, чтобы найти правильные subtags, но теперь вам нужно всего лишь заглянуть в IANA Реестр Language Subtag. Ниже мы опишем новый реестр.

Статья содержит советы, как выбрать компоненты language тэга. Обзор концепций, определенных в BCP 47 смотрите Language тэги в HTML и XML.

Addison Phillips и Mark Davis - авторы BCP 47, при написании этой статьи ввели руководящие указания.

Ответ

Доступ к реестру subtag

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

Отметим также, что некоторые среды или системы могут диктовать выбор, который отличается от того, что вы ожидали. Например, в Java вы должны использовать iw (устаревшее в BCP47) вместо he (рекомендованного в BCP47).

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

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

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

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

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

Остальная часть этой статьи поможет вам выбрать главные language subtags и, при необходимости, другие виды subtag. Обратите внимание, что не все решения о создании language тэга являются простыми. Есть обстоятельства, при которых использование будет диктовать вам, которой из разных возможностей вы должны следовать.

Есть инструменты, которые оказывают дополнительную помощь при поиске по реестру, такие как инструмент Поиск Language Subtag.

Решение 1: Главный language subtag

Вы всегда начинаете с выбора главного language subtag (основной языковой subtag), и очень часто это все, что вам нужно для вашего language тэга.

Подробнее читайте в BCP 47 спецификации:

2.2.1 Главный Language Subtag

4.1 Выбор Language Тэга

Всегда помните золотое правило - храните ваш language тэг как можно более коротким. Только в случае необходимости добавляйте еще ​​subtags к своему language тэгу, чтобы отличать язык в условиях использования вашего контента.

Есть ряд вещей, которые нужно помнить при поиске главного language subtag.

В прошлом, при работе со списками кодов ISO, иногда случались несколько кодов для обусловленного языка - может быть 2-буквенный код и один или два 3-буквенные коды. Эта неоднозначность разрешается IANA Subtag Реестром: только один код указанный для каждого языка. (Если ISO 2-буквенный код существует, то это и будет код, в противном случае это будет трех-буквенный код). Сопровождающий реестра также координирует постоянную эволюцию реестра с событиями в мире ISO.

Решение 2: Расширенные language subtags

BCP 47 спецификация позволяет дополнительный, 3-буквенный subtag сразу после начального главного language subtag. Это называется расширенный language subtag (сокращено extlang). Определено лишь относительно небольшое число расширенных language subtags, и каждый из них должен использоваться с определенным главным language subtag (что обусловленный в поле Prefix для расширенного language subtag в реестре).

В настоящее время только семь основных language subtags могут использоваться с расширенными language subtags. Шесть из них имеют полеScope установленное в реестре для макроязыка (ar, kok, ms, sw, uz, и zh), и другая - sgn.

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

Как пример использования, CLDR базы данных Unicode, что используют макроязыки zh для представления Мандаринского языка и ku для представления Курдского языка. Таким образом, для Мандаринского языка вы должны использовать zh, а не cmn, и для Северного Курдского языка вы должны использовать ku-Latn, а не kmr-Latn. Однако, база данных CLDR не использует расширенные language subtags, поэтому вы должны использовать для Кантонского диалекта yue, а не zh-yue.

Решение 3: Скриптовые subtags

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

Подробнее читайте в BCP 47 спецификации:

2.2.3 Скриптовый Subtag

4.1 Выбор Language Тэга

Скриптовые subtags состоят из 4 букв, и должно идти за любым language или расширенным language subtag, но перед любыми другими subtags.

Вот вещи на которые следует обратить внимание при выборе скриптового subtag.

Решение 4: Региональные subtags

Региональные subtags ассоциируют language subtag, что вы выбрали с конкретным регионом мира. Региональные subtags должны идти после любых language или скриптовых subtags.

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

Подробнее читайте в BCP 47 спецификации:

2.2.4 Региональный Subtag

4.1 Выбор Language Тэга

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

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

Решение 5: Вариантные subtags

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

Подробнее читайте в BCP 47 спецификации:

2.2.5 Вариантные Subtags

4.1 Выбор Language Тэга

Вариантные subtags описывают дополнительные различия, которые не находят отражения в других subtags. Обычно это диалекты, письменные изменения (например, реформы правописания), транскрипция и т.д.. Вариантные Subtag, как правило, от 5 до 8 символов и может содержать буквы и/или цифры. Также зарегистрированы несколько четырехзначных subtags (как правило, представляют год). Вариантные subtags должны идти после любых language, скриптовых и региональных subtags.

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

Решение 6: Subtags расширения

Подробнее читайте в BCP 47 спецификации:

2.2.6 Subtags Расширения

4.1 Выбор Language Тэга

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

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

Расширение u- определенное в RFC 6067, что указывает на Unicode Consortium's Common Locale Data Repository (Общее Вместилище Данных Локали Unicode Консорциума (CLDR)) для получения детальной информации о subtags, идущие вслед за ним. Оно не определяется BCP 47.

Решение 7: Subtags частного использования

Подробнее читайте в BCP 47 спецификации:

2.2.7 Subtags Частного Использования

4.1 Выбор Language Тэга

Subtags частного использования не появляются в реестре subtag, а также избираются и поддерживаются частным соглашением между сторонами, которые их используют. Они представлены с помощью однобуквенного subtag, или 'singleton'(одиночка (шаблон проектирования)). x - singleton для частного использования. Заметьте, что все subtags после singleton могут иметь только 8 символов, хотя вы можете использовать несколько subtags.

Одобренные тэги

Подробнее читайте в BCP 47 спецификации:

4.1 Выбор Language Тэга

Grandfathered (одобренные) теги - особые случаи, внедренные для совместимости. Это тэги, которые были зарегистрированы в RFC 4646, который не мог полностью состоять из subtags в текущем реестре, или не вписывается в синтаксис, что в настоящее в время определен для language тегов.

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

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