Commit 7c0ca6ad authored by Jindřich Dítě's avatar Jindřich Dítě

Added generator with pattern "mladý"

parent 68908a66
......@@ -70,7 +70,7 @@ Scházející slovo snadno přidáte do Wikidat (tam navíc bude užitečné nej
1. Ujistěte se, že se slovo na Wikidatech ještě nenachází, např. pomocí
[vyhledávání na stránce Ordia](https://tools.wmflabs.org/ordia/).
2. Vytvořte nové slovo, v terminologii Wikidat „lexém“, pomocí [příslušné stránky](https://www.wikidata.org/wiki/Special:NewLexeme) nebo použijte [přívětivější šablony](https://tools.wmflabs.org/lexeme-forms/); ty jsou však dostupné jen pro některé české slovní druhy.
2. Vytvořte nové slovo, v terminologii Wikidat „lexém“, pomocí [příslušné stránky](https://www.wikidata.org/wiki/Special:NewLexeme) nebo použijte [přívětivější šablony](https://tools.wmflabs.org/lexeme-forms/) či náš [generátor](generator.html); tyto jsou však dostupné jen pro některé české slovní druhy.
Pokud je potřeba doplnit nové tvary k již existujícímu základnímu tvaru, upravte stránku s lexémem, případně u šablon použijte volbu „Pokročilé“.
......@@ -86,7 +86,7 @@ Nejdřív zkontrolujte, zda se nesprávné slovo nenachází na Wikidatech, a ta
### Další možnosti
Obohatit Wikidata a vylepšit slovník můžeme i jinak. Také tyto činnosti vyžadují pokročilejší znalosti:
- zadávání nových a úpravu stávajících lexémů by usnadnily nové [šablony](https://tools.wmflabs.org/lexeme-forms/) pro češtinu, schází namátkou šablona pro slovesa nebo stupňovaná přídavná jména,
- zadávání nových a úpravu stávajících lexémů by usnadnily nové [šablony](https://tools.wmflabs.org/lexeme-forms/) pro češtinu, schází namátkou šablona pro nedokonavá slovesa,
- hunspellový slovník je aktuálně tvořen prostým seznamem všech tvarů, přidání pravidel (vzorů) by nejen zmenšilo výsledný soubor, ale především by se tím do slovníku dostala informace o skloňování a časování,
......@@ -104,4 +104,4 @@ U slov ve Wikidatech, odkud slovník přebírá data, lze uvádět různorodé i
<a name="kontakt"></a>
## Kontakt
O slovník se stará tým, který lokalizuje do češtiny kancelářský balík LibreOffice. Napsat nám můžete do [e-mailové konference](https://listarchives.libreoffice.org/cz/lokalizace/) na adresu lokalizace@cz.libreoffice.org (e-mail bude veřejně viditelný).
\ No newline at end of file
O slovník se stará tým, který lokalizuje do češtiny kancelářský balík LibreOffice. Napsat nám můžete do [e-mailové konference](https://listarchives.libreoffice.org/cz/lokalizace/) na adresu lokalizace@cz.libreoffice.org (e-mail bude veřejně viditelný).
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Lexeme generator tool</title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet"
href="https://tools-static.wmflabs.org/cdnjs/ajax/libs/twitter-bootstrap/4.0.0/css/bootstrap.min.css"
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>
<body>
<nav class="navbar navbar-expand-sm navbar-dark bg-dark">
<ul class="navbar-nav mr-auto">
</ul>
</nav>
<main class="container mt-3">
<h1>Nástroj na generování tvarů slov</h1>
<label for="wordCategorySelector">Zvolte si slovní druh: </label>
<select onchange="fillPatterns()" id="wordCategorySelector"><option hidden selected disabled value></option></select><br>
<label for="patternSelector">Zvolte si vzor skloňování slov: </label>
<select onchange="createUIForm()" id="patternSelector"><option hidden selected disabled value></option></select>
<form id="UIForm"></form>
</main>
<script src="./generators.js"></script>
<script src="./init.js"></script>
</body>
</html>
var generators = {
"czech-adjective": {
'label': 'česká přídavná jména',
'input_fields': [
'Kořen 1. stupně přídavného jména ("mlad" pro mladý, "jarn" pro jarní, "rozmarn" pro rozmarný atd.)',
'1. pád 2. stupně přídavného jména ("mladší", "jarnější", "rozmarnější" atd.)'
],
'patterns': {
'mladý': [
'/1ý',
'/1ého',
'/1ému',
'/1ého',
'/1ý',
'/1ém',
'/1ým',
'/1ý',
'/1ého',
'/1ému',
'/1ý',
'/1ý',
'/1ém',
'/1ým',
'/1á',
'/1é',
'/1é',
'/1ou',
'/1á',
'/1é',
'/1ou', // instrumental, feminine, singular, positive
'/1é',
'/1ého',
'/1ému',
'/1é',
'/1é',
'/1ém',
'/1ým',
'', // may require softening of letter before
'/1ých',
'/1ým',
'/1é',
'',
'/1ých',
'/1ými',
'/1é',
'/1ých',
'/1ým',
'/1é',
'/1é',
'/1ých',
'/1ými', // instrumental, inanimate masculine, plural, positive
'/1é',
'/1ých',
'/1ým',
'/1é',
'/1é',
'/1ých',
'/1ými',
'/1á',
'/1ých',
'/1ým',
'/1á',
'/1á',
'/1ých',
'/1ými',
'/2', // nominative, animate masculine, singular, comparative
'/2ho',
'/2mu',
'/2ho',
'/2',
'/2m',
'/2m',
'/2',
'/2ho',
'/2mu',
'/2',
'/2',
'/2m',
'/2m',
'/2',
'/2',
'/2',
'/2',
'/2',
'/2',
'/2', // instrumental, feminine, singular, comparative
'/2',
'/2ho',
'/2mu',
'/2',
'/2',
'/2m',
'/2m',
'/2',
'/2ch',
'/2m',
'/2',
'/2',
'/2ch',
'/2mi', // instrumental, animate masculine, plural, comparative
'/2',
'/2ch',
'/2m',
'/2',
'/2',
'/2ch',
'/2mi',
'/2',
'/2ch',
'/2m',
'/2',
'/2',
'/2ch',
'/2mi',
'/2',
'/2ch',
'/2m',
'/2',
'/2',
'/2ch',
'/2mi',
'nej/2', // nominative, animate masculine, singular, superlative
'nej/2ho',
'nej/2mu',
'nej/2ho',
'nej/2',
'nej/2m',
'nej/2m',
'nej/2',
'nej/2ho',
'nej/2mu',
'nej/2',
'nej/2',
'nej/2m',
'nej/2m',
'nej/2',
'nej/2',
'nej/2',
'nej/2',
'nej/2',
'nej/2',
'nej/2', // instrumental, feminine, singular, superlative
'nej/2',
'nej/2ho',
'nej/2mu',
'nej/2',
'nej/2',
'nej/2m',
'nej/2m',
'nej/2',
'nej/2ch',
'nej/2m',
'nej/2',
'nej/2',
'nej/2ch',
'nej/2mi', // instrumental, animate masculine, plural, superlative
'nej/2',
'nej/2ch',
'nej/2m',
'nej/2',
'nej/2',
'nej/2ch',
'nej/2mi',
'nej/2',
'nej/2ch',
'nej/2m',
'nej/2',
'nej/2',
'nej/2ch',
'nej/2mi',
'nej/2',
'nej/2ch',
'nej/2m',
'nej/2',
'nej/2',
'nej/2ch',
'nej/2mi'
],
'jarní': []
}
}
};
const wordCategorySelector = document.getElementById("wordCategorySelector");
const patternSelector = document.getElementById("patternSelector");
const UIForm = document.getElementById("UIForm");
let wordCategory = "";
let pattern = "";
Object.keys(generators).forEach(key => {
const opt = document.createElement('option');
opt.value = key;
opt.innerText = generators[key].label;
wordCategorySelector.appendChild(opt);
});
const fillPatterns = () => {
wordCategory = wordCategorySelector.options[wordCategorySelector.selectedIndex].value;
Object.keys(generators[wordCategory].patterns).forEach(key => {
const opt = document.createElement('option');
opt.value = key;
opt.innerText = key;
patternSelector.appendChild(opt);
});
};
const createUIForm = () => {
pattern = patternSelector.options[patternSelector.selectedIndex].value;
generators[wordCategory].input_fields.forEach((pat, idx) => {
const lbl = document.createElement("label");
lbl.for = "pattern-" + idx;
lbl.innerText = pat;
UIForm.appendChild(lbl);
const inp = document.createElement("input");
inp.type = "text";
inp.id = "pattern-" + (idx + 1);
UIForm.appendChild(inp);
UIForm.appendChild(document.createElement("br"));
});
const submit = document.createElement("input");
submit.type = "button";
submit.onclick = generateFormsAndSubmit;
submit.value = "Generovat";
UIForm.appendChild(submit);
};
const generateFormsAndSubmit = () => {
const regex = /^(\D*)\/(\d+)(\D*)$/;
const HTMLForm = document.createElement("form");
HTMLForm.action = "https://tools.wmflabs.org/lexeme-forms/template/" + wordCategory;
HTMLForm.method = "post";
generators[wordCategory].patterns[pattern].forEach(pat => {
const match = pat.match(regex);
const form = match === null ? "" : match[1] + document.getElementById("pattern-" + match[2]).value + match[3];
const inp = document.createElement("input");
inp.type = "hidden";
inp.name = "form_representation";
inp.value = form;
HTMLForm.appendChild(inp)
});
document.body.appendChild(HTMLForm);
HTMLForm.submit();
};
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment