Языковой тег IETF BCP 47 — это стандартизированный код, который используется для идентификации человеческих языков в Интернете. [1] Структура тега была стандартизирована Инженерной рабочей группой Интернета (IETF) [1] в Best Current Practice (BCP) 47 ; [1] подтеги поддерживаются Реестром языковых подтегов IANA . [2] [3] [4]
Чтобы различать языковые варианты для стран, регионов или систем письма (скриптов), языковые теги IETF объединяют подтеги из других стандартов, таких как ISO 639 , ISO 15924 , ISO 3166-1 и UN M.49 . Например, тег en
обозначает английский язык ; es-419
латиноамериканский испанский язык ; rm-sursilv
ретороманский сурсильванский язык ; sr-Cyrl
сербский язык , написанный кириллицей ; nan-Hant-TW
миньнаньский китайский язык с использованием традиционных ханьских символов , как говорят на Тайване ; yue-Hant-HK
кантонский диалект с использованием традиционных ханьских символов , как говорят в Гонконге ; и gsw-u-sd-chzh
цюрихский немецкий язык .
Он используется в таких вычислительных стандартах, как HTTP , [5] HTML , [6] XML [7] и PNG . [8]
Языковые теги IETF были впервые определены в RFC 1766, отредактированном Харальдом Твейтом Альвестрандом и опубликованном в марте 1995 года. Теги использовали двухбуквенные коды языков ISO 639 и двухбуквенные коды стран ISO 3166 и допускали регистрацию целых тегов, включавших вариантные или письменные подтеги из трех-восьми букв.
В январе 2001 года этот стандарт был обновлен RFC 3066, в котором было добавлено использование трехбуквенных кодов ISO 639-2 , разрешены подтеги с цифрами и принята концепция языковых диапазонов из HTTP/1.1 для упрощения сопоставления языковых тегов.
Следующая редакция спецификации появилась в сентябре 2006 года с публикацией RFC 4646 (основная часть спецификации), отредактированной Эддисоном Филипсом и Марком Дэвисом , и RFC 4647 [9] (который касается поведения сопоставления). RFC 4646 представил более структурированный формат для языковых тегов, добавил использование четырехбуквенных кодов сценариев ISO 15924 и трехзначных географических кодов регионов UN M.49 и заменил старый реестр тегов новым реестром подтегов. Небольшое количество ранее определенных тегов, которые не соответствовали новой структуре, были оставлены в силе для поддержания совместимости с RFC 3066.
Текущая версия спецификации, RFC 5646, [10] была опубликована в сентябре 2009 года. Основной целью этой редакции было включение трехбуквенных кодов из ISO 639-3 и 639-5 в Реестр языковых субтегов с целью повышения совместимости между ISO 639 и BCP 47. [11]
Каждый языковой тег состоит из одного или нескольких «подтегов», разделенных дефисами (-). Каждый подтег состоит только из основных латинских букв или цифр.
За исключением языковых тегов частного использования, начинающихся с префикса x- , и устаревших языковых тегов (включая те, которые начинаются с префикса i-, и те, которые ранее были зарегистрированы в старом Реестре языковых тегов), подтеги располагаются в следующем порядке:
Субтеги нечувствительны к регистру , но спецификация рекомендует использовать тот же регистр, что и в Реестре субтегов языка, где субтеги регионов — ВЕРХНИЕ БУКВЫ , субтеги сценариев — Заголовок , а все остальные субтеги — строчные . Такая заглавная буква соответствует рекомендациям базовых стандартов ISO.
Необязательные подтеги сценария и региона предпочтительно опускать, если они не добавляют никакой отличительной информации к тегу языка. Например, es предпочтительнее, чем es-Latn , поскольку испанский язык, как ожидается, будет полностью написан латиницей; ja предпочтительнее, чем ja-JP , поскольку японский язык , используемый в Японии, не отличается заметно от японского языка, используемого в других местах.
Не все языковые регионы могут быть представлены допустимым субтегом региона: субнациональные региональные диалекты основного языка регистрируются как вариантные субтеги. Например, вариантный субтег valencia для валенсийского варианта каталонского языка зарегистрирован в Реестре языковых субтегов с префиксом ca . Поскольку на этом диалекте говорят почти исключительно в Испании, региональный субтег ES обычно можно опустить.
Кроме того, существуют теги письменностей, которые не относятся к традиционным письменностям, таким как латиница, или даже к письменностям вообще, и они обычно начинаются с буквы Z. Например, Zsye относится к эмодзи , Zmth — к математической нотации , Zxxx — к неписаным документам, а Zyyy — к неопределенным письменностям.
Теги языка IETF использовались в качестве идентификаторов локалей во многих приложениях. Возможно, этим приложениям придется установить собственную стратегию определения, кодирования и сопоставления локалей, если стратегия, описанная в RFC 4647, недостаточна.
Использование, интерпретация и сопоставление языковых тегов IETF в настоящее время определены в RFC 5646 и RFC 4647. Реестр языковых субтегов содержит список всех действующих в настоящее время публичных субтегов. Частные субтеги не включены в Реестр, поскольку они зависят от реализации и являются предметом частных соглашений между третьими лицами, использующими их. Эти частные соглашения выходят за рамки BCP 47.
Ниже приведен список некоторых наиболее часто используемых основных языковых субтегов. Список представляет собой лишь небольшое подмножество (менее 2 процентов) основных языковых субтегов; для получения полной информации следует напрямую обратиться к Реестру языковых субтегов.
Хотя некоторые типы подтегов получены из основных стандартов ISO или UN , они не следуют этим стандартам в полной мере, так как это может привести к изменению значения языковых тегов с течением времени. В частности, подтег, полученный из кода, назначенного ISO 639 , ISO 15924 , ISO 3166 или UN M49, остается допустимым (хотя и устаревшим) подтегом, даже если код изъят из соответствующего основного стандарта. Если стандарт позже присвоит новое значение изъятому коду, соответствующий подтег все равно сохранит свое старое значение.
Эта стабильность была введена в RFC 4646.
RFC 4646 определил концепцию «расширенного языкового субтега» (иногда называемого extlang ), хотя в то время такие субтеги не были зарегистрированы. [13] [ проверка не пройдена ] [14] [ проверка не пройдена ]
RFC 5645 и RFC 5646 добавили основные языковые субтеги, соответствующие кодам ISO 639-3 для всех языков, которые еще не существовали в Реестре. Кроме того, коды языков, охватываемых определенными макроязыками, были зарегистрированы как расширенные языковые субтеги. Языки жестов также были зарегистрированы как extlangs с префиксом sgn . Эти языки могут быть представлены либо только субтегом для охватываемого языка ( cmn для мандаринского диалекта), либо комбинацией язык-extlang ( zh-cmn ). Первый вариант предпочтительнее для большинства целей. Второй вариант называется «extlang form» и является новым в RFC 5646.
Целые теги, зарегистрированные до RFC 4646 и теперь классифицируемые как «старые» или «избыточные» (в зависимости от того, соответствуют ли они новому синтаксису), устарели в пользу соответствующего языкового субтега на основе ISO 639-3, если таковой существует. Вот несколько примеров: nan предпочтительнее zh-min-nan для китайского языка минь нань ; hak предпочтительнее i-hak и zh-hakka для китайского языка хакка ; и ase предпочтительнее sgn-US для американского языка жестов .
Windows Vista и более поздние версии Microsoft Windows поддерживают RFC 4646. [15]
ISO 639-5 определяет языковые коллекции с кодами alpha-3 иначе, чем они изначально кодировались в ISO 639-2 (включая один код, уже присутствующий в ISO 639-1, бихари, кодируемый включительно как bh в ISO 639-1 и bih в ISO 639-2). В частности, языковые коллекции теперь все определены в ISO 639-5 как включительные, а не некоторые из них определяются исключительно. Это означает, что языковые коллекции имеют более широкую область действия, чем раньше, в некоторых случаях, когда они могут охватывать языки, которые уже были закодированы отдельно в ISO 639-2.
Например, код ISO 639-2 afa ранее ассоциировался с названием «Афро-азиатские (другие)», исключая такие языки, как арабский, которые уже имели свой собственный код. В ISO 639-5 эта коллекция называется «Афро-азиатские языки» и включает все такие языки. ISO 639-2 изменил исключительные названия в 2009 году, чтобы соответствовать инклюзивным названиям ISO 639-5. [16]
Чтобы избежать нарушения реализаций, которые все еще могут зависеть от старого (исключительного) определения этих коллекций, ISO 639-5 определяет атрибут типа группировки для всех коллекций, которые уже были закодированы в ISO 639-2 (такой тип группировки не определен для новых коллекций, добавленных только в ISO 639-5).
BCP 47 определяет свойство "Scope" для идентификации подтегов для языковых коллекций. Однако он не определяет ни одну заданную коллекцию как включающую или исключающую и не использует атрибут типа группировки ISO 639-5, хотя поля описания в Реестре языковых подтегов для этих подтегов соответствуют именам ISO 639-5 (включающим). Как следствие, языковые теги BCP 47, которые включают основной языковой подтег для коллекции, могут быть неоднозначными относительно того, является ли коллекция включающей или исключающей.
ISO 639-5 не определяет точно, какие языки являются членами этих коллекций; определяется только иерархическая классификация коллекций с использованием инклюзивного определения этих коллекций. Из-за этого RFC 5646 не рекомендует использовать подтеги для языковых коллекций для большинства приложений, хотя они по-прежнему предпочтительнее подтегов, значение которых еще менее конкретно, например, «Несколько языков» и «Не определено».
Напротив, классификация отдельных языков в рамках их макроязыка стандартизирована как в ISO 639-3, так и в Реестре языковых субтегов.
Субтеги скрипта были впервые добавлены в Реестр языковых субтегов, когда был опубликован RFC 4646, из списка кодов, определенных в ISO 15924. Они кодируются в языковом теге после основных и расширенных языковых субтегов, но перед другими типами субтегов, включая региональные и вариантные субтеги.
Некоторые основные языковые субтеги определяются свойством с именем "Suppress-Script", которое указывает на случаи, когда для языка обычно может быть по умолчанию принят один сценарий, даже если он может быть записан с помощью другого сценария. В этом случае предпочтительнее опустить субтег сценария, чтобы повысить вероятность успешного сопоставления. Другой субтег сценария все еще может быть добавлен, чтобы провести различие, когда это необходимо. Например, yi предпочтительнее, чем yi-Hebr в большинстве контекстов, поскольку субтег ивритского сценария предполагается для языка идиш .
В качестве другого примера, zh-Hans-SG можно считать эквивалентом zh-Hans , поскольку региональный код, вероятно, не имеет значения; письменная форма китайского языка, используемая в Сингапуре, использует те же упрощенные китайские иероглифы, что и в других странах, где используется китайский язык. Однако субтег сценария сохраняется, поскольку он имеет значение.
ISO 15924 включает некоторые коды для вариантов письма (например, Hans и Hant для упрощенных и традиционных форм китайских иероглифов), которые унифицированы в Unicode и ISO/IEC 10646. Эти варианты письма чаще всего кодируются для библиографических целей, но не всегда имеют значение с лингвистической точки зрения (например, коды письма Latf и Latg для вариантов латинского письма Fraktur и Gaelic, которые в основном кодируются обычными латинскими буквами в Unicode и ISO/IEC 10646). Иногда они могут быть полезны в языковых тегах для выявления орфографических или семантических различий с различным анализом букв, диакритических знаков и диграфов/триграфов как кластеров графем по умолчанию или различий в правилах регистра букв.
Двухбуквенные субтеги регионов основаны на кодах, назначенных или «исключительно зарезервированных» в ISO 3166-1 . Если Агентство по обслуживанию ISO 3166 переназначит код, который ранее был назначен другой стране, существующий субтег BCP 47, соответствующий этому коду, сохранит свое значение, а новый субтег региона, основанный на UN M.49, будет зарегистрирован для новой страны. UN M.49 также является источником числовых субтегов регионов для географических регионов, таких как 005
Южная Америка. Коды UN M.49 для экономических регионов не допускаются.
Региональные субтеги используются для указания разновидности языка, «используемой в» определенном регионе. Они уместны, когда разновидность носит региональный характер и может быть адекватно отражена путем идентификации вовлеченных стран, как при различении британского английского ( en-GB ) от американского английского ( en-US ). Когда разница заключается в письменности или разновидности письменности, как в случае упрощенных и традиционных китайских иероглифов, ее следует выразить с помощью скриптового субтега вместо регионального субтега; в этом примере следует использовать zh-Hans и zh-Hant вместо zh-CN/zh-SG/zh-MY и zh-TW/zh-HK/zh-MO .
Когда для языка, который можно считать региональным вариантом, существует отдельный языковой субтег, часто предпочтительнее использовать более конкретный субтег вместо комбинации язык-регион. Например, ar-DZ ( арабский , используемый в Алжире ) может быть лучше выражен как arq для алжирского разговорного арабского языка .
Разногласия по поводу идентификации языка могут распространяться на BCP 47 и основные стандарты, которые его информируют. Например, некоторые носители пенджаби считают, что различие ISO 639-3 между [pan] «панджаби» и [pnb] «западный панджаби» является ложным (т. е. они считают, что это один и тот же язык ); что подвиды арабского письма должны кодироваться отдельно в ISO 15924 (как, например, фрактур и гэльский стили латинского письма); и что BCP 47 должен отражать эти взгляды и/или отменять основные стандарты в отношении них.
BCP 47 делегирует этот тип суждения основным стандартам и не пытается отменить или заменить их. Вариантные субтеги и (теоретически) основные языковые субтеги могут быть зарегистрированы индивидуально, но не таким образом, чтобы это противоречило основным стандартам. [17]
Расширенные субтеги (не путать с расширенными языковыми субтегами ) позволяют прикреплять к языковому тегу дополнительную информацию, которая не обязательно служит для идентификации языка. Одним из применений расширений является кодирование информации о локали, такой как календарь и валюта.
Подтеги расширений состоят из нескольких строк символов, разделенных дефисом, начинающихся с одного символа (кроме x ), называемого синглтоном . Каждое расширение описано в своем собственном IETF RFC , который определяет регистрационный орган для управления данными для этого расширения. IANA отвечает за распределение синглтонов.
По состоянию на январь 2014 года были назначены два продления.
Расширение T позволяет языковому тегу включать информацию о том, как были транслитерированы, транскрибированы или иным образом преобразованы помеченные данные. Например, тег en-t-jp может использоваться для контента на английском языке, переведенного с оригинального японского. Дополнительные подстроки могут указывать на то, что перевод был выполнен механически или в соответствии с опубликованным стандартом.
Расширение T описано в информационном документе RFC 6497, опубликованном в феврале 2012 года. [18] Регистрационным органом является Консорциум Unicode .
Расширение U позволяет встраивать в языковые теги широкий спектр атрибутов локали, найденных в Common Locale Data Repository (CLDR). Эти атрибуты включают в себя подразделения стран, данные календаря и часового пояса, порядок сортировки, валюту, систему счисления и идентификацию клавиатуры.
Вот некоторые примеры:
Расширение U описано в информационном документе RFC 6067, опубликованном в декабре 2010 года. [19] Регистрирующим органом является Консорциум Unicode .