# Segmentácia zdroja

## Obsah

- 1. Základy segmentácie
- 2. Vetná segmentácia
  - 2.1. O pravidlách
  - 2.2. Nastavenie pravidiel
    - 2.2.1. Sady pravidiel
    - 2.2.2. Jednoduché príklady
  - 2.3. Regulárne výrazy pre použitie v pravidlách segmentácie
    - 2.3.1. Krátky prehľad konštrukcií regulárnych výrazov

## Základy segmentácie

Nástroje pre prácu s prekladovými pamäťami pracujú s textovými jednotkami nazývanými segmenty. Existujú viaceré spôsoby ako segmentovať text.

OmegaT najprv spracuje text pomocou segmentácie na úrovni štruktúr. Počas tohto procesu je to iba štruktúra zdrojového súboru, ktorá je použitá na vytvorenie segmentov. Napríklad, textové súbory môžu byť segmentované podľa zlomov riadkov, prázdnych riadkov alebo vôbec nemusia byť na štruktuirálnej úrovni segmentované. Súbory s formátovaním (dokumenty OpenOffice.org, OpenDocument, XHTML a HTML) sú segmentované podľa blokových (odstavec) tagov.

Preložiteľné atribúty objektov (v XHTML alebo HTML súboroch) sú tiež vytiahnuté do osobitných segmentov.

OmegaT môže tiež segmentovať podľa viet. Vetná segmentácia sa odohráva po segmentácii na úrovni štruktúry. Segmenty vytvorené počas ktoréhokoľvek procesu annešťastie nemôžu byť počas prekladu zmenené (rozdelené alebo zlúčené). Toto obmedzenie, ktoré má OmegaT poznáme.

Ak nie ste spokojní so segmentáciou budede potrebovať alebo modifikovať zdrojový súbor externe a/alebo modifikovať pravidlá pre vetnú segmentáciu. Keď je to urobené budete potrebovať znovu načítať projekt aby sa vaše zmeny zohľadnili.

## Vetná segmentácia

Po tom ako program OmegaT rozdelil zdrojový súbor na segmenty podľa logických jednotiek, pre formátované súbory zvyčajne zodpovedajúcim odstavcom, bude ďalej segmentovať tieto bloky do viet ak nevypnete Vetnú segmentáciu Vo všeobecnosti, môže OmegaT segmentovať logické bloky zdrojového súboru na akékoľvek segmenty aké nastavíte. Avšak keďže predvolene OmegaT segmentuje do viet, budeme to nazývať vetná segmentácia.

Vetná segmentácia bola vytvorená s ohľadom na štandard Segmentation Rules eXchange (SRX, Výmena pravidiel segmentácie), hoci v čase písania tohoto, program OmegaT ani nepodporuje všetky vlastnosti SRX, ani nie je schopný importovať/exportovať pravidlá definované vo formáte SRX. Ale ak viete ako SRX funguje, už viete ako funguje OmegaT, keďže sú viacmenej rovnaké.

### O pravidlách

Existujú dva druhy možných pravidiel.

- Pravidlá rozdeľovania rozdeľujú text do segmentov.
- Pravidlá výnimiek špecifikujú ktoré kusy textu by nemali byť oddelené od ostatných.

Príklad pravidla rozdeľovania: "Did it make sense? I was not sure." môže byť segmentované ako dve vety po "`?`". Malo by tu byť pravidlo rozdeľovania pre "`?`"

Príklad pravidla segmentácie: "Kto sa bojí p. Woolfovej?" nemôže byť segmentované po "`.`". Malo by existovať pravidlo výnimky pre "`Mrs.`".

Preddefinované pravidlá rozdeľovania by mali byť dostatočné pre väčšinu európskych jazykov a japončinu, ale odporúčame definovať viac pravidiel výnimiek pre jazyk z ktorého prekladáte, keďže je jasné že nie je možné preddefinovať všetky možné výnimky pre všetky možné jazyky.

### Nastavenie pravidiel

Aby ste nastavili pravidlá, vyberte Voľby -> Segmentácia... z hlavného menu. Všimnite si, že ak zmeníte voľby segmentácie keď je otvorený nejaký projekt, budete musieť projekt znovu načítať, aby sa zmeny použili.

#### Sady pravidiel

Všetky sady pravidiel segmentácie so zodpovedajúcim Vzorom jazyka sú použité v danom poradí priority, takže pravidlá pre konkrétny jazyk by mali byť vyššie než predvolené.

Napríklad, pravidlá pre kanadskú francúzštinu (FR-CA) by mali byť vyššie než pravidlá pre francúzštinu (FR.*), a vyššie než Predvolené (Default) (.*). Potom počas prekladu z kanadskej francúzštiny bude váš projekt používať pravidlá definované pre tento jazyk, pravidlá pre francúzštinu, a predvolené pravidlá v správnom poradí.

Na vytvorenie prázdnej sady pravidiel, kliknite na Pridať v hornej polovici dialógového okna. V spodnej časti tabuľky sa objaví prázdny riadok. Zmeňte názov sady pravidiel a vzor jazyka. Syntax vzoru jazyka zodpovedá syntaxi regulárnych výrazov. Pozri sekciu Krátky prehľad konštrukcií regulárnych výrazov nižšie.

