## Praca z tekstem sformatowanym

- Znaczniki formatujące

- Segmentacja znaczników i zdań

- Operacje na znacznikach

- Zagnieżdżanie grup znaczników

- Nakładanie się grup znaczników

- Walidacja grup znaczników

- Podpowiedzi dotyczące zarządzania znacznikami

- Symbole zastępcze funkcji printf

Informacja o formatowaniu występująca w pliku źródłowym zazwyczaj musi być odtworzona w pliku docelowym. Wbudowana informacja o formatowaniu występująca w obsługiwanych formatach (aktualnie DocBook, HTML, XHTML, Open Document i OpenOffice.org) jest prezentowana w OmegaT jako znaczniki. W normalnym przypadku znaczniki są ignorowane przy porównywaniu różnych tekstów do celów dopasowania. Znaczniki odtworzone w przetłumaczonym segmencie będą występować w przetłumaczonym dokumencie.

### Znaczniki formatujące

Nazywanie znaczników: Znaczniki składają się z od jednej do trzech liter i liczby. Unikalny numer pozwala na grupowanie odpowiadających sobie znaczników i rozróżnianie znaczników, które mogą mieć ten sam skrót literowy, ale są w rzeczywistości różne. Litery mogą, ale nie muszą, odzwierciedlać rodzaj formatowania, jaki reprezentuje znacznik (np. pogrubienie, kursywa itp.)

Numeracja znaczników:Znaczniki są numerowane w porządku rosnącym, tworząc grupy znaczników. "Grupami znaczników" nazywamy tu albo pojedynczy znacznik (jak `<br1>`), albo 2 znaczniki tworzące parę (jak `<i0>` i `</i0>`). Wewnątrz segmentu pierwsza grupa (para lub pojedynczy znacznik) otrzymuje numer 0, druga numer 1 itd. Pierwszy z poniższych przykładów ma 3 grupy znaczników (para, pojedynczy znacznik i kolejna para), drugi przykład ma tylko jedną grupę (parę).

Pary i pojedyncze znaczniki:Znaczniki zawsze występują albo jako pojedyncze, albo w parach. Pojedyncze znaczniki wskazują informację o formatowaniu, która nie wpływa na otaczający tekst (na przykład dodatkowy odstęp lub koniec wiersza).

     <segment 2132><b0><Ctr+N></b0>, <br1><b2><Enter></b2><koniec segmentu>

`<br1>` jest pojedynczym znacznikiem i nie wpływa na otaczający tekst. Pary znaczników zwykle wskazują informację o stylu, odnoszącą się do tekstu pomiędzy znacznikiem otwierającym i znacznikiem zamykającym z pary. Cokolwiek dzieje sie z parą, znacznik otwierający powinien zawsze poprzedzać znacznik zamykający:

     <segment 3167>Log file (<b0>log.txt</b0>) dla śledzenia operacji i błędów.<koniec segmentu>

`<b0>` i `</b0>` tworzą parę i wpływają na tekst `log.txt`.

### Segmentacja znaczników i zdań

OmegaT tworzy swoje znaczniki przed przeprowadzeniem segmentacji zdań. W zależności od zasad segmentacji, może wydawać się, jakby znaczniki nie respektowały powyższych zasad numerowania i grupowania. Spójrz na następujący tekst: "Before: \. After: \s". Można by się spodziewać następującej segmentacji(<b0> i </b0> stoją na początku i końcu kursywy):

     <segment ....> <b0>Before: \. After: \s</b0><koniec segmentu>

Jednak kiedy zastosuje się do tego segmentu domyślne zasady segmentacji, otrzyma się następujący rezultat:

     <segment 1990> <b0>Before: \. <koniec segmentu>

    <segment 1991> After: \s</b0><koniec segmentu>

Zastosowanie zasady podziel segment po kropce, po której następuje spacja dzieli oryginalny tekst na dwa segmenty, mimo że dwa znaczniki `<b0>` i `</b0>` powinny być w tym samym segmencie. W niektórych przypadkach może to nawet sprawiać problemy przy tłumaczeniu, kiedy znaczniki muszą być umieszczone inaczej w języku docelowym zgodnie z szykiem wyrazów w danym języku (patrz Operacje na znacznikach poniżej).

### Operacje na znacznikach

Ze znacznikami należy postępować ostrożnie. Jeżeli zostaną przypadkowo zmienione, formatowanie pliku docelowego może być błędne. Rozsądne podejście to "Nie naprawiaj tego, co nie jest popsute". Dobrze jest jednak wiedzieć, jakie są możliwości i jak z nich korzystać.

Powielanie grupy znaczników: Aby powielić grupę znaczników, po prostu skopiuj je w wybranym miejscu. Pamiętaj, że w parze znaczników znacznik otwierający musi poprzedzać znacznik zamykający. Formatowanie reprezentowane przez grupę, którą powieliłeś, zostanie zastosowane do części, do której ją skopiowałeś.

