# Segmentace zdroje

## Obsah

- 1. Základy segmentace
- 2. Segmentace do vět
  - 2.1. O pravidlech
  - 2.2. Nastavení pravidel
    - 2.2.1. Sady pravidel
    - 2.2.2. Jednoduché příklady
  - 2.3. Regulární výrazy pro použití v pravidlech segmentace
    - 2.3.1. Krátký přehled konstrukcí regulárních výrazů

## Základy segmentace

Nástroje pro práci s překladovými paměťmi pracují s textovými jednotkami nazývanými segmenty. Existuje vícero způsobů jak segmentovat text.

OmegaT nejprve zpracuje text pomocí segmentace na úrovni struktur. Během tohoto procesu je to jen struktura zdrojového souboru, která je použitá na vytvoření segmentů. Například textové soubory mohou být segmentované podle zlomů řádků, prázdných řádků nebo vůbec nemusí být segmentované na strukturální úrovni. Soubory s formátováním (dokumenty OpenOffice.org, OpenDocument, XHTML a HTML) jsou segmentované podle blokových tagů (na odstavce).

Přeložitelné atributy objektů (v XHTML nebo HTML souborech) jsou také vytažené do vlastních segmentů.

OmegaT může také segmentovat podle vět. Segmentace podle vět se odehrává při segmentaci na úrovni struktury. Segmenty vytvořené v průběhu kteréhokoliv procesu naneštěstí nemohou být během překladu změněny (rozděleny nebo sloučeny). O tomto omezení u aplikace OmegaT se ví.

Pokud nejste spokojeni se segmentací, budete potřebovat nebo modifikovat zdrojový soubor externě a/nebo modifikovat pravidla pro větnou segmentaci. Když je toto hotovo, budete muset znovu projekt načíst, aby se Vaše změny projevily.

## Segmentace podle vět

Po té, co program OmegaT rozdělil zdrojový soubor na segmenty podle logických jednotek, pro formátované soubory obyčejně dle odpovídajících odstavců, bude dále segmentovat tyto bloky do vět pokud nevypnete Segmentaci na úrovni vět. Všeobecně řečeno, může OmegaT segmentovat logické bloky zdrojového souboru na jakékoliv segmenty jaké nastavíte. Nicméně, když ve výchozím nastavení OmegaT segmentuje do vět, budeme to nazývat segmentace na úrovni vět.

Segmentace podle vět byla vytvořená s ohledem na standard Segmentation Rules eXchange (SRX, tj. Výměna pravidel segmentace), avšak v době psaní tohoto, program OmegaT ani nepodporuje všechny vlastnosti SRX, ani není schopný importovat/exportovat pravidla definovaná ve formátu SRX. Pokud víte jak SRX funguje, už víte jak funguje OmegaT, protože pravidla fungování jsou víceméně stejná.

### O pravidlech

Existují dva druhy možných pravidel.

- Pravidla rozdělování rozdělují text do segmentů.
- Pravidla výjimek specifikují, které kusy textu by neměly být oddělené od ostatních.

Příklad pravidla rozdělování: "Did it make sense? I was not sure." může být segmentované jako dvě věty po "`?`". Mělo by zde být pravidlo rozdělování pro "`?`".

Příklad pravidla výjimek: "Who is afraid of Mrs. Woolf?" nemůže být segmentované po "`.`". Mělo by tu být pravidlo výjimky pro "`Mrs.`".

Předdefinovaná pravidla rozdělování by měla být dostatečná pro většinu evropských jazyků a japonštinu, ale doporučujeme definovat více pravidel výjimek pro jazyk ze kterého překládáte, pokud je jasné, že není možné předdefinovat všechny možné výjimky pro všechny možné jazyky.

### Nastavení pravidel

Abyste nastavili pravidla vyberte v hlavním menu položku Možnosti -> Segmentace.... Povšimněte si, že když změníte volby segmentace když je otevřený nějaký projekt, budete muset projekt znovu načíst, aby se změny projevily.

#### Sady pravidel

Všechny sady pravidel segmentace s odpovídajícím vzorem jazyka jsou použité v daném pořadí priority, takže pravidla pro konkrétní jazyk by měla být vyšší než ta z výchozího nastavení.

Tak například, pravidla pro kanadskou francouzštinu (FR-CA) by měla být ve výchozím nastavení výše než pravidla pro francouzštinu (FR.*), a výše než (.*). Potom v průběhu překladu z kanadské francouzštiny bude Váš projekt používat pravidla definované pro tento jazyk, pravidla pro francouzštinu, a předvolená pravidla ve správném pořadí.

Pro vytvoření prázdné sady pravidel, klikněte na Přidat v horní polovině dialogového okna. Ve spodní části tabulky se objeví prázdný řádek. Změňte název sady pravidel a vzor jazyka. Syntaxe vzoru jazyka odpovídá syntaxi regulárních výrazů. Viz sekci Krátký přehled konstrukcí regulárních výrazů.

Pokud vaše sada pravidel platí pro pár jazyk-země, doporučujeme Vám posunout ji nahoru pomocí tlačítka Přesunout nahoru.