Ak vaša sada pravidiel platí pre pár jazyk-krajina, odporúčame vám posunúť ju nahor pomocou tlačidla Presunúť hore.

Pre editáciu sady pravidiel, jednoducho na ňu kliknite v tabuľke, pravidlá sady sa objavia v spodnej polovici okna.

Zaškrtávacie tlačidlo Zlom/Výnimka určuje, či je to pravidlo pre rozdeľovanie (políčko je zaškrtnuté) alebo pravidlo pre výnimku (políčko nie je zaškrtnuté). Dva regulárne výrazy Pred a Za špecifikujú čo musí byť pred a po nejakej pozícii tak aby sa na ňu vzťahovalo pravidlo výnimky alebo rozdeľovania.

Proces segmentácie môže byť zjednodušený na nasledovné. Predstavte si kurzor pohybujúci sa z pozície pred prvým do pozície po poslednom symbole textu. Pre každú pozíciu kurzora vezmeme každé pravidlo v zadanom poradí a skúsime aplikovať vzor Pred na celý text, ktorý je vľavo od kurzora a vzor Za na text vpravo takže sa dotýkajú kurzora.

Ak je aplikácia niektorého pravidla úspešná, pre pravidlá výnimiek nerobíme nič iba prestaneme skúmať ďalšie pravidlá, a pre pravidlá výnimiek vezmeme text naľavo ako osobitný segment, pre každú pozíciu kurzoru v texte.

#### Jednoduché príklady

Cieľ: nastaviť segment po bodke ('`.`') a pred medzerou
  Pred: `\.` Po: `\s`
  Poznámka: "`\.`" znamená znak "`.`"
  "`\s`" predstavuje akýkoľvek biely znak
Cieľ: nenastaviť segment po "`Mr.<c/code>"`
  Pred: `Mr\.` Po: `\s`
  Poznámka: Nezabudnite nechať políčko pravidla nezaškrtnuté
Cieľ: nastaviť segment po "。" (japonskej bodke)
  Pred: 。 Po: (prázdne)
  Poznámka: Políčko môžete nechať prázdne

### Regulárne výrazy pre použitie v pravidlách segmentácie

Samotné pravidlá segmentácie sú reprezentované pomocou regulárnych výrazov. To umožňuje maximálnu flexibilitu pri definovaní pravidiel a vyhovuje SRX.

#### Krátky prehľad konštrukcií regulárnych výrazov

Toto nie sú jediné konštrukcie, ktoré môžete používať pre pravidlá segmentácie v OmegaT, ale skôr tie, ktoré sú najviac používané. OmegaT podporuje všetky vlastnosti regulárnych výrazov ako sú popísané v štandarde SRX.

Konštrukcia | Zodpovedajúce výrazy
--- | ---
Označenia
`(?i)` | Umožňuje hľadanie bez ohľadu na veľkosť písmen (predvolene vzor rozlišuje veľkosť písmen).
Znaky
x | Znak x, s výnimkou nasledujúcich...
`\u` hhhh | Znak s hexadecimálnou hodnotou `0x` hhhh
`\t` | Znak tabulátora (`'\u0009'`)
`\n` | Znak nového riadku (konca riadku) (`'\u000A'`)
`\r` | Znak návratu vozíka (`'\u000D'`)
Citácia
`\` | Nič, ale cituje nasledujúci znak. Toto sa vyžaduje ak by ste chceli zadanie metaznakov `!$()*+.<>?[\]^{|}` aby zodpovedali sami sebe.
`\\` | Napríklad, toto je znak spätného lomítka
`\Q` | Nič, ale cituje všetky znaky až po `\E`
`\E` | Nič, ale končí citáciu začatú pomocou `\Q`
Triedy znakov
`[abc]` | `a`, `b`, alebo `c` (jednoduchá trieda)
`[^abc]` | Akýkoľvek znak s výnimkou `a`, `b`, alebo `c` (negácia)
`[a-zA-Z]` | `a` až po `z` alebo `A` až po `Z`, vrátane (rozsah)
Preddefinované triedy znakov
`.` | Akýkoľvek znak (okrem znakov ukončujúcich riadok)
`\d` | Číslica: `[0-9]`
`\D` | Nečíslica: `[^0-9]`
`\s` | Biely znak: `[ \t\n\x0B\f\r]`
`\S` | Nebiely znak: `[^\s]`
`\w` | Znak slova: `[a-zA-Z_0-9]`
`\W` | Nie znak slova: `[^\w]`
Označenie hraníc
`^` | Začiatok riadku
`$` | Koniec riadku
`\b` | Hranica slova
`\B` | Nie hranica slova
Viacnásobné kvantifikátory
Tieto budú predstavovať toľko, koľko len môžu. Napríklad, `a+` bude zodpovedať `aaa` v `aaabbb`
X`?` | X, raz alebo vôbec
X`*` | X, nula alebo viackrát
X`+` | X, raz alebo viackrát
Nedobrovoľné kvantifikátory
Tieto budú predstavovať tak málo, ako len môžu. Napríklad, `a+?` bude zodpovedať prvému `a` v `aaabbb`
X`??` | X, raz alebo vôbec
X`*?` | X, nula alebo viackrát
X`+?` | X, raz alebo viackrát
Logické operátory
XY | X nasledované Y
X`|`Y | Buď X, alebo Y
`(`XY`)` | XY ako jediná skupina

Právne poznámky