Описание формата FB2 от Sclex

Материал из FictionBook
Перейти к: навигация, поиск

Общая структура документа

FB2-документ состоит из стандартной строки, формат которой описан в следующей главе данного описания, и раздела <FictionBook>.

Раздел FictionBook состоит из таких подразделов в указанном ниже порядке:

  1. <description> ? который описывает заголовок документа. Одно и только одно вхождение. (фразы вроде "одно и только одно вхождение" говорят, сколько раз подряд может идти данный тэг в данном месте документа)
  2. <body> ? описывает тело документа. Одно или более вхождений.
  3. <binary> ? содержит приложенные к файлу двоичные объекты ? картинки и прочее. Любое число вхождений.

Иными словами, присутствуют как минимум разделы <description> с <body>, а остальное ? по необходимости.

Пример:

<?xml version="1.0" encoding="windows-1251"?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"
  xmlns:l="http://www.w3.org/1999/xlink">
<description>
  ...
</description>
<body>
  ...
</body>
  ...
<body name="notes">
  ...
</body>
<binary id="cover.jpg" content-type="image/jpeg">/9j/4AAQSkZJRgABAgAAZABkAAD/
  ...
</binary>
</FictionBook>


Первая строка документа

Первая строка FB2-документа имеет следующий стандартный для xml-файлов вид:

<?xml version="1.0" encoding="windows-1251"?>

Свойство encoding задает кодировку документа, в нашем случае это windows-1251. А может быть, например, utf-8.

Раздел FictionBook

Этот раздел начинается сразу за первой строкой и открывается таким образом:

<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"
  xmlns:l="http://www.w3.org/1999/xlink">

А закрывается в самом конце FB2-документа.

В xmlns:l вместо l может быть написано и другое имя, главное, чтобы потом оно использовалось в ссылках по всему документу. То есть, если объявлено xmlns:l="http://www.w3.org/1999/xlink", то ссылки надо оформлять как <a l:href=...>...</a>, а если объявлено xmlns:xlink="http://www.w3.org/1999/xlink", то надо так: <a xlink:href=...>...</a>. Аналогично и для ссылок в тэгах <image/>.

Поля раздела description

Раздел <description> состоит из перечисленных ниже частей в указанном порядке:

  1. <title-info> ? данные о книге. Одно и только одно вхождение.
  2. <src-title-info> ? данные об исходнике книги (до перевода). От нуля до одного вхождений.
  3. <document-info> ? информация об FB2-документе. Одно и только одно вхождение.
  4. <publish-info> ? сведения об издании книги, которая была использована как источник при подготовке документа. От нуля до одного вхождений.
  5. <custom-info> ? произвольная информация. Любое число вхождений.

То есть обязательны разделы <title-info> и <document-info>, а остальные добавляются по необходимости.

Рассмотрим пример заполнения его полей (они должны следовать в указанном порядке):

  <description>
  <title-info>
   <genre>sci_medicine</genre>
   <genre>science</genre>
   <author>
    <first-name>Борис</first-name>
    <last-name>Сергеев</last-name>
   </author>
   <book-title>Ум хорошо?</book-title>
   <annotation>
    <p>Об организации высших психических функций.</p>
   </annotation>
   <date value="1984-01-01">1984</date>
   <coverpage><image l:href="#cover.jpg"/></coverpage>
   <lang>ru</lang>
   <src-lang>ru</src-lang>
   <sequence name="Раскрывая тайны психики" number="2"/>
  </title-info>
  <document-info>
   <author>
    <nickname>Sclex</nickname>
    <email>sclex_at_inbox.ru</email>
   </author>
   <program-used>Dn/2, Opera 8.50, Bred3</program-used>
   <date value="2006-05-21">2006-05-21</date>
   <id>91824ABE-EEF7-48C3-AAAA-A719EFC4824A</id>
   <version>1.1</version>
   <history>
     <p>1.0 - подготовка fb2 by Sclex</p>
     <p>1.1 - вычитка ошибок by Sclex</p>
   </version>
  </document-info>
  <publish-info>
   <book-name>Борис Федорович Сергеев. Ум хорошо?</book-name>
   <publisher>Молодая гвардия</publisher>
   <city>М.</city>
   <year>1984</year>
  </publish-info>
 </description>

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

Внутри раздела <title-info>:

<genre> ? указывает жанр книги. Список возможных значений приведен в соответствующем разделе данного описания. Любое число вхождений, то есть книга может относиться к нескольким жанрам одновременно. В нашем примере это sci_medicine и science, то есть книга относится к жанрам "Медицина" и "Научно-образовательная: Прочее".

<author> ? содержит информацию об авторе книги. Возможны такие вложенные тэги как <first-name> ? имя, <last-name> ? фамилия, <middle-name> ? отчество, <nick> ? ник, и <email> ? адрес электронной почты. Одно или более вхождений, так как может быть несколько авторов у одной книги. В нашем примере определены имя Борис и фамилия Сергеев.