Pro editaci sady pravidel, jednoduše na ni klikněte v tabulce, pravidla sady se objeví ve spodní polovině okna.

Zaškrtávací políčko Zlom/Výjimka určuje, zda je pravidlo pro rozdělení (políčko je zaškrtnuté), nebo pravidlo pro výjimku (políčko není zaškrtnuté). Dva regulární výrazy 'Vzor před' a 'Vzor za' specifikují, co by před a po nějaké pozici mělo stát, aby se na ni vztahovalo pravidlo výjimky nebo rozdělení.

Proces segmentace může být zjednodušený na následovné. Představte si kurzor pohybující se z pozice před prvním do pozice za posledním symbolem textu. Pro každou pozici kurzoru vezměme každé pravidlo v zadaném pořadí a zkusme aplikovat vzor Před na celý text, který je vlevo od kurzoru a vzor Za na text vpravo, takže se dotýkají kurzoru.

Pokud je aplikace některého pravidla úspěšná, pro pravidla výjimek neuděláme nic, jen přestaneme zkoumat další pravidla, a pro pravidla zlomu vezměme text vlevo jako samostatný segment, pro každou pozici kurzoru v textu.

#### Jednoduché příklady

Cíl: nastavit segment po jisté periodě (v tomto případě tečka '`.`') a před mezerou
  Před: `\.` Za: `\s`
  Poznámka: "`\.`" představuje znak "`.`"
  "`\s`" představuje jakýkoliv bílý znak
Cíl: nastavit segment po "`Mr.<c/code>"`
  Před: `Mr\.` Za: `\s`
  Poznámka: Nezapomeňte nechat políčko pravidla nezaškrtnuté
Cíl: nastavit segment "。" (japonská tečka)
  Před: 。 Za: (prázdné)
  Poznámka: Políčko můžete nechat prázdné

### Regulární výrazy pro použití v pravidlech segmentace

Samotná pravidla segmentace jsou reprezentována pomocí regulárních výrazů. To umožňuje maximální flexibilitu při definování pravidel a vyhovuje SRX.

#### Krátký přehled konstrukcí regulárních výrazů

Toto nejsou jediné konstrukce, které můžete používat pro pravidla segmentace v OmegaT, ale spíše takové, které jsou nejvíce používané. OmegaT podporuje všechny vlastnosti regulárních výrazů tak, jak jsou popsány ve standardu SRX.

Pojem | Odpovídající výrazy
--- | ---
Označení
`(?i)` | Umožňuje hledání bez ohledu na velikost písmen (ve výchozím nastavení se rozlišují velká a malá písmena).
Znaky
x | Znak x, s výjimkou následujících...
`\u` hhhh | Znak s hexadecimální hodnotou `0x` hhhh
`\t` | Znak tabulátoru (`'\u0009'`)
`\n` | Znak nového řádku (konce řádku) (`'\u000A'`)
`\r` | Znak návratu vozíku (`'\u000D'`)
Uvozující znaky
`\` | Lomítko samo o sobě neznamená nic, ale uvozuje následující znak. Toto se vyžaduje, pokud byste chtěli zadání metaznaků `!$()*+.<>?[\]^{|}` tak, aby odpovídaly samy sobě.
`\\` | Například toto je znak pro hledání zpětného lomítka
`\Q` | Nic neznamená, ale vymezuje všechny znaky až po `\E`
`\E` | Nic neznamená, ale končí vymezení započaté pomocí `\Q`
Třídy znaků
`[abc]` | `a`, `b` nebo `c` (jednoduchá třída)
`[^abc]` | Jakýkoliv znak mimo `a`, `b` nebo `c` (negace)
`[a-zA-Z]` | `a` až po `z` nebo `A` až po `Z`, včetně (rozsah)
Předdefinované třídy znaků
`.` | Jakýkoliv znak (kromě znaků ukončujících řádek)
`\d` | Číslo: `[0-9]`
`\D` | Ne-číslo: `[^0-9]`
`\s` | Znak mezery: `[ \t\n\x0B\f\r]`
`\S` | Znak ne-mezery: `[^\s]`
`\w` | Znak slova: `[a-zA-Z_0-9]`
`\W` | Znak ne-slova: `[^\w]`
Označení hranic
`^` | Začátek řádku
`$` | Konec řádku
`\b` | Hranice slova
`\B` | Hranice ne-slova
Vícenásobné kvantifikátory
Tyto budou představovat tolik, kolik jen mohou. Například: `a+` bude odpovídat `aaa` v `aaabbb`
X`?` | X, jednou nebo vůbec
X`*` | X, nula- nebo vícekrát
X`+` | X, jednou nebo vícekrát
Líné kvantifikátory
Tyto budou představovat tak málo, jak jen mohou. Například: `a+?` bude odpovídat prvnímu `a` v `aaabbb`
X`??` | X, jednou nebo vůbec
X`*?` | X, nula- nebo vícekrát
X`+?` | X, jednou nebo vícekrát
Logické operátory
XY | X následované Y
X`|`Y | Buď X a nebo Y
`(`XY`)` | XY jako samostatná skupina

Právní poznámky