Compare commits
No commits in common. "1d416be07865b34b5507d6340ab12b5b195a772b" and "82d3be3129935501b11be79a7226708cd4e78216" have entirely different histories.
1d416be078
...
82d3be3129
5 changed files with 18 additions and 273 deletions
|
@ -211,7 +211,7 @@ thead {}
|
||||||
tbody {}
|
tbody {}
|
||||||
tfoot {}
|
tfoot {}
|
||||||
tr {}
|
tr {}
|
||||||
tr th {font-weight: bold; --pico-color: var(--pico-h6-color);}
|
th {}
|
||||||
td {}
|
td {}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -45,8 +45,7 @@ $( document ).ready(function() {
|
||||||
if(glosses.length > 0) {
|
if(glosses.length > 0) {
|
||||||
entrystring = `${glosses.join('; ')}: `
|
entrystring = `${glosses.join('; ')}: `
|
||||||
}
|
}
|
||||||
opt = $(`<option value="${out.xmlid}">${entrystring}<i>${out.form}</i>
|
opt = $(`<option value="${out.xmlid}">${entrystring}<i>${out.form}</i></option>`);
|
||||||
${out.glosses.map(g => `‘${g}’`).join(', ')}</option>`);
|
|
||||||
$select_entry.append(opt)
|
$select_entry.append(opt)
|
||||||
})
|
})
|
||||||
.catch(err => console.log(err));
|
.catch(err => console.log(err));
|
||||||
|
|
|
@ -22,22 +22,8 @@ declare function api:ment-index($db-lang as xs:string) {
|
||||||
(: Short entry info (only forms for now). Hash is used because URLs don't handle
|
(: Short entry info (only forms for now). Hash is used because URLs don't handle
|
||||||
some Unicode characters very well in this system :)
|
some Unicode characters very well in this system :)
|
||||||
declare function api:entry-info-short($n as node())
|
declare function api:entry-info-short($n as node())
|
||||||
as map(xs:string, item()) {
|
as map(xs:string, xs:string) {
|
||||||
map{'id': string(hash($n/@xml:id)),
|
map{'id': string(hash($n/@xml:id)), 'xmlid': $n/@xml:id, 'form': $n/text()}
|
||||||
'xmlid': string($n/@xml:id),
|
|
||||||
'form': $n/text()
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
declare function api:entry-info-long($n as node(), $db-lang as xs:string)
|
|
||||||
as map(xs:string, item()) {
|
|
||||||
map:merge(
|
|
||||||
(
|
|
||||||
api:entry-info-short($n),
|
|
||||||
map{'glosses': array:build(data(doc(`abaevdict_{$db-lang}/xml/{$n/@xml:id}.xml`)
|
|
||||||
/tei:entry[1]/tei:sense/(tei:sense|tei:sense/tei:sense|.)/tei:cit/tei:quote))}
|
|
||||||
)
|
|
||||||
)
|
|
||||||
};
|
};
|
||||||
|
|
||||||
(: Short language info -- for the language list :)
|
(: Short language info -- for the language list :)
|
||||||
|
@ -182,9 +168,8 @@ declare %rest:path("{$db-lang}/api/entries/{$entry-id}")
|
||||||
%rest:GET
|
%rest:GET
|
||||||
function api:entries($db-lang as xs:string,
|
function api:entries($db-lang as xs:string,
|
||||||
$entry-id as xs:string) {
|
$entry-id as xs:string) {
|
||||||
api:entry-info-long(
|
api:entry-info-short(
|
||||||
$lookup/tei:table[1]/tei:entry[string(hash(@xml:id))=$entry-id],
|
$lookup/tei:table[1]/tei:entry[string(hash(@xml:id))=$entry-id])
|
||||||
$db-lang)
|
|
||||||
};
|
};
|
||||||
|
|
||||||
0
|
0
|
|
@ -37,259 +37,24 @@ declare function page:head($title as xs:string, $script as node()* := ()) {
|
||||||
};
|
};
|
||||||
|
|
||||||
(: Navigation header :)
|
(: Navigation header :)
|
||||||
declare function page:header($lang as xs:string, $href-other as xs:string) {
|
declare function page:header() {
|
||||||
<header>
|
<header>
|
||||||
<nav>
|
<nav>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>{
|
<li><strong>Abaevdict</strong></li>
|
||||||
switch($lang)
|
|
||||||
case 'ru' return 'ИЭСОЯ В. И. Абаева'
|
|
||||||
default return 'Abaevdict'
|
|
||||||
}</strong><i> β</i></li>
|
|
||||||
<li>{
|
|
||||||
(element {if ($lang = 'ru') then 'mark' else 'a'}{
|
|
||||||
if ($lang != 'ru') then
|
|
||||||
(attribute onclick {`window.location='{$href-other}'+window.location.search;`},
|
|
||||||
attribute href {'#'}) else (),
|
|
||||||
'ru'
|
|
||||||
}, ' / ',
|
|
||||||
element {if ($lang = 'ru') then 'a' else 'mark'}{
|
|
||||||
if ($lang = 'ru') then
|
|
||||||
(attribute onclick {`window.location='{$href-other}'+window.location.search;`},
|
|
||||||
attribute href {'#'}) else (),
|
|
||||||
'en'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="./home">{
|
<li><a href="./home">Home</a></li>
|
||||||
switch($lang)
|
<li><a href="./dict">Dictionary</a></li>
|
||||||
case 'ru' return 'Главная'
|
<li><a href="./index">Index</a></li>
|
||||||
default return 'Home'
|
<li><a href="#">References</a></li>
|
||||||
}
|
|
||||||
</a></li>
|
|
||||||
<li><a href="./dict">{switch($lang)
|
|
||||||
case 'ru' return 'Словарь'
|
|
||||||
default return 'Dictionary'
|
|
||||||
}
|
|
||||||
</a></li>
|
|
||||||
<li><a href="./index">{switch($lang)
|
|
||||||
case 'ru' return 'Указатель'
|
|
||||||
default return 'Index'
|
|
||||||
}</a></li>
|
|
||||||
<li><a href="#">{switch($lang)
|
|
||||||
case 'ru' return 'Литература'
|
|
||||||
default return 'References'
|
|
||||||
}</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
};
|
};
|
||||||
|
|
||||||
declare function page:invert-lang($lang as xs:string) as xs:string {
|
|
||||||
if($lang = 'en') then 'ru' else 'en'
|
|
||||||
};
|
|
||||||
|
|
||||||
(: =============================================================== :)
|
(: =============================================================== :)
|
||||||
(: ======================= HOMEPAGE ============================== :)
|
(: ======================= THE PAGES ============================= :)
|
||||||
(: =============================================================== :)
|
|
||||||
|
|
||||||
declare %rest:path("{$lang}/home")
|
|
||||||
%output:method("html")
|
|
||||||
%output:html-version('5')
|
|
||||||
function page:home($lang) {
|
|
||||||
<html>
|
|
||||||
{page:head(if ($lang='ru') then 'ИЭСОЯ — Главная' else 'Abaevdict — Home',())}
|
|
||||||
|
|
||||||
<body>
|
|
||||||
{page:header($lang,`../{page:invert-lang($lang)}/home`)}
|
|
||||||
|
|
||||||
<main>
|
|
||||||
{
|
|
||||||
switch($lang)
|
|
||||||
case "ru" return (
|
|
||||||
<p>
|
|
||||||
Вы находитесь на сайте электронной двуязычной версии
|
|
||||||
<a href="https://ironau.ru/iesoja.html">Историко-этимологического
|
|
||||||
словаря осетинского языка</a> (ИЭСОЯ) В. И. Абаева.
|
|
||||||
Оцифровка и перевод словаря выполнены группой сотрудников, студентов и аспирантов
|
|
||||||
<a href="https://tipl.philol.msu.ru/">отделения теоретической и
|
|
||||||
прикладной лингвистики</a> МГУ имени М. В. Ломоносова и
|
|
||||||
<a href="https://iling-ran.ru/web/ru/departments/indo-european/iranian">
|
|
||||||
сектора иранских языков</a> Института языкознания РАН.
|
|
||||||
</p>,
|
|
||||||
<p>
|
|
||||||
Электронная версия словаря и перевод III и IV томов выполнены за счёт
|
|
||||||
гранта Российского научного фонда №
|
|
||||||
<a href="https://rscf.ru/project/22-28-01639/">22-28-01639</a>.
|
|
||||||
</p>,
|
|
||||||
<p>
|
|
||||||
Мы выражаем особую благодарность Амирхану Михайловичу Торчинову, который
|
|
||||||
выступил инициатором этого проекта и продолжает оказывать нам неоценимую
|
|
||||||
поддержку в нашей работе. Мы также благодарны московской осетинской общине за
|
|
||||||
поддержку перевода I–II томов словаря и помощь в печатном издании их английской
|
|
||||||
версии, в особенности Александру Тотоонову, Валерию Дзгоеву, Олегу Пухову,
|
|
||||||
Владиславу Хаблиеву, Руслану Бестолову, Виталию Даурову, Игорю Дзуцеву, Марине
|
|
||||||
Каболовой, Владимиру Туганову, Зоинбеку Абаеву, Виктору Джиоеву, Владимиру
|
|
||||||
Бароеву и Борису Базаеву.
|
|
||||||
</p>,
|
|
||||||
<p>
|
|
||||||
Электронная версия словаря основана на адаптации системы XML-разметки
|
|
||||||
<a href="https://tei-c.org/">TEI P5</a>. Сервер базы данных использует систему
|
|
||||||
<a href="https://basex.org">BaseX</a>. Модель разметки словаря и реализация её
|
|
||||||
программного отображения разработаны О. И. Беляевым. Все исходные
|
|
||||||
данные доступны в <a href="https://code.cucurri.ru/abaevdict">репозиториях</a>
|
|
||||||
проекта.
|
|
||||||
</p>,
|
|
||||||
<p>
|
|
||||||
В предыдущей версии электронного словаря использовалась реляционная
|
|
||||||
<a href="https://ossetic.iranic.space">модель</a> представления данных,
|
|
||||||
разработанная Ю. Ю. Макаровым (ИЯз РАН, Кембриджский университет)
|
|
||||||
на платформе OnLex.
|
|
||||||
</p>,
|
|
||||||
<h5>Как ссылаться</h5>,
|
|
||||||
<blockquote>Belyaev, Oleg, Irina Khomchenkova, Julia Sinitsyna, Vadim Dyachkov. Digitizing print dictionaries using TEI: The Abaev Dictionary Project // <i>IWCLUL 2021: The Seventh International Workshop on Computational Linguistics of Uralic Languages. Proceedings of the Workshop</i>. Stroudsburg, USA: Association for Computational Linguistics, 2021. P. 12–19.
|
|
||||||
</blockquote>,
|
|
||||||
<h5>Участники проекта</h5>,
|
|
||||||
<table>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<th scope="row">Научный руководитель</th>
|
|
||||||
<td>О. И. Беляев</td>
|
|
||||||
<td>(МГУ имени
|
|
||||||
М. В. Ломоносова, ИЯз РАН)</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th scope="row">Основные участники</th>
|
|
||||||
<td>Ю. В. Синицына</td>
|
|
||||||
<td>(МГУ имени
|
|
||||||
М. В. Ломоносова)</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td>И. А. Хомченкова</td>
|
|
||||||
<td>(МГУ имени М. В. Ломоносова, ИРЯ РАН)</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Оцифровка и перевод</th>
|
|
||||||
<td>В. В. Дьячков</td>
|
|
||||||
<td>(ИЯз РАН)</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td>А. А. Осипова</td>
|
|
||||||
<td>(МГУ имени М. В. Ломоносова)</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td>А. О. Бадеев</td>
|
|
||||||
<td>(ИЯз РАН, НИУ ВШЭ)</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td>Д. А. Алексеев</td>
|
|
||||||
<td>(МГУ имени М. В. Ломоносова)</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>)
|
|
||||||
default return
|
|
||||||
(
|
|
||||||
<p>
|
|
||||||
This is the website of the electronic version of V. I. Abaev's
|
|
||||||
<a href="https://ironau.ru/iesoja.html">Historical-Etymological Dictionary
|
|
||||||
of Ossetic</a> (HEDO). Its digitization and English translation have been
|
|
||||||
carried out by staff members and students of the
|
|
||||||
<a href="https://tipl.philol.msu.ru/">department of theoretical and applied
|
|
||||||
linguistics</a>, Lomonosov Moscow State University, and the <a
|
|
||||||
href="https://iling-ran.ru/web/ru/departments/indo-european/iranian">
|
|
||||||
Department of Iranian languages</a>, Institute of Linguistics RAS.
|
|
||||||
</p>,
|
|
||||||
<p>
|
|
||||||
The electronic version of the dictionary and the translation of vols. 3 and 4
|
|
||||||
have been supported by the Russian Science Foundation, project no.
|
|
||||||
<a href="https://rscf.ru/project/22-28-01639/">22-28-01639</a>.
|
|
||||||
</p>,
|
|
||||||
<p>
|
|
||||||
We are deeply grateful to Amirkhan Torchinov, who has been the initiator of this
|
|
||||||
project and is still providing us with invaluable support in our work. We are
|
|
||||||
also grateful to the Ossetian community of Moscow for their support of the
|
|
||||||
translation of vols. 1 and 2 and the help in publishing its preliminary English
|
|
||||||
version; in particular, to Alexander Totoonov, Valery Dzgoev, Oleg Pukhov,
|
|
||||||
Vladislav Khabliev, Ruslan Bestolov, Vitaly Daurov, Igor Dzutsev, Marina
|
|
||||||
Kabolova, Vladimir Tuganov, Zoinbek Abaev, Viktor Dzhioev, Vladimir
|
|
||||||
Baroev and Boris Bazaev.
|
|
||||||
</p>,
|
|
||||||
<p>
|
|
||||||
The electronic edition of the dictionary is based on an adaptation of the
|
|
||||||
XML-based <a href="https://tei-c.org/">TEI P5</a> markup system. The database
|
|
||||||
server runs on <a href="https://basex.org">BaseX</a>. The markup model and its
|
|
||||||
software realization have been developed by Oleg Belyaev. All sources are
|
|
||||||
available in our <a href="https://code.cucurri.ru/abaevdict">repositories</a>.
|
|
||||||
</p>,
|
|
||||||
<p>
|
|
||||||
The previous version of the electronic dictionary used a relational
|
|
||||||
data <a href="https://ossetic.iranic.space">model</a> developed by Yury Makarov
|
|
||||||
(IL RAS, Cambridge University) using the OnLex platform.
|
|
||||||
</p>,
|
|
||||||
<h5>How to cite</h5>,
|
|
||||||
<blockquote>Belyaev, Oleg, Irina Khomchenkova, Julia Sinitsyna, Vadim Dyachkov. Digitizing print dictionaries using TEI: The Abaev Dictionary Project // <i>IWCLUL 2021: The Seventh International Workshop on Computational Linguistics of Uralic Languages. Proceedings of the Workshop</i>. Stroudsburg, USA: Association for Computational Linguistics, 2021. P. 12–19.
|
|
||||||
</blockquote>,
|
|
||||||
<h5>Project participants</h5>,
|
|
||||||
<table>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<th scope="row">Project leader</th>
|
|
||||||
<td>Oleg Belyaev</td>
|
|
||||||
<td>(Lomonosov MSU, IL RAS)</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th scope="row">Core team</th>
|
|
||||||
<td>Irina Khomchenkova</td>
|
|
||||||
<td>(Lomonosov MSU, Vinogradov RLI RAS)</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td>Julia Sinitsyna</td>
|
|
||||||
<td>(Lomonosov MSU)</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Digitization and translation</th>
|
|
||||||
<td>Vadim Dyachkov</td>
|
|
||||||
<td>(IL RAS, LLACAN CNRS)</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td>Anna Osipova</td>
|
|
||||||
<td>(Lomonosov MSU)</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td>Artyom Badeev</td>
|
|
||||||
<td>(IL RAS, HSE University)</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td>Danil Alekseev</td>
|
|
||||||
<td>(Lomonosov MSU)</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>)
|
|
||||||
}
|
|
||||||
</main>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
};
|
|
||||||
|
|
||||||
declare %rest:path("home")
|
|
||||||
%output:method("html")
|
|
||||||
%output:html-version('5')
|
|
||||||
function page:home() {
|
|
||||||
page:home('en')
|
|
||||||
};
|
|
||||||
|
|
||||||
(: =============================================================== :)
|
|
||||||
(: ======================= THE DICTIONARY ======================== :)
|
|
||||||
(: =============================================================== :)
|
(: =============================================================== :)
|
||||||
|
|
||||||
(: If no language defined, default to English :)
|
(: If no language defined, default to English :)
|
||||||
|
@ -314,7 +79,7 @@ declare %rest:path("{$lang}/dict")
|
||||||
<script src="/static/abaev.js"></script>))}
|
<script src="/static/abaev.js"></script>))}
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
{page:header($lang,`../{page:invert-lang($lang)}/dict`)}
|
{page:header()}
|
||||||
|
|
||||||
<!-- Sidebar with entry list -->
|
<!-- Sidebar with entry list -->
|
||||||
<button id="open-leftbar">
|
<button id="open-leftbar">
|
||||||
|
@ -399,10 +164,6 @@ declare %rest:path("{$lang}/dict/{$id}")
|
||||||
return web:redirect('../dict', {'page': $pagenum}, web:decode-url($id))
|
return web:redirect('../dict', {'page': $pagenum}, web:decode-url($id))
|
||||||
};
|
};
|
||||||
|
|
||||||
(: =============================================================== :)
|
|
||||||
(: ======================= THE INDEX ============================= :)
|
|
||||||
(: =============================================================== :)
|
|
||||||
|
|
||||||
(: Mentioned index :)
|
(: Mentioned index :)
|
||||||
declare %rest:path("{$lang}/index")
|
declare %rest:path("{$lang}/index")
|
||||||
%output:method("html")
|
%output:method("html")
|
||||||
|
@ -413,7 +174,7 @@ return
|
||||||
<html>
|
<html>
|
||||||
{page:head('HEDO – Index', <script src="/static/abaev-index.js"></script>)}
|
{page:head('HEDO – Index', <script src="/static/abaev-index.js"></script>)}
|
||||||
<body>
|
<body>
|
||||||
{page:header($lang,`../{page:invert-lang($lang)}/index`)}
|
{page:header()}
|
||||||
<main>
|
<main>
|
||||||
<div class="index">
|
<div class="index">
|
||||||
<div class="langs">
|
<div class="langs">
|
||||||
|
|
|
@ -227,10 +227,10 @@
|
||||||
<xsl:template match="tei:c | tei:m | tei:w | tei:phr | tei:s">
|
<xsl:template match="tei:c | tei:m | tei:w | tei:phr | tei:s">
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="../name() = 'mentioned'">
|
<xsl:when test="../name() = 'mentioned'">
|
||||||
<!-- <xsl:element name="a"> -->
|
<xsl:element name="a">
|
||||||
<!-- <xsl:attribute name="href">#</xsl:attribute> -->
|
<xsl:attribute name="href">#</xsl:attribute>
|
||||||
<xsl:call-template name="make-word"/>
|
<xsl:call-template name="make-word"/>
|
||||||
<!-- </xsl:element> -->
|
</xsl:element>
|
||||||
</xsl:when>
|
</xsl:when>
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<xsl:call-template name="make-word"/>
|
<xsl:call-template name="make-word"/>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue