Dyndy - vytvoření slovníku a import

Dokument se slovní zásobou je obyčejný textový soubor, který je možné vytvořit i v poznámkovém bloku ve Windows. Nutné je pouze dbát na správnou strukturu dokumentu.
Ukázkový dokument:
:group:SAMPLES/Languages/Numbers
:lang:cs-CZ;en-GB
:id:2022-01-31-23-59*MuRa2K22*Languages/Numbers.1
:version:1

:remove:1000
:remove:1001

::1
:read:jednička
::one
:read:
:id:1
:note:Poznámka zapsaná na jednom řádku.


::2
::two
:id:2
:note:
Poznámka zapsaná na více řádků.

Tato poznámka může obsahovat i prázné řádky.
:note:


::3
::three
:id:3

Každý dokument je rozdělen do několika bloků: definice skupiny, definice otázek k odstranění a definice jednotlivých otázek. Bloky nemohou obsahovat prázdné řádky. Prázdnými řádky se od sebe jednotlivé bloky oddělují.
Definice skupiny:
:group:SAMPLES/Languages/Numbers
:lang:cs-CZ;en-GB
:id:2022-01-31-23-59*MuRa2K22*Languages/Numbers.1
:version:1

Parametr :group: definuje skupinu a její podskupiny. Jednotlivé skupiny se oddělují znakem lomítka /. Otázky jsou umístěny do skupiny definované za posledním lomítkem.
Parametr :lang: definuje jazyky, kterými jsou zapsána pole otázek. Jednotlivé jazyky jsou oddělené středníkem ;.
Tento parametr je důležitý k tomu, aby aplikace věděla, jakým jazykem má být dané pole otázky přečteno. V našem příkladu máme definované dva jazyky a to znamená, že každá otázka bude mít dvě pole - český výraz a jemu odpovídající anglický výraz.
Definice každého jazyka musí být zapsána ve správném tvaru. Hodnoty, které je možné do tohoto parametru zapsat, lze najít zde: JAZYKY ve sloupečku BCP-47.
Pokud některý z jazyků nebude uveden nebo bude uveden chybně, nebude možné dané pole u otázek číst (čtení některého z polí můžeme tedy u všech otázek ve skupině zakázat: :lang:;en-GB, :lang:cs-CZ; nebo :lang:;)
Parametr :id: obsahuje identifikátor skupiny, který nebude nikde vidět, ale aplikace ho potřebuje pro správné fungování. Hondota identifikátoru musí být zapsána ve správném tvaru. Tuto hodnotu nastavíme hned na začátku při vytváření dokumentu a po vytvoření identifikátoru už tuto hodnotu nikdy neměníme. Každý vytvořený dokument musí mít tuto hodnotu jinou.

Hodnotu identifikátoru je možné rozdělit na tři části "A" a "B" a "C" ve formátu: "A*B*C".
Pokud by byl importován dokument s :id:, který již v aplikaci existuje u jiné skupiny, bude právě ta skupina v aplikace a některé nebo všechny její otázky přepsány. Z toho důvodu je důležité, aby :id: skupiny bylo unikátní a nebylo tak snadné vytvořit dva dokumenty se stejným :id:. Na Vás je tedy, abyste opravdu poctivě pro každý dokument vytvářeli nové :id:.
Parametr :version: je zde pouze pro potřeby aplikace, aby bylo možné provést správné načtení dokumentu. Hodnota tohoto parametru musí být 1.

Definice otázek k odstranění:
:remove:1000
:remove:1001
Tento blok není povinný, ale chceme-li ho definovat musí být umístěn po definici skupiny. Definujeme ho pouze v případě, že jsme dokument měli již vytvořený a následně se rozhodli některou z jeho otázek odstranit. Za parametrem :remove: následuje identifikátor otázky, která má být odstraněna. Při importu tohoto dokumentu dojde k tomu, že otázky s příslušným identifikátorem budou v aplikaci odstraněny.

Definice otázky:
::1
:read:jednička
::one
:read:
:id:1
:note:Poznámka zapsaná na jednom řádku.
Za parametrem tvořeným jen ze dvou dvojteček :: následuje pole otázky (tj. text otázky nebo odpovědi) a definujeme jej vždy na začátku otázky.
Po parametru pro pole otázky následuje parametr :read:, který definuje to, jak se má pole definované na předchozím řádku přečíst. Tento parametr je volitelný a nemusí být definován - v tom případě se přečte text pole tak, jak se zapsán v poli otázky. Pokud za tímto parametrem není žádný text, znamená to, že čtení tohoto pole otázky je zakázané a nemůže být přečteno.
Poté následuje definice druhého pole otázky. Opět přes parametr :: a po něm volitelný parametr :read:.
Po definovaných polích otázky, které musí být uvedené vždy na začátku, následuje parametr :id:. Tento parametr je identifikátor otázky. Narozdíl od identifikátoru skupiny, pro tento identifikátor nemáme žádné zvláštní podmínky k vytváření jeho hodnoty, ale i zde platí, že jakmile jednou identifikátor nastavíme, později už ho měnit nebudeme. Dalším drobným omezením je, že v jednom dokumentu nesmí být dvě otázky se stejným identifikátorem.
Poslední parametr :note: definuje poznámku u otázky. V tomto případě je poznámka zapsána na jednom řádku ihned za parametrem.
Parametr může být ale zapsán i na více řádků, jak je ukázáno v následujícím příkladu. Chceme-li uvést poznámku na více řádků, musíme zapsat parametr pro poznámku :note: a za ní již neuvádět žádný text. Na další řádky zapíše poznámku a zakončíme to řádkem, na kterém je opět jen parametr :note: bez jakéhokoli dalšího textu.

::2
::two
:id:2
:note:
Poznámka zapsaná na více řádků.

Tato poznámka může obsahovat i prázné řádky.
:note:

Nyní si ještě uvedeme příklad toho, jak může vypadat nejjednodušší zápis otázky. Na následujícím příkladu tedy vidíme, že definice otázky obsahuje pouze definice dvou polí a identifikátor otázky. Toto je zcela dostačující definice otázky, pokud nepotřebujeme upravit čtení nebo uvádět poznámku.

::3
::three
:id:3

Do dokumentu můžeme vkládat také komentáře. Text komentáře nebude nikde zobrazen a slouží jen Vám, když si potřebujete v textu něco poznamenat nebo vložit část textu, který nemá být zpracován při importování.

Komentář na jeden řádek:
# Komentář na jednom řádku

Komentář na více řádků:
#
Začátek komentáře zapsaného na více řádků.
Chceme-li zapsat víceřádkový komentář, tak na prvním řádku se značkou pro komentář nesmí být žádné jiné znaky. Text komentáře začínáme psát až na dalším řádku.

Nesmíme zapomenout vložit značku pro komentář ještě za poslendím řádkem komentáře pro jeho ukončení. Tento řádek se značkou komentáře také nesmí obsahovat žádné jiné znaky, než je znak pro komentář.
#
Dokument uložíme do souboru s příponou "ddi".

Import

Importovat vytvořené *.ddi soubory se slovní zásobou je možné dvěma způsoby:
1) nakopírovat do mobilního telefonu do složky aplikace: MuRa2K22/Dyndy/Import
Připojte mobilní telefon k počítači a z něho nahrajte všechny *.ddi soubory do "Import" složky aplikace ve vašem telefonu.

2) nahrát soubor na web a přes jeho URL adresu importovat do aplikace
Pro tento způsob musíte mít nějaký webový prostor, kam nahrajete všechny *.ddi soubory (k tomuto účelu by měl stačit jakýkoli webový free-hosting).
2.1) Jako URL v telefonu vložíte umístění přímo jednoho *.ddi souboru (máte-li více *.ddi souborů, musíte zadat URL každého souboru zlášť).
2.2) Jako URL v telefonu vložíte umístění *.xml souboru, ve kterém jsou zapsány všechny *.ddi soubory a vy tak můžete importovat několik souborů najednou.
Aby bylo možné použít tuto variantu, musíte ručně vytvořit *.xml soubor, který umístíte na web. URL adresu tohoto *.xml souboru pak zadáte do aplikace jako URL pro import.
Ukázka XML souboru s definicí *.ddi souborů:
<DyndyImportUrl version="1">
   <File url="http://sample.cz/sample_files/SAMPLE_FILE_1.ddi" version="1"/>
   <File url="http://sample.cz/sample_files/SAMPLE_FILE_2.ddi" version="1"/>
   <File url="http://sample.cz/sample_files/SAMPLE_FILE_3.ddi" version="1" note="Stručná poznámka s informací např. o tom, co dokument obsahuje." name="Sample File 3"/>
</DyndyImportUrl>
Atribut version u elementu File není povinný, ale doporučujeme ho používat a při každé úpravě souboru číslo verze zvýšit o 1. Atribut slouží k tomu, aby při zobrazení souborů k importu bylo možné zjistit, zda byl soubor upraven oproti verzi, kterou si uživatel již dříve importoval. Takový soubor je pak odlišen barevným znakem "*".
Atribut version u elementu DyndyImportUrl musí zůstat na hodnotě 1.
Element File může obsahovat nepovinné atributy name a note. Při importu pak uživatel uvidí poznámku zapsanou v atributu note. Hodnota atributu name je pak zobrazena místo názvu souboru.
2.3) Jako URL v telefonu vložíte složku, ve které jsou umístěny všechny *.ddi soubory a vy tak můžete importovat několik souborů najednou.
Aby bylo možné použít tuto variantu musíte mít ve složce nějaký skript, který vygeneruje XML dokument s umístěním *.ddi souborů (XML dokument jako je ten v bodě 2.2). Pro tuto možnost můžete využít přiložený PHP skript, který stačí jen nakopírovat do složky s *.ddi soubory. Skript se již postará o vygenrování XML dokumentu se všemi *.ddi soubory, které ve složce jsou.
PHP sktipt, který umístíte do složky s *.ddi soubory: STÁHNOUT PHP SKRIPT