<book-title> ? описывает название книги. Одно и только одно вхождение. В нашем примере книга называется "Ум хорошо?".

<annotation> ? аннотация книги. Возможны в любом количестве и порядке следующие вложенные тэги: <p>, <poem>, <cite>, <subtitle>, <table>, <empty-line/> с соответствующим содержанием. От нуля до одного вхождения.

<keywords> ? содержит ключевые слова к данной книге для поисковых систем. Слова должны быть в виде неформатированного текста. От нуля до одного вхождения.

<date> ? хранит дату написания книги. В свойстве value дата описывается в формате ГГГГ-ММ-ДД, а внутри тэга дата задается в текстовом виде. От нуля до одного вхождения. В нашем примере свойство value имеет значение 1984-01-01, то есть первое января 1984-го года, а внутри тэга прописано значение 1984.

<coverpage> ? обложка книги. Внутри может содержать только тэг <image/>. От нуля до одного вхождения. В нашем примере ссылка указывает на картинку cover.jpg, приложенную к документу (значок # говорит, что эта ссылка локальная, то есть адресует в пределах документа).

<lang> ? сообщает язык книги в документе, то есть язык после перевода. Одно и только одно вхождение. В нашем примере это ru, то есть русский язык. Полный список кодов приведен в соответствующем разделе данного описания.

<src-lang> ? определяет язык, на котором исходно написана книга, то есть язык до перевода. От нуля до одного вхождений. Те же коды, что для тэга <lang>. В нашем примере это ru, то есть русский язык. Английскому языку соответствует код en.

<translator> ? информация о переводчике книги. Возможны такие вложенные тэги как <first-name> ? имя, <last-name> ? фамилия, <middle-name> ? отчество, <nick> ? ник, и <email> ? адрес электронной почты. Любое число вхождений.

<sequence> ? сведения о том, к каким сериям относится книга. Имеет такие свойства, как name (текстовая строка) ? название серии, и number (целое число) ? порядковый номер книги в серии. Любое число вхождений. В нашем примере описана серия "Раскрывая тайны психики", и указан номер книги в серии ? вторая.

Внутри раздела <document-info>:

<author> ? содержит информацию об авторе документа. Возможны такие вложенные тэги как <first-name> ? имя, <last-name> ? фамилия, <middle-name> ? отчество, <nick> ? ник, и <email> ? адрес электронной почты. Одно или более вхождений. В нашем примере определены ник Sclex и адрес электронной почты sclex_at_inbox.ru.

<program-used> ? в виде простого перечисляет программы, использованные при создании FB2-документа. От нуля до одного вхождений. В нашем примере это Dn/2, Opera 8.50 и Bred3.

<date> ? хранит дату создания документа. В свойстве value дата описывается в формате ГГГГ-ММ-ДД, а внутри тэга дата задается в текстовом виде. Одно и только одно вхождение. В нашем примере свойство value имеет значение 2006-05-21, то есть 21-е мая 2006-го года, и такое же значение прописано внутри тэга.

<src-url> ? URL страницы, откуда взят текст для подготовки документа. Любое число вхождений.

<src-ocr> ? автор текста, который был использован при подготовке документа. Но не тот автор, который написал книгу, а тот, который сканировал ее и подготовил электронный текст. От нуля до одного вхождений.

<id> ? уникальный идентификатор документа FB2. Каждый отдельный FB2-документ должен иметь собственный ID, отличающийся от ID других документов. Данный идентификатор имеет произвольный вид, то есть его содержание никак не ограничивается. Одно и только одно вхождение.

<version> ? версия документа в текстовом виде. Описывается дробным числом. Одно и только одно вхождение. В нашем случае ? 1.1.

<history> ? история создания и изменения документа. Содержит форматированный текст. Возможны в любом количестве и порядке следующие вложенные тэги: <p>, <poem>, <cite>, <subtitle>, <table>, <empty-line/> с соответствующим содержанием. От нуля до одного вхождений.

Внутри тэга <publish-info>:

<book-name> ? название оригинальной (бумажной) книги. От нуля до одного вхождений. В примере это "Борис Федорович Сергеев. Ум хорошо?".

<publisher> ? название издательства. От нуля до одного вхождений. В примере ? Молодая гвардия.

<city> ? город, в котором издана книга. От нуля до одного вхождений. В нашем случае это М., то есть Москва.

<year> ? год издания книги. От нуля до одного вхождений. В нашем случае ? 1984.

Тело документа (структура разделов body и section)

Тэг <body> предназначен для описания собственно тела документа. Этот тэг может иметь свойство name, которое описывает имя раздела. Например:

<body name="notes">

Внутри раздела <body> могут идти в указанном порядке:

  1. Картинка <image/>, которая будет отображаться вверху раздела. От нуля до одного вхождений.
  2. Заголовок <title>. От нуля до одного вхождений.
  3. Эпиграф <epigraph>. Любое число вхождений.
  4. Раздел <section>. Любое число вхождений.

Откуда видно, что ни один подраздел не является обязательным.

Для раздела <section> имя описывается свойством id. Например так:

<section id="note33">

Раздел <section> состоит из следующих частей в указанном порядке:

  1. Заголовок <title>. От нуля до одного вхождений.
  2. Эпиграф <epigraph>. Любое число вхождений.
  3. Картинка <image/>, которая будет отображаться вверху раздела. От нуля до одного вхождений.
  4. Аннотация <annotation>, описывающая раздел. От нуля до одного вхождений.
  5. Либо подраздел <section> (любое число вхождений), либо форматированный текст с картинками (любое число вхождений).

Следовательно ни один подраздел не является обязательным.

Разделов <body> в документе может быть несколько. Это используется, например, для оформления примечаний (footnotes). По умолчанию пользователю показывается первый раздел <body>, а содержание остальных должно быть доступно по гиперссылкам. Имя раздела должно отражать смысл его содержания, но для основного раздела это необязательно.

Разделы <section> должны иметь вложенную структуру согласно иерархии оглавления. Например, если документ делится на части, которые в свою очередь делятся на главы, то части будут будут описаны в разделе <section> первого уровня, а главы ? в подразделе второго уровня. Проще понять это на примере:

<body>
  <title><p>Борис Сергеев</p><p>Парадоксы мозга</p></title>
  <section>
    <title><p>Часть 1. Великие невежды.</p></title>
    <section>
      <title><p>Глава 1. Во тьме веков.</p></title>
      <p>Когда люди стали о себе задумываться? ...</p>
      ...
    </section>
  </section>
</body>

Принято названия глав писать маленькими буквами, начиная с большой.

Еще принято кроме того, что указано в заголовке, давать имя автора и название книги в тексте документа до того, как открывается <section> первого уровня, то есть в <title>, относящемся к <body>. Это видно из вышеприведенного примера.

Форматированный текст

Форматированный текст представляет собой последовательность фрагментов, ограниченных тэгами <p>, <poem>, <subtitle>, <cite>, <table>. Также могут входить пустые строки ? <empty-line/>.

Тэг <p> предназначен для описания одного абзаца текста книги.

Например:

<p>Вот абзац текста.</p>
<p>Еще один абзац текста.</p>


Пустые строки

Если нужно в форматированном тексте вставить пустую строку, это делается с помощью тэга <empty-line/>. Один такой тэг ? одна пустая строка. Закрывающий тэг в данном случае не требуется.

Например:

<p>Абзац до пустой строки.</p>
<empty-line/>
<p>А вот это уже абзац после пустой строки.</p>

Жирный и курсивный

Для форматированного текста, то есть внутри тэгов <p>, <poem>, <subtitle>, <table> возможно описать текст как жирный или курсивный. Жирный текст следует выделить тэгом <strong>, а курсивный ? тэгом <emphasis>.

Например:

<p>Вот это слово выведем <strong>жирным</strong>,
а вот это ? <emphasis>курсивным</emphasis>.</p>


Описание заголовков

Заголовки описываются тэгом <title>, который содержит в себе форматированный текст. Тэг <title> может быть вложенным в тэги <body> и <section>, причем более одного заголовка в разделе не допускается, а может его и не быть вовсе.

Пример:

<title>
 <p>От Александрии до Лондона</p>
</title>


Подзаголовки

Подзаголовки описываются тэгом <subtitle>, который содержит простой (неформатированный) текст. Тэг <subtitle> может быть вложенным в тэги <body> и <section>.

Обычно описание подзаголовка выглядит так:

<subtitle>* * *<subtitle>

Подзгаловком, в отличие от нормального заголовка, оформляется элемент оглавления, незначимый для структуры документа. Обычно это те самые три звездочки или x x x.


Оформление стихов

Чтобы разместить стихотворение в тексте документа, используют тэг <poem>. Он может нести внутри себя следующие части в указанном порядке:

  1. Заголовок <title>. От нуля до одного вхождений.
  2. Эпиграф <epigraph>. Любое число вхождений.
  3. Строфы <stanza>. Одно или более вхождений. Строфа <stanza> ? это группа строк стихотворения, отделенная пустым промежутком от остальных строк. Отдельная строка стихотворения помечается тэгом <v>, который должен быть вложен в <stanza>.
  4. Автор стихотворения <text-author>. Любое число вхождений.
  5. Дата написания <date>. От нуля до одного вхождений.

Например, стихотворение из двух строф:

Наша Таня громко плачет,

Уронила в речку мячик.


Тише, Танечка, не плачь,

Не утонет в речке мяч.

Следует разметить таким образом:

<poem><stanza><v>Наша Таня громко плачет,</v>
<v>Уронила в речку мячик.</v></stanza>
<stanza><v>Тише, Танечка, не плачь,</v>
<v>Не утонет в речке мяч.</v></stanza></poem>

Эпиграфы

Для оформления эпиграфов предусмотрен тэг <epigraph>, который должен содержать внутри себя форматированный текст (любое число вхождений), а затем автора текста (тоже любое число вхождений).

Пример:

<epigraph>
   <p>Читателям, которые станут доискиваться, какие реальные
   люди и места описаны здесь под вымышленными именами и названиями,
   я бы посоветовал посмотреть вокруг себя и заглянуть в собственную душу,
   так как в этом романе рассказано о том, что происходит сегодня почти
   во всей Америке.</p>
</epigraph>


Цитированный текст

Для разметки цитированного текста существует тэг <cite>, который может содержать форматированный текст (любое число вхождений), а затем автора цитаты (любое число вхождений).

Пример:

<cite>
  <p>Время ? деньги.<p>
  <text-author>Бенджамин Франклин</text-author>
</cite>


Автор цитаты

Внутри тэгов <poem>, <cite> и <epigraph> возможно указать автора соответственно стихотворения, цитаты или эпиграфа. Для этого служит тэг <text-author>. Этот тэг должен стоять в самом конце родительского тэга, то есть непосредственно перед его закрытием. Допускается любое число вхождений тэга <text-author>.

Вот пример:

<epigraph>
  <p>Кажется, знаешь о себе все, так нет.
  Находятся люди, которые знают о тебе больше.</p>
  <text-author>В. Андреев</text-author>
</epigraph>


Картинки

Картинки вставляются с помощью тэга <image/> (закрывающий тэг не требуется). Свойство href указывает на адрес картинки. Если адрес картинки начинается с символа # (решетка), то картинка находится внутри документа.

Пример:

<image l:href="#cover.jpg"/>

В этом примере в текст вставляется картинка cover.jpg, приложенная к документу (на что указывает символ решетки перед именем).


Ссылки

Ссылки вставляются с помощью тэга <a>. Свойство href определяет адрес ссылки. Адреса с символа # (решетка) задают расположение внутри документа.

Примеры:

<a l:href="#n1" type="note">[1]</a>

В этом примере текстом ссылки будет [1], а указывать она будет на раздел с идентификатором n1 внутри документа.

В l:href вместо l может быть и другой идентификатор, подробнее это описано в разделе "Раздел FictionBook".


Оформление примечаний (footnotes)

Примечания должны находиться в специальном разделе <body>, поименнованном notes, то есть описан он должен быть как <body name="notes">. Каждое примечание должно находиться в отдельном разделе <section> и иметь уникальный id, по которому оно будет доступно в ссылках. Вот типичный пример оформления тела примечаний:

 <body name="notes">
  <title><p>Примечания</p></title>
  <section id="note1">
   <title>
    <p>1</p>
   </title>
   <p>Известный английский архитектор XVIII века, испытавший в
   своем творчестве сильное влияние античной архитектуры. (Здесь и
   далее прим. ред.)</p>
  </section>
  <section id="note2">
   <title>
    <p>2</p>
   </title>
   <p>Американский просветитель, живший в XVIII веке</p>
  </section>
 </body>

Ссылка на примечание должна иметь свойство type, равное значению "note". Соответствующая размещенному выше примеру ссылка на первое примечание будет выглядеть таким образом:

в стиле Роберта Адама <a l:href="#note1" type="note">[1]</a>


Вложения

К документу FB2 могут быть приложены файлы, например картинки или что-нибудь другое. (Библиотека, правда, не примет файлы с иными вложениями, чем картинки).

Вот пример вложения:

<binary id="cover.jpg" content-type="image/jpeg">
AQMAEAMDBgkAAA/tAAAe7gAANHz/2wCEAAgGBgYGBggGBggMCAcIDA4KCAgKDhANDQ4NDRAR
DA4NDQ4MEQ8SExQTEg8YGBoaGBgjIiIiIycnJycnJycnJycBCQgICQoJCwkJCw4LDQsOEQ4O
...
h9x8OJ/B/c+gfbXM/wDQ/qcPZ9HHjqaPi17zZ4+6deEYNxtP+H1v8Opsec//2Q==</binary>

Свойство id описывает идентификатор (имя) двоичного объекта, а свойство content-type ? MIME-тип вложения. Внутри тэга <binary> находится файл, закодированный по методу BASE64.

Чтобы библиотека приняла файл, нужно чтобы в документе не было приложенных объектов, на которые нет ссылки, и чтобы не было ссылок, которые указывают на двоичные объекты, не приложенные к файлу.

Из картинок поддерживаются форматы JPG (тип image/jpeg) и PNG (тип image/png). Поддержка формата GIF отсутствует. Файл обложки обычно принято называть cover.jpg.


Юникодные символы

В текст можно вставлять символы по их коду таблице Unicode. Для этого нужно написать значок &, потом значок #, потом десятичный код символа, потом точку с запятой.

Например для значка ? (не равно) ? код 8800, надо написать так:

&#8800;

Значения жанров книги

Здесь перечислены значения, которые принимает поле <genre> в заголовке FB2-документа.

Далее перечислены значения, которые принимает поле <genre> в заголовке FB2-документа.

sf_history              Альтернативная история
sf_action               Боевая Фантастика
sf_epic                 Эпическая Фантастика
sf_heroic               Героическая фантастика
sf_detective            Детективная Фантастика
sf_cyberpunk            Киберпанк
sf_space                Космическая Фантастика
sf_social               Социальная фантастика
sf_horror               Ужасы и Мистика
sf_humor                Юмористическая фантастика
sf_fantasy              Фэнтези
sf                      Научная Фантастика
child_sf                Детская Фантастика
det_classic             Классический Детектив
det_police              Полицейский Детектив
det_action              Боевики
det_irony               Иронический Детектив
det_history             Исторический Детектив
det_espionage           Шпионский Детектив
det_crime               Криминальный Детектив
det_political           Политический Детектив
det_maniac              Маньяки
det_hard                Крутой Детектив
thriller                Триллеры
detective               Детектив
sf_detective            Детективная Фантастика
child_det               Детские Остросюжетные
love_detective          Остросюжетные Любовные Романы
prose                   Проза
prose_classic           Классическая Проза
prose_history           Историческая Проза
prose_contemporary      Современная Проза
prose_counter           Контркультура
prose_rus_classic       Русская Классика
prose_su_classics       Советская Классика
humor_prose             Юмористическая Проза
child_prose             Детская Проза
love                    Любовные романы
love_contemporary       Современные Любовные Романы
love_history            Исторические Любовные Романы
love_detective          Остросюжетные Любовные Романы
love_short              Короткие Любовные Романы
love_erotica            Эротика
adv_western             Вестерны
adv_history             Исторические Приключения
adv_indian              Приключения: Индейцы
adv_maritime            Морские Приключения
adv_geo                 Путешествия и География
adv_animal              Природа и Животные
adventure               Приключения: Прочее
child_adv               Детские Приключения
children                Детское
child_tale              Сказки
child_verse             Детские Стихи
child_prose             Детская Проза
child_sf                Детская Фантастика
child_det               Детские Остросюжетные
child_adv               Детские Приключения
child_education         Детская Образовательная литература
children                Детское: Прочее
poetry                  Поэзия
dramaturgy              Драматургия
humor_verse             Юмористические Стихи
child_verse             Детские Стихи
antique_ant             Античная Литература
antique_european        Европейская Старинная Литература
antique_russian         Древнерусская Литература
antique_east            Древневосточная Литература
antique_myths           Мифы. Легенды. Эпос
antique                 Старинная Литература: Прочее
sci_history             История
sci_psychology          Психология
sci_culture             Культурология
sci_religion            Религиоведение
sci_philosophy          Философия
sci_politics            Политика
sci_business            Деловая литература
sci_juris               Юриспруденция
sci_linguistic          Языкознание
sci_medicine            Медицина
sci_phys                Физика
sci_math                Математика
sci_chem                Химия
sci_biology             Биология
sci_tech                Технические
science                 Научно-образовательная: Прочее
adv_animal              Природа и Животные
comp_www                Интернет
comp_programming        Программирование
comp_hard               Компьютерное Железо
comp_soft               Программы
comp_db                 Базы Данных
comp_osnet              ОС и Сети
computers               Компьютеры: Прочее
ref_encyc               Энциклопедии
ref_dict                Словари
ref_ref                 Справочники
ref_guide               Руководства
reference               Справочная Литература: Прочее
nonf_biography          Биографии и Мемуары
nonf_publicism          Публицистика
nonf_criticism          Критика
nonfiction              Документальное: Прочее
design                  Искусство, Дизайн
adv_animal              Природа и Животные
religion                Религия
religion_rel            Религия
religion_esoterics      Эзотерика
religion_self           Самосовершенствование
religion                Религия и духовность: Прочее
sci_religion            Религиоведение
humor_anecdote          Анекдоты
humor_prose             Юмористическая Проза
humor_verse             Юмористические Стихи
humor                   Юмор: Прочее
home_cooking            Кулинария
home_pets               Домашние Животные
home_crafts             Хобби, Ремесла
home_entertain          Развлечения
home_health             Здоровье
home_garden             Сад и Огород
home_diy                Сделай Сам
home_sport              Спорт
home_sex                Эротика, Секс
home                    Дом и Семья: Прочее

Языки документа

Ниже приведены коды языков, которые можно прописывать в тэгах <lang> и <src-lang>. Например, волапюк это vo.

Основные кодировки (самые частые):

eng      en    Английский
bel      be    Белорусский
bul      bg    Болгарский
hun      hu    Венгерский
dut/nla  nl    Голландский
ell/gre  el    Греческий современный (1453-)
dan      da    Данийский
grc            Древнегреческий (до 1453)
heb      he    Иврит
ita      it    Итальянский
deu/ger  de    Немецкий
pol      pl    Польский
por      pt    Португальский
rus      ru    Русский
slk/slo  sk    Словакский
slv      sl    Словенский
tur      tr    Турецкий
ukr      uk    Украинский
fin      fi    Финский
fra/fre  fr    Французский
ces/cze  cs    Чешский
jpn      ja    Японский

Остальные кодировки:

abk      ab    Abkhazian
ace            Achinese
ach            Acoli
ada            Adangme
aar      aa    Afar
afh            Afrihili
afr      af    Afrikaans
afa            Afro-Asiatic (Other)
aka            Akan
akk            Akkadian
alb/sqi  sq    Albanian
ale            Aleut
alg            Algonquian languages
tut            Altaic (Other)
amh      am    Amharic
apa            Apache languages
ara      ar    Arabic
arc            Aramaic
arp            Arapaho
arn            Araucanian
arw            Arawak
arm/hye  hy    Armenian
art            Artificial (Other)
asm      as    Assamese
ath            Athapascan languages
map            Austronesian (Other)
ava            Avaric
ave            Avestan
awa            Awadhi
aym      ay    Aymara
aze      az    Azerbaijani
nah            Aztec
ban            Balinese
bat            Baltic (Other)
bal            Baluchi
bam            Bambara
bai            Bamileke languages
bad            Banda
bnt            Bantu (Other)
bas            Basa
bak      ba    Bashkir
baq/eus  eu    Basque
bej            Beja
bem            Bemba
ben      bn    Bengali
ber            Berber (Other)
bho            Bhojpuri
bih      bh    Bihari
bik            Bikol
bin            Bini
bis      bi    Bislama
bra            Braj
bre      be    Breton
bug            Buginese
bua            Buriat
bur/mya  my    Burmese
cad               Caddo
car            Carib
cat      ca    Catalan
cau            Caucasian (Other)
ceb            Cebuano
cel            Celtic (Other)
cai            Central American Indian (Other)
chg            Chagatai
cha            Chamorro
che            Chechen
chr            Cherokee
chy            Cheyenne
chb            Chibcha
chi/zho  zh    Chinese
chn            Chinook jargon
cho            Choctaw
chu            Church Slavic
chv            Chuvash
cop            Coptic
cor            Cornish
cos        co    Corsican
cre              Cree
crp            Creoles and Pidgins (Other)
cpe            Creoles and Pidgins, English-based (Other)
cpf            Creoles and Pidgins, French-based (Other)
cpp            Creoles and Pidgins, Portuguese-based (Other)
cus            Cushitic (Other)
         hr    Croatian
dak            Dakota
del            Delaware
din            Dinka
div            Divehi
doi            Dogri
dra            Dravidian (Other)
dua            Duala
dum            Dutch, Middle (ca. 1050-1350)
dyu            Dyula
dzo      dz    Dzongkha
efi            Efik
eka            Ekajuk
elx            Elamite
enm            English, Middle (ca. 1100-1500)
ang            English, Old (ca. 450-1100)
esk            Eskimo (Other)
epo      eo    Esperanto
est      et    Estonian
ewe            Ewe
ewo            Ewondo
fan            Fang
fat            Fanti
fao      fo    Faroese
fij      fj    Fijian
fiu            Finno-Ugrian (Other)
fon            Fon
frm            French, Middle (ca. 1400-1600)
fro            French, Old (842- ca. 1400)
fry      fy    Frisian
ful            Fulah
gaa            Ga
gae/gdh  Gaelic (Scots)
glg      gl    Gallegan
lug            Ganda
gay            Gayo
gez            Geez
geo/kat  ka    Georgian
gmh            German, Middle High (ca. 1050-1500)
goh            German, Old High (ca. 750-1050)
gem            Germanic (Other)
gil            Gilbertese
gon            Gondi
got            Gothic
grb            Grebo
kal      kl    Greenlandic
grn      gn    Guarani
guj      gu    Gujarati
hai            Haida
hau      ha    Hausa
haw            Hawaiian
her            Herero
hil            Hiligaynon
him            Himachali
hin      hi    Hindi
hmo            Hiri Motu
hup            Hupa
iba            Iban
ice/isl  is    Icelandic
ibo            Igbo
ijo            Ijo
ilo            Iloko
inc            Indic (Other)
ine            Indo-European (Other)
ind      id    Indonesian
ina      ia    Interlingua (International Auxiliary language Association)
ine      -     Interlingue
iku      iu    Inuktitut
ipk      ik    Inupiak
ira            Iranian (Other)
gai/iri  ga    Irish
sga            Irish, Old (to 900)
mga            Irish, Middle (900 ? 1200)
iro            Iroquoian languages
jav/jaw  jv/jw Javanese
jrb            Judeo-Arabic
jpr            Judeo-Persian
kab            Kabyle
kac            Kachin
kam            Kamba
kan      kn    Kannada
kau            Kanuri
kaa            Kara-Kalpak
kar            Karen
kas      ks    Kashmiri
kaw            Kawi
kaz      kk    Kazakh
kha            Khasi
khm      km    Khmer
khi            Khoisan (Other)
kho            Khotanese
kik            Kikuyu
kin      rw    Kinyarwanda
kir      ky    Kirghiz
kom            Komi
kon            Kongo
kok            Konkani
kor      ko    Korean
kpe            Kpelle
kro            Kru
kua            Kuanyama
kum            Kumyk
kur      ku    Kurdish
kru            Kurukh
kus            Kusaie
kut            Kutenai
lad            Ladino
lah            Lahnda
lam            Lamba
oci      oc    Langue d'Oc (post 1500)
lao      lo    Lao
lat      la    Latin
lav      lv    Latvian
ltz            Letzeburgesch
lez            Lezghian
lin      ln    Lingala
lit      lt    Lithuanian
loz            Lozi
lub            Luba-Katanga
lui            Luiseno
lun            Lunda
luo            Luo (Kenya and Tanzania)
mac/mak  mk    Macedonian
mad            Madurese
mag            Magahi
mai            Maithili
mak            Makasar
mlg      mg    Malagasy
may/msa  ms    Malay
mal            Malayalam
mlt      ml    Maltese
man            Mandingo
mni            Manipuri
mno            Manobo languages
max            Manx
mao/mri  mi    Maori
mar      mr    Marathi
chm            Mari
mah            Marshall
mwr            Marwari
mas            Masai
myn            Mayan languages
men            Mende
mic            Micmac
min            Minangkabau
mis            Miscellaneous (Other)
moh            Mohawk
mol      mo    Moldavian
mkh            Mon-Kmer (Other)
lol            Mongo
mon      mn    Mongolian
mos            Mossi
mul            Multiple languages
mun            Munda languages
nau      na    Nauru
nav            Navajo
nde            Ndebele, North
nbl            Ndebele, South
ndo            Ndongo
nep      ne    Nepali
new            Newari
nic            Niger-Kordofanian (Other)
ssa            Nilo-Saharan (Other)
niu            Niuean
non            Norse, Old
nai            North American Indian (Other)
nor      no    Norwegian
nno            Norwegian (Nynorsk)
nub            Nubian languages
nym            Nyamwezi
nya            Nyanja
nyn            Nyankole
nyo            Nyoro
nzi            Nzima
oji            Ojibwa
ori      or    Oriya
orm      om    Oromo
osa            Osage
oss            Ossetic
oto            Otomian languages
pal            Pahlavi
pau            Palauan
pli            Pali
pam            Pampanga
pag            Pangasinan
pan      pa    Panjabi
pap            Papiamento
paa            Papuan-Australian (Other)
fas/per  fa    Persian
peo            Persian, Old (ca 600 ? 400 B.C.)
phn            Phoenician
pon            Ponape
pra            Prakrit languages
pro            Provencal, Old (to 1500)
pus      ps    Pushto
que      qu    Quechua
roh      rm    Rhaeto-Romance
raj            Rajasthani
rar            Rarotongan
roa            Romance (Other)
ron/rum  ro    Romanian
rom            Romany
run      rn    Rundi
sal            Salishan languages
sam            Samaritan Aramaic
smi            Sami languages
smo      sm    Samoan
sad            Sandawe
sag      sg    Sango
san      sa    Sanskrit
srd            Sardinian
sco            Scots
sel            Selkup
sem            Semitic (Other)
         sr    Serbian
scr      sh    Serbo-Croatian
srr            Serer
shn            Shan
sna      sn    Shona
sid            Sidamo
bla            Siksika
snd      sd    Sindhi
sin      si    Singhalese
sit      -     Sino-Tibetan (Other)
sio            Siouan languages
sla            Slavic (Other)
ssw      ss    Siswant
sog            Sogdian
som      so    Somali
son            Songhai
wen            Sorbian languages
nso            Sotho, Northern
sot      st    Sotho, Southern
sai            South American Indian (Other)
esl/spa  es    Spanish
suk            Sukuma
sux            Sumerian
sun      su    Sudanese
sus            Susu
swa      sw    Swahili
ssw            Swazi
sve/swe  sv    Swedish
syr            Syriac
tgl      tl    Tagalog
tah            Tahitian
tgk      tg    Tajik
tmh            Tamashek
tam      ta    Tamil
tat      tt    Tatar
tel      te    Telugu
ter            Tereno
tha      th    Thai
bod/tib  bo    Tibetan
tig            Tigre
tir      ti    Tigrinya
tem            Timne
tiv            Tivi
tli            Tlingit
tog      to    Tonga (Nyasa)
ton            Tonga (Tonga Islands)
tru            Truk
tsi            Tsimshian
tso      ts    Tsonga
tsn      tn    Tswana
tum            Tumbuka
ota            Turkish, Ottoman (1500 ? 1928)
tuk      tk    Turkmen
tyv            Tuvinian
twi      tw    Twi
uga            Ugaritic
uig      ug    Uighur
umb            Umbundu
und            Undetermined
urd      ur    Urdu
uzb      uz    Uzbek
vai            Vai
ven            Venda
vie      vi    Vietnamese
vol      vo    Volapük
vot            Votic
wak            Wakashan languages
wal            Walamo
war            Waray
was            Washo
cym/wel  cy    Welsh
wol      wo    Wolof
xho      xh    Xhosa
sah            Yakut
yao            Yao
yap            Yap
yid      yi    Yiddish
yor      yo    Yoruba
zap            Zapotec
zen            Zenaga
zha      za    Zhuang
zul         zu    Zulu
zun            Zuni
AA "Afar"
AB "Abkhazian"
AF "Afrikaans"
AM "Amharic"
AR "Arabic"
AS "Assamese"
AY "Aymara"
AZ "Azerbaijani"
BA "Bashkir"
BE "Byelorussian"
BG "Bulgarian"
BH "Bihari"
BI "Bislama"
BN "Bengali" "Bangla"
BO "Tibetan"
BR "Breton"
CA "Catalan"
CO "Corsican"
CS "Czech"
CY "Welsh"
DA "Danish"
DE "German"
DZ "Bhutani"
EL "Greek"
EN "English" "American"
EO "Esperanto"
ES "Spanish"
ET "Estonian"
EU "Basque"
FA "Persian"
FI "Finnish"
FJ "Fiji"
FO "Faeroese"
FR "French"
FY "Frisian"
GA "Irish"
GD "Gaelic" "Scots Gaelic"
GL "Galician"
GN "Guarani"
GU "Gujarati"
HA "Hausa"
HI "Hindi"
HR "Croatian"
HU "Hungarian"
HY "Armenian"
IA "Interlingua"
IE "Interlingue"
IK "Inupiak"
IN "Indonesian"
IS "Icelandic"
IT "Italian"
IW "Hebrew"
JA "Japanese"
JI "Yiddish"
JW "Javanese"
KA "Georgian"
KK "Kazakh"
KL "Greenlandic"
KM "Cambodian"
KN "Kannada"
KO "Korean"
KS "Kashmiri"
KU "Kurdish"
KY "Kirghiz"
LA "Latin"
LN "Lingala"
LO "Laothian"
LT "Lithuanian"
LV "Latvian" "Lettish"
MG "Malagasy"
MI "Maori"
MK "Macedonian"
ML "Malayalam"
MN "Mongolian"
MO "Moldavian"
MR "Marathi"
MS "Malay"
MT "Maltese"
MY "Burmese"
NA "Nauru"
NE "Nepali"
NL "Dutch"
NO "Norwegian"
OC "Occitan"
OM "Oromo" "Afan"
OR "Oriya"
PA "Punjabi"
PL "Polish"
PS "Pashto" "Pushto"
PT "Portuguese"
QU "Quechua"
RM "Rhaeto-Romance"
RN "Kirundi"
RO "Romanian"
RU "Russian"
RW "Kinyarwanda"
SA "Sanskrit"
SD "Sindhi"
SG "Sangro"
SH "Serbo-Croatian"
SI "Singhalese"
SK "Slovak"
SL "Slovenian"
SM "Samoan"
SN "Shona"
SO "Somali"
SQ "Albanian"
SR "Serbian"
SS "Siswati"
ST "Sesotho"
SU "Sudanese"
SV "Swedish"
SW "Swahili"
TA "Tamil"
TE "Tegulu"
TG "Tajik"
TH "Thai"
TI "Tigrinya"
TK "Turkmen"
TL "Tagalog"
TN "Setswana"
TO "Tonga"
TR "Turkish"
TS "Tsonga"
TT "Tatar"
TW "Twi"
UK "Ukrainian"
UR "Urdu"
UZ "Uzbek"
VI "Vietnamese"
VO "Volapuk"
WO "Wolof"
XH "Xhosa"
YO "Yoruba"
ZH "Chinese"
ZU "Zulu"