Прискорююча кнопка 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.