Przykład:

     <segment 0001><b0>To formatowanie</b0> zostanie skopiowane tutaj.<koniec segmentu>

Po skopiowaniu:

     <segment 0001><b0>To formatowanie</b0> zostało <b0>skopiowane tutaj</b0>.<koniec segmentu>

Usuwanie grup znaczników:Aby usunąć grupy znaczników, po prostu usuń je z segmentu. Pamiętaj, że z pary musi być usunięty zarówno znacznik otwierający, jak zamykający, aby zapewnić prawidłowe usunięcie formatowania, w przeciwnym wypadku plik przetłumaczony może zostać uszkodzony. Usuwając grupę znaczników, usuniesz związane z nią formatowanie z pliku przetłumaczonego.

Przykład:

     <segment 0001><b0>To formatowanie</b0> zostanie usunięte.<koniec segmentu>

Po skasowaniu:

     <segment 0001>To formatowanie zostało usunięte.<koniec segmentu>

Zmiana kolejności grup znaczników:Aby zmienić kolejność grup znaczników zgodnie z inną strukturą języka w tłumaczeniu, po prostu umieść grupę znaczników tam, gdzie powinna się znajdować w tłumaczeniu. Formatowanie będzie w ten sposób przeniesione razem z częścią, do której się odnosi.

Przykład:

     <segment 0001><b0>Formatowanie zerowe</b0> i <b1>formatowanie pierwsze</b1> zostaną zamienione.<koniec segmentu>

Po zmianie kolejności:

     <segment 0001><b1>Formatowanie pierwsze</b1> i <b0>formatowanie zerowe</b0> zostały zamienione.<koniec segmentu>

### Zagnieżdżanie grup znaczników

Zmiana kolejności grup znaczników może spowodować zagnieżdżenie grupy znaczników wewnątrz innej grupy znaczników. Wszystko jest w porządku, jeżeli grupa otaczająca całkowicie otacza grupę otaczaną. Inaczej mówiąc, podczas przenoszenia par znaczników upewnij się, że zarówno znacznik otwierający, jak zamykający zostały przeniesione do tekstu docelowego, w przeciwnym wypadku plik przetłumaczony może zostać uszkodzony i może się nie otwierać. Do zagnieżdżonej części będą więc zastosowane oba formatowania.

Przykład:

     <segment 0001><b0>Formatowanie</b0> <b1>pierwsze</b1> zostanie zagnieżdżone wewnątrz formatowania zerowego.<koniec segmentu>

Po zagnieżdżeniu:

     <segment 0001><b0>Formatowanie <b1>pierwsze</b1></b0> zostało zagnieżdżone wewnątrz formatowania zerowego.<koniec segmentu

### Nakładanie się grup znaczników

Nakładanie się jest efektem nieprawidłowych operacji na parach znaczników i powoduje uszkodzenie formatowania, a czasem nawet niemożność otwarcia pliku przetłumaczonego. Przykład:

     <segment 0001><b0>Formatowanie</b0> <b1>pierwsze</b1> zostanie poplątane.<koniec segmentu>

Po nieprawidłowej operacji:

     <segment 0001><b0>Formatowanie <b1>pierwsze</b0> </b1>jest teraz bardzo poplątane.<koniec segmentu>

### Walidacja grup znaczników

Funkcja walidacji znaczników wykrywa zmienione znaczniki (celowo lub przypadkowo) i pokazuje segmenty, których to dotyczy. Uruchomienie tej funkcji (przez wciśnięcie Ctrl+T lub wybranie pozycji menu Tools > Validate tags) spowoduje otwarcie okna zawierającego wszystkie segmenty w pliku podejrzane o to, że zawierają błędne znaczniki w tłumaczeniu. Błędy w tłumaczonym tekście ze znacznikami są często problemem w plikach OpenDocument lub OpenOffice.org, ponieważ pliki te mogą nie otwierać się z powodu problemów ze znacznikami powstałych procesie tłumaczenia. Poprawianie znaczników i odtwarzanie dokumentów docelowych jest łatwe przy użyciu funkcji Popraw znaczniki. Okno, które otwiera się po wciśnięciu Ctrl+T, pokazuje tabelę składającą się z 3 kolumn z linkiem do segmentu, segmentem oryginalnym i segmentem docelowym:

1

Inną czcionkę wyświetlaną można wybrać w oknie dialogowym <b0>Czcionka wyświetlana</b0>. Otwiera się je wybierając pozycję menu <i1>Opcje</i1> > <i2>Czcionka...</i2>. W oknie dialogowym można zmienić rodzaj i rozmiar czcionki.

