
poEdit je GUI editor pekladovch katalog pro systm GNU gettext 
(http://freshmeat.net/projects/gettext/). Gettextov katalogy jsou textov
soubory obsahujc dvojice originln etzec-peklad, kde originln etzec 
je typicky v anglitin. Program vyuvajc gettext tyto katalogy nate za bhu 
a zskv volnm funkce char *gettext(const char *original_string), kter v
hashovac tabulce najde a vrt pslun peklad.

 
 Souasn stav:
================
(verze 1.0.3; http://www.volny.cz/v.slavik/poedit/)

Editace katalogu probh v hlavnm okn, rozdlenm na dv sti: v horn je 
seznam vech etzc a jejich peklad (vetn barevnho zvraznn stavu 
pekladu: hotov, dn, nepesn), v doln sti jsou pod sebou dva widgety 
pro vstup textu. V hornm z nich je originln text, v dolnm uivatel edituje
peklad.

Funce:

zvraznn blch znak
        text lze voliteln zobrazovat v uvozovkch, aby si pekladatel viml
        vodnch nebo koncovch mezer

setzen seznamu peklad
        nepeloen texty jsou v seznamu peklad nahoe, pod nimi jsou nepesn
        (fuzzy) a nsleduj hotov peklady

automatick generovn MO soubor
        (MO je binrn podoba standardnch textovch katalog PO)
        pi uloen katalogu se (voliteln) vygeneruje i MO (pomoc externho
        programu)
        
editovn hlaviek
        k dispozici je dialog k nastavovn hlaviek katalogu (pekladatel, 
        jazyk, posledn update, ...)
        
prohlen referenc
        po kliknut pravm tlatkem myi na etzec v seznamu se objev menu
        s vtem vech mst ve zdrojovch kdech, kde se pslun etzec
        vyskytuje. Po vybrn reference se zobraz relevantn st zdrojku

updatovn katalog
        v poEditu je integrovan funkce pro aktualizaci katalog ze zdrojovch
        kd (vyuv extern parser dodvan s GNU gettextem). Po dokonen
        aktualizace program zobraz seznam zmn


Jazyk: C++
Platformy: Windows, Unix; s vyuitm knihovny wxWindows



 Pidan funkce (jako ronkov projekt):
==========================================

podpora Unicode [done]
        poEdit bude intern pracovat s wchar_t k podporovanm kdovnm
        .po soubor pibude UTF-8.

vylepen prohle zdrojk [done]
        (k danmu etzci zobrazuje st zdrojovho kdu, kter jej
        obsahuje)
        bude zobrazovat sla dk, v toolbaru bude tlatko k oteven
        souboru v externm editoru a combo box se seznamem vech vskyt
        danho etzce, aby se mezi nimi dalo rychle pechzet

komente [done]
        poEdit bude umoovat k pekladm pidat komente a ptomnost
        koment bude v seznamu indikovat ikonkou

ukazatel prbhu pekladu [done]
       v toolbaru bude progress bar, kter ukazuje pomr peloench
       a nepeloench etzc v katalogu

nov editovn text [done]
       souasn editovn peklad v jednodkovm textovm prvku bude
       nahrazeno vcedkovm a pechod mezi jednotlivmi peklady se zmn
       z klves Up, Down na Ctrl-Up, Ctrl-Down
       
manaer katalog [done]
       manaer zobraz okno se seznamem vech katalog nalezench v nastaven
       cest vetn jejich statistik, umon jednotliv katalogy otevrat
       a provst masov update (aktualizace obsahu vech katalog z pslunch
       zdrojovch kd)

automatick peklad [done]
       poEdit umon voliteln pi aktualizaci katalogu doplnit przdn peklady
       z databze znmch peklad. Tato databze vznik automaticky pi prci
       s poEditem nebo je ji mono vygenerovat ze soubor nalezench na disku.
       Pi doplovn se v db hled jednak pesn vskyt ezzce, jednak
       vskyt nepesn (s ignorovnm blch znak a interpunkce, navc dovolme
       jedno nebo dv odlin slova).

update dokumentace [done]
popis algoritmu TM [done]


 Algoritmus automatickho pekladu:
====================================

0. Uloen dat

Data budou uloena v databzi typu key-value, zejm Berkeley DB nebo jin
voln dostupn implementaci. Databze bude existovat zvlṻ pro 
kad clov jazyk. Jazyk originlu se v souladu s principem Gettextu 
pedpokld anglitina. Data jsou v databzi uloena v kdovn UTF-8.

Struktura tabulek:
    1: tabulka peklad -- klem je originln etzec v pvodn podob, 
           hodnotou je seznam peklad (tch toti typicky existuje vce)
    2: tabulka index peklad -- klem je long int, hodnotou je originln 
           etzec (kl pro tabulku 1).
    3: tabulka slov -- klem je slovo, hodnotou je seznam index originlnch
           etzc, v nich se dan slovo vyskytuje (kle pro tabulku 2).


1. Generovn databze

Pro kadou vstupn dvojici originl-peklad se provedou nsledujc kroky:
    - pokud v tabulce 1 neexistuje zznam s klem originl, pak
          - vytvo se pslun zznam v tabulce 1
          - do tabulky 2 se pid 
          - etzec originl se rozlo na jednotliv slova a do tabulky 
            3 se ke kadmu slovu pid odkaz na nov vznikl zznam v tabulce
            1 (pslun zznamy pro slova se vytvo, pokud chybly)
    - do zznamu v tabulce 1 se pid peklad a to na zatek seznamu peklad
      (take novj peklady budou mt pednost pi dotazovn do db)


2. Dotazovn databze

(Pozn.: dotazovn probh ve dvou mdech: interaktivnm a automatickm.
V automatickm mdu se pod "nabdnout uivateli" rozum vybrat prvn z 
nalezench vsledk a pout ho, v interaktivnm mdu se v ppad vce ne
jednoho vsledku vechny zobraz a uivatel si vybere. Automatick md se
pouije pi automatickm pekladu databze, interaktivn, kdy potom uivatel 
peklady opravuje.)

V prvnm kroku se algoritmus podv do tabulky 1 a pokud v n najde dotazovan
kl, nabdne v nm uloen peklady. 

Pokud pesn peklad neexistuje, rozlo se vstup na jednotliv slova. Ke 
kadmu slovu z tabulky 3 zjistm mnoinu index peklad, v nich se pslun
slovo vyskytuje.

Udl se prnik tchto mnoin. Pokud bude neprzdn, zjist se z tabulky 2
originln etzce. Ov se, e neobsahuj dn slova navc k tm, kter 
jsme hledali. K tm originlm, kter pedchozmu testu vyhovly, se z tabulky
1 vyjmou peklady a nabdnou se uivateli.

V opanm ppad se pro kad slovo vytvo prnik mnoin index vech slov
originlnho etzce _bez tohoto slova_. Pokud je sjednocen tchto prnik
neprzdn, nabdne se uivateli (opt pednm odfiltrujeme originly, kter
obsahuj dv a vce slov navc oproti hledanm).

V opanm ppad se tot opakuje s vynechnm vech dvojic slov.


    
    

