Вибір 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 з схваленим тегом.