'n Mens kan 'n ander vertoonfont kies met die <b0>Vertoonfont</b0>-dialoogkassie. Kies <i1>Opstelling</i1> > Vertoonfont... op die kieslys. Die lettertipe én die lettergrootte kan met dié dialoogkassie verander word.

Znaczniki są wyświetlone niebieską czcionką pogrubioną, aby ułatwić porównanie zawartości oryginalnej i przetłumaczonej. Kliknij na link, aby uaktywnić segment w oknie Edycji. Popraw błąd, jeśli to konieczne, i wciśnij `Ctrl+T`, aby powrócić do okna walidacji znaczników w celu poprawienia innych błędów. Błędy znaczników to operacje na znacznikach w tłumaczeniu, które nie odtwarzają takiej samej kolejności i numeracji znaczników jak w oryginalnym segmencie. Niektóre operacje na znacznikach są potrzebne i korzystne, niektóre powodują problemy przy tworzeniu dokumentu przetłumaczonego.

### Podpowiedzi dotyczące zarządzania znacznikami

Znaczniki reprezentują pewien rodzaj formatowania tekstu oryginalnego. Uproszczenie formatowania tekstu oryginalnego znacząco przyczynia się do zmniejszenia liczby znaczników. Należy rozważyć, jeśli to możliwe, ujednolicenie używanych rodzajów i rozmiarów czcionek, kolorów itd., ponieważ może to uprościć tłumaczenie i ograniczyć możliwość wystąpienia błędów znaczników. Zajrzyj do rozdziału Operacje na znacznikach, aby zobaczyć, co można robić ze znacznikami. Pamiętaj, że jeżeli znaczniki przeszkadzają ci, a formatowanie nie jest szczególnie istotne dla danego tłumaczenia, usunięcie znaczników może być najłatwiejszym rozwiązaniem problemów.

Jeżeli chcesz widzieć znaczniki w OmegaT, ale nie musisz zachowywać większości formatowania w dokumencie przetłumaczonym, możesz nie włączać znaczników do tłumaczenia. W takim przypadku zwróć szczególną uwagę na pary znaczników, ponieważ usunięcie jednej części z pary, a zapomnienie o usunięciu drugiej, na pewno uszkodzi formatowanie twojego dokumentu. Ponieważ znaczniki są zawarte w samym tekście, można użyć Zasad segmentacji do stworzenia segmentów z mniejszą ilością znaczników. Jest to funkcja zaawansowana i wymagane jest pewne doświadczenie, aby korzystać z niej prawidłowo.

Ważne: OmegaT nie jest jeszcze w stanie wykrywać błędów formatowania w pełni automatycznie, zatem nie będzie ci podpowiadać, jeśli zrobisz błąd lub zmienisz formatowanie, aby lepiej pasowało do twojego języka docelowego. Czasem jednak twój plik przetłumaczony może wyglądać dziwnie, a w przypadku plików OpenDocument / OpenOffice.org może się nawet nie otwierać.

### Symbole zastępcze funkcji printf

W niektórych językach programowania (np. PHP, C) są używane specjalne znaczniki jako symbole zastępcze w ciągach znaków, które są używane w połączeniu z funkcją printf. Np.:

    $var =_("cool");
    echo printf(_("OmegaT is very %s"),$var);

Jeżeli tekstowe ciągi znaków są wyodrębnione z takiego kodu źródłowego (np. za pomocą filtra PO), OmegaT nie zastępuje tych zmiennych znacznikami, ponieważ nie wie na pewno, czy np. `%s` jest rzeczywiście symbolem zastępczym, czy po prostu częścią tekstu. Możesz jednak włączyć walidację tych symboli zastępczych. Wybierz z menu Opcje → Walidacja znaczników.... Możesz wybrać walidację uproszczoną lub pełną.

Oficjalna składnia dla zmiennych funkcji printf jest następująca

    "%" [ARGUMENTSWAPSPECIFIER] [SIGNSPECIFIER] [PADDINGSPECIFIER] [ALIGNMENTSPECIFIER] [WIDTHSPECIFIER] [PRECISIONSPECIFIER] TYPESPECIFIER

Pełna walidacja w pełni obsługuje ten format, z wyjątkiem `WIDTHSPECIFIER`. Przy walidacji uproszczonej sprawdzana jest następująca składnia:

    "%" [ARGUMENTSWAPSPECIFIER] [PRECISIONSPECIFIER] TYPESPECIFIER

Możesz zmienić kolejność symboli zastępczych, ale wtedy musisz dodać ARGUMENTSWAPSPECIFIER, jeśli go nie ma. Oznacza to dodanie numeru kolejnego i znaku dolara po znaku `%`. Np. `"%s is a %s application"` jest równoważne `"%1$s is a %2$s application"`, co możesz przetłumaczyć jako `"a %2$s application is %1$s"`.

Uwagi prawne | Spis treści | Indeks