Описание формата FB2 от Sclex
Содержание
- 1 Общая структура документа
- 2 Первая строка документа
- 3 Раздел FictionBook
- 4 Поля раздела description
- 5 Тело документа (структура разделов body и section)
- 6 Форматированный текст
- 7 Пустые строки
- 8 Жирный и курсивный
- 9 Описание заголовков
- 10 Подзаголовки
- 11 Оформление стихов
- 12 Эпиграфы
- 13 Цитированный текст
- 14 Автор цитаты
- 15 Картинки
- 16 Ссылки
- 17 Оформление примечаний (footnotes)
- 18 Вложения
- 19 Юникодные символы
- 20 Значения жанров книги
- 21 Языки документа
Общая структура документа
FB2-документ состоит из стандартной строки, формат которой описан в следующей главе данного описания, и раздела <FictionBook>.
Раздел FictionBook состоит из таких подразделов в указанном ниже порядке:
- <description> ? который описывает заголовок документа. Одно и только одно вхождение. (фразы вроде "одно и только одно вхождение" говорят, сколько раз подряд может идти данный тэг в данном месте документа)
- <body> ? описывает тело документа. Одно или более вхождений.
- <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> состоит из перечисленных ниже частей в указанном порядке:
- <title-info> ? данные о книге. Одно и только одно вхождение.
- <src-title-info> ? данные об исходнике книги (до перевода). От нуля до одного вхождений.
- <document-info> ? информация об FB2-документе. Одно и только одно вхождение.
- <publish-info> ? сведения об издании книги, которая была использована как источник при подготовке документа. От нуля до одного вхождений.
- <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> могут идти в указанном порядке:
- Картинка <image/>, которая будет отображаться вверху раздела. От нуля до одного вхождений.
- Заголовок <title>. От нуля до одного вхождений.
- Эпиграф <epigraph>. Любое число вхождений.
- Раздел <section>. Любое число вхождений.
Откуда видно, что ни один подраздел не является обязательным.
Для раздела <section> имя описывается свойством id. Например так:
<section id="note33">
Раздел <section> состоит из следующих частей в указанном порядке:
- Заголовок <title>. От нуля до одного вхождений.
- Эпиграф <epigraph>. Любое число вхождений.
- Картинка <image/>, которая будет отображаться вверху раздела. От нуля до одного вхождений.
- Аннотация <annotation>, описывающая раздел. От нуля до одного вхождений.
- Либо подраздел <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>. Он может нести внутри себя следующие части в указанном порядке:
- Заголовок <title>. От нуля до одного вхождений.
- Эпиграф <epigraph>. Любое число вхождений.
- Строфы <stanza>. Одно или более вхождений. Строфа <stanza> ? это группа строк стихотворения, отделенная пустым промежутком от остальных строк. Отдельная строка стихотворения помечается тэгом <v>, который должен быть вложен в <stanza>.
- Автор стихотворения <text-author>. Любое число вхождений.
- Дата написания <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, надо написать так:
≠
Значения жанров книги
Здесь перечислены значения, которые принимает поле <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"