Прискорююча кнопка n назначена для пропусків при навігації по сторінкам. Пропуск для переходу на початок контента.
Даний документ є перекладом. У випадку будь-яких невідповідностей і помилок остання версія документу англійською мовою повинна розглядатися як офіційна. Першопочаткове авторське право належить W3C, як це вказано нижче.
Перекладач: Alexandr Shlapak
Аудиторія: шифровальщики 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, при написании этой статьи ввели руководящие указания.
Все subtags, которые вам понадобятся для создания language тэга находятся в одном месте, IANA Реестр Language Subtag. Реестр это длинный текстовый файл, содержащий около 8000 записей.
Отметки на этой странице служат руководством, которое является достаточным для большинства людей, желающих использовать language тэги. В этом поле для людей, которые хотят читать полный текст спецификации есть ссылки на соответствующие разделы BCP 47.
Отметим также, что некоторые среды или системы могут диктовать выбор, который отличается от того, что вы ожидали. Например, в Java вы должны использовать "iw" (устаревшее в BCP47) вместо "he" (рекомендованного в BCP47).
Первый (и часто единственный) 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 созданный Richard Ishida.
Подумайте о letter-case (буквенных регистр). По соглашению, главные language subtags прописываются маленких буквами, скриптовые subtags начинаются с большой буквы, и продолжаются с маленькой, и региональные subtags прописываются заглавными буквами. Это всего лишь сделка, и вы можете свободно использовать любой буквенных регистр, что вам нравится.
С другой стороны, вы можете использовать language тэги в контексте, где важен буквенных регистр, например, имена файлов в некоторых системах. В таких случаях, вы должны убедиться, что вы следуете последовательной политике буквенного регистра; для любой новой системы, которая не чувствительна к регистру вам рекомендуется следовать соглашениям BCP 47.
Вы всегда начинаете с выбора главного language subtag (основной языковой subtag), и очень часто это все, что вам нужно для вашего language тэга.
Всегда помните золотое правило - храните ваш language тэг как можно более коротким. Только в случае необходимости добавляйте еще subtags к своему language тэгу, чтобы отличать язык в условиях использования вашего контента.
Есть ряд вещей, которые нужно помнить при поиске главного language subtag.
Вы можете найти информацию о языке в SIL Ethnologue и перекрестные ссылки на эту информацию в Wikipedia. Ethnologue использует те же три-буквенные коды, что и BCP47, но чтобы искать язык с помощью кода вы должны будете превратить BCP47 2-буквенные коды на их ISO 639-3 двойники. (Инструмент созданный Richard Ishida сделает это для вас.)
Очень редко доступны различные языковые коды, поэтому многие люди будут считать язык тем же, например, Филиппинский и Тагальский, или Тви и Акан. Нет никаких указаний в реестре, которые нужно использовать, но вы должны быть последовательным в рамках одной программы или контекста.
Вы должны искать более конкретный subtag для языка, что вас заинтересовал. К сожалению, subtag реестр не предоставляет никаких указаний для этого.
Вы можете использовать эти subtags, если не доступен более конкретный subtag, и это всегда лучше использовать один из этих subtag, а не MUL (multiple languages (много языков)) subtags или UND (undefined (неопределенный)).
Например, ku (Курдский) - макроязык, охватывающей ckb (Центральный Курдский), kmr (Северный Курдский), и sdh (Южный Курдский).
Вы можете найти более конкретные (то есть охватываемые) subtags путем поиска в реестре Macrolanguage: <subtag_name>. Кроме того, инструмент для поиска созданный Richard Ishida автоматически буду перечислять их для выбранного макроязыка (пример).
Как мы рекомендовали для subtags скопления, что вспоминались выше, в большинстве случаев вы должны использовать более конкретные subtags, но есть небольшое количество важных исключений. Это ситуации, когда вы должны продолжать использовать subtag макроязыка для совместимости.
Например, хотя BCP 47 объясняет, что zh (subtag макроязыка для Китайскго) на самом деле не указывает, какой именно из многих, иногда взаимно непонятных, диалектов Китайского подразумевается под этим subtag, на практике соглашение в большой степени ассоциирует subtag макроязыка с доминирующим языком среди охватываемых subtags - в этом случае, cmn (Мандаринский Язык). Если в прошлом ваше приложение определило Мандаринском язык используя language тэг zh-CN (язык, используемый на Материковом Китае), или даже просто zh, то таким образом вы можете продолжать использовать zh. Использование cmn или cmn-CN может вызвать серьезные проблемы совместимости, если программное обеспечение и пользователи ожидают, такой тэг как zh.
С другой стороны, если вы используете zh чтобы обратиться к другому Китайскому диалекту такому как Хакка, то вместо него вы должны использовать language subtag hak.
Deprecated: 1989-01-01 Preferred-Value: he
Это означает, что для Иврита вы должны использовать subtag he.
В прошлом, при работе со списками кодов ISO, иногда случались несколько кодов для обусловленного языка - может быть 2-буквенный код и один или два 3-буквенные коды. Эта неоднозначность разрешается IANA Subtag Реестром: только один код указанный для каждого языка. (Если ISO 2-буквенный код существует, то это и будет код, в противном случае это будет трех-буквенный код). Сопровождающий реестра также координирует постоянную эволюцию реестра с событиями в мире ISO.
BCP 47 спецификация позволяет дополнительный, 3-буквенный subtag сразу после начального главного language subtag. Это называется расширенный language subtag (сокращено extlang). Определено лишь относительно небольшое число расширенных language subtags, и каждый из них должен использоваться с определенным главным language subtag (что обусловленный в поле Prefix для расширенного language subtag в реестре).
Подробнее читайте в BCP 47 спецификации:
2.2.2 Расширенные Language Subtags
В настоящее время только семь основных language subtags могут использоваться с расширенными language subtags. Шесть из них имеют полеScope установленное в реестре для макроязыка (ar, kok, ms, sw, uz, и zh), и другая - sgn.
Рассмотрим следующее:
Где это возможно, использовать один language subtag, а не пару language+extlang. Существует всегда 3-буквенный subtag, который эквивалентен любой паре language+extlang, и он означает то же, что и extlang subtag. Например, zh-yue (Кантонским Китайский) также может быть выражен одним subtag yue.
Единственным существенным исключением, является тот случай, где последовательность language+extlang устоявшаяся практикой для системы с которой вы работаете, это там где было бы лучше использовать zh-yue чем yue, чтобы сохранить обратную совместимость.
Кроме того, при работе с доминирующим в наборе языком, как правило, лучше для совместимости, если вы замените последовательность language+extlang, только упуская extlang, а не использовать extlang код в качестве главного language subtag. Например, сокращение с ms-zsm к ms (subtag Малайского макроязыка) иногда может быть лучше, чем заменить его на zsm (Стандартный Малайский).
Как пример использования, CLDR базы данных Unicode, что используют макроязыки zh для представления Мандаринского языка и ku для представления Курдского языка. Таким образом, для Мандаринского языка вы должны использовать zh, а не cmn, и для Северного Курдского языка вы должны использовать ku-Latn, а не kmr-Latn. Однако, база данных CLDR не использует расширенные language subtags, поэтому вы должны использовать для Кантонского диалекта yue, а не zh-yue.
Скриптовые subtags должны использоваться только как часть language тега, когда скрипт добавляет некоторую полезную информацию к тегу. Как правило, это происходит потому, что язык написан на нескольких скриптах или потому, что контент был переписан в необычный для языка скрипт (так можно было бы тег Russian превратить в Латинский скрипт с помощью такого тега как ru-Latn).
Скриптовые subtags состоят из 4 букв, и должно идти за любым language или расширенным language subtag, но перед любыми другими subtags.
Вот вещи на которые следует обратить внимание при выборе скриптового subtag.
Скриптовый subtag Zxxx можно использовать для неписьменного контента, например uz-Zxxx, как и Zxxx есть Кодом для неписаных документов, но опять же это полезно только, если такая разница понятна.
Suppress-Script: Latn
который означает, что вы не должны использовать Latn (Латинский) скриптовый subtag с этим языком.
Это потому, что почти все Английские документы пишутся на Латинском скрипте, и это не добавляет отличительной информации. Однако, если документы были написаны на Английском языке смешивая Латинский скрипт с другим скриптом, таким как скрипт Брайля (Brai), то было бы целесообразным указать, оба скрипта, чтобы помочь в выборе контента (например, для применения правил стиля).
Однако следует отметить, что не все language subtags, которые тесно связаны с обусловленным скриптом имеют поля suppress-script. Если нет поля suppress-script, то использовать скрипт вам не нужно.
Региональные subtags ассоциируют language subtag, что вы выбрали с конкретным регионом мира. Региональные subtags должны идти после любых language или скриптовых subtags.
Как и скриптовые subtags, вы должны использовать региональный subtag только тогда, когда он вносит информацию, которая необходима в конкретном контексте, чтобы отличить этот language тег от другого; В противном случае оставьте его.
Например, en-GB может быть полезным различие для проверки орфографии, но региональный subtag в ja-JP вряд ли будет полезным, если вы намеренно сравниваете язык с Японской разговорным в других частях света.
Есть два типа региональных subtag: 2-буквенные коды и 3-цифровые коды. Последние, как правило для определения многонациональных регионов, а не для отдельных стран. Например, es-ES означает Испанский язык, на котором говорят в Испании, в то время как es-419 означает Испанский язык на котором говорят в Латинской Америке.
Избегайте устаревших subtags. Убедитесь, что subtag, который вы собираетесь использовать не является устаревшим. Равно как и для других типов subtag, реестр, как правило, должен сказать какая замена должна осуществляться через поле Preferred-Value.
В некоторых случаях в устаревших записях нет поля Preferred-Value, но иногда поле Comments содержит совет. Например, под YU (Югославия) вы найдете:
Deprecated: 2003-07-23 Comments: see BA, HR, ME, MK, RS, or SI
Опять же, используйте вариантные subtags только тогда, когда есть необходимость отличить этот language тэг от другого похожего в контексте, в котором используется ваш контент.
Вариантные subtags описывают дополнительные различия, которые не находят отражения в других subtags. Обычно это диалекты, письменные изменения (например, реформы правописания), транскрипция и т.д.. Вариантные Subtag, как правило, от 5 до 8 символов и может содержать буквы и/или цифры. Также зарегистрированы несколько четырехзначных subtags (как правило, представляют год). Вариантные subtags должны идти после любых language, скриптовых и региональных subtags.
Главное на, что следует обратить внимание при использовании вариантных subtags это порядок, в котором они используются.
Проверка контекста и упорядочение для вариантных subtags. В системном реестре большинство записей вариантных subtag имеют одно или несколько полей Prefix. Префиксы указывают, с которыми subtags, как правило, целесообразно использовать этот вариант. Например, pinyin как правило, должны использоваться в language тэге, который содержит также оба subtags zh и Latn или subtags bo и Latn, с момента входа pinyin содержит следующее:
Prefix: zh-Latn Prefix: bo-Latn
Если у вас есть веская причина, вы можете использовать вариантный subtag с различными subtags, например cmn-Latn-pinyin будет отличным способом указать Мандаринский язык написанный с помощью Пиньинь.
Хотя и zh, bo и Latn указаны, это является минимальным требованием. Кроме того, можно включить другие subtags, такие как региональный subtag в language тэг (при необходимости), например zh-Latn-TW-pinyin.
Среди других prefix полей, вход для вариантного subtag 1994 содержит
Prefix: sl-rozaj-biske
что указывает, что он используется в language тэге, который уже содержит два других вариантных subtags, rozaj и biske. Любой вариантный subtag, указанный в поле prefix должен предшествовать варианту, который вы только что посмотрели.
Есть несколько вариантных subtags, которые не имеют поля prefix, например fonipa (Международный Фонетический Алфавит). Такие варианты должны появиться после любых других вариантных subtags, содержащие prefix информацию.
Если вы планируете несколько вариантов без prefix, упорядочивайте их с точки зрения уменьшения значения. Если они имеют одинаковые значения, то упорядочивайте их в алфавитном порядке. Это будет способствовать взаимодействию.
Эти односимвольные subtags позволяют расширения для language тега. На сегодняшний день зарегистрирован только один subtag расширения. Subtag u был зарегистрирован Unicode Консорциумом, чтобы добавлять информацию о языке или поведение локали. Многие идентификаторов локали требуют дополнительных "настроек" или опций для конкретных значений в пределах языка, культуры, региона, или других вариаций. Это расширение предоставляет механизм для использования этих дополнительных настроек в language тэге для общего обмена.
Например, следующее означает, что порядок сопоставления телефонной книги должен использоваться приложением, что сортирует данные в документе и должен сортироваться согласно этому порядку сортировки, и так далее.
Расширение u- определенное в RFC 6067, что указывает на Unicode Consortium's Common Locale Data Repository (Общее Вместилище Данных Локали Unicode Консорциума (CLDR)) для получения детальной информации о subtags, идущие вслед за ним. Оно не определяется BCP 47.
Подробнее читайте в BCP 47 спецификации:
Subtags частного использования не появляются в реестре subtag, а также избираются и поддерживаются частным соглашением между сторонами, которые их используют. Они представлены с помощью однобуквенного subtag, или 'singleton'(одиночка (шаблон проектирования)). x - singleton для частного использования. Заметьте, что все subtags после singleton могут иметь только 8 символов, хотя вы можете использовать несколько subtags.
Использовать subtags частного использования следует с большой осторожностью, и по возможности избегать, так как они мешают взаимодействию, которому способствует BCP 47.
Как пример subtag частного использования, en-US-x-twain, может идентифицировать определенный тип Американского варианта Английского языка, но только в пределах закрытого сообщества. На его значение нельзя полагаться вне этого частного соглашения.
Подробнее читайте в BCP 47 спецификации:
Grandfathered (одобренные) теги - особые случаи, внедренные для совместимости. Это тэги, которые были зарегистрированы в RFC 4646, который не мог полностью состоять из subtags в текущем реестре, или не вписывается в синтаксис, что в настоящее в время определен для language тегов.
Почти все одобренные теги в реестре были заменены subtags или комбинациями subtags. Такие одобрены теги сейчас устарели, и обычно содержат поле Preferred-Value, указывающее, как вы должны представлять тот язык. Например, запись в реестре для одобренного тэга art-lojban означает, что вы должны использовать language subtag jbo.
Обратите внимание, что вы не должны использовать дополнительные subtags с одобренным тегом.
Розкажіть нам про те, що Ви думаєте.
Підписатися на RSS джерело.
Twitter (Новини головної сторінки)
Переклад Англійського контенту від 2011-02-22. Переклад останнього оновлення 2011-07-10 12:00 GMT
Для перегляду історії внесення змін до перекладу натисність qa-choosing-language-tags в блоге i18n.
Copyright © 2009-2011 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply. Your interactions with this site are in accordance with our public and Member privacy statements.