Dołączenie do zespołu tłumaczy KDE
Zapisać się na listę dyskusyjną kde-transl. Tutaj moja uwaga do wszystkich
którzy zgłosili się do pomocy, proszę jak najszybciej zapisać się i napisać, że
już jesteście. Oprócz nowych osób, mam tu na myśli Krystiana Zubel, od którego
nie dostałem żadnej odpowiedzi. Do tego dochodzi Norbert Popiołek, mógłbyś
powiedzieć którymi tłumaczeniami będziesz się jeszcze zajmował? Robi się to
wysyłając email pod adres: majordomo@mer.chemia.polsl.gliwice.pl o treści (bez cudzysłowów): "subscribe kde-transl". Nowi tłumacze nie otrzymają plików bez zapisania się na listę.
Po zapisaniu się wysłać list, gdzie można napisać jak dobrze zna się język
i
ile czasu można poświęcić na tłumaczenie. Pamiętać należy także o podaniu
imienia i nazwiska, gdyż na liście autorów musi być takowe odnotowane.
Na liście zostaną przydzielone pliki do tłumaczenia. trzeba się za nie
zabrać.
Jak? O tym poniżej.
Zaczynamy od ściągnięcia plików. Pliki są podzielone na pakiety i dostępne
pod
adresem: http://mer.chemia.polsl.gliwice.pl/kde/transl/index.html Podczas przydzielania zostaje podana nazwa pliku i pakiet do którego należy, więc nie powinno być problemów ze znalezieniem plików.
Teraz tworzymy dowolny katalog w którym będziemy trzymać tłumaczenia. W tym
katalogu tworzymy serię podkatalogów, każdy o nazwie danego pakietu np.
kdenetwork, pożniej przenosimy przydzielone pliki do podkatalogu o nazwie
pakietu do którego on należy np. knode.po przenosimy do kdenetwork. Gdy będziemy
wysyłać juz wykonane tłumaczenia, pakujemy tylko katalog główny tych
tłumaczeń i wysyłamy do mnie. Nim
zaczniemy tłumaczenie należy zapoznać się z tekstami: Wytyczne dla tłumaczy KDE
i Słownikiem tłumaczy KDE i GNOME. Odnośniki dostępne w częsci zasoby
Ustawienia KBabel
Przystępujemy do tłumaczenia, osobiście używam do tego vi, ale będzie wam
najłatwiej jeśli zaczniecie od KBabel. Jest to bardzo rozbudowany zestaw
programów do tworzenia i zarządzania tłumaczeniami. Najbardziej zainteresować
was powinien moduł do tłumaczeń, zatem klikamy na menu KDE->Narzędzia
Programistów(Development)->KBabel (Translation tool). Po uruchomieniu
przystępujemy do dostosowania opcji.
- Identify:
- Nazwa - Tutaj wpisujemy nasze imię i nazwisko
- Email - Tutaj wpisujemy nasz adres email
- Pełna nazwa języka - Tutaj wpisujemy (bez cudzysłowów) "Polish"
- Kod języka - Wpisujemy "pl"
- Językowa lista mailowa - pl@li.org
- Strefa czasu - +0100 (nie GMT!)
- Liczba formy poj./mnogiej - 2
- Edit:
- Na zakładce ogólne zaznaczamy wszystkie opcje oprócz "Sygnał dźwiękowy przy
błędzie", chyba że ktoś lubi...
- Pozostałe ustawiamy wedle własnych upodobań
- Save:
- Zaznaczamy wszystkie dostępne pola z pierwszych dwóch grup.
- Format poprawienia daty ustawiamy na: "Domyślny format daty"
- Kodowanie ustawiamy na UTF-8 i zaznaczamy opcje utrzymaj kodowanie pliku.
- Resztę ustawiamy wedle życzenia.
Struktura pliku po
Następnie korzystając z Kbabel otwieramy plik i zaczynamy tłumaczyć, niby to
takie proste a jednak można się natknąć na wiele trudności. Obecnie większość
osób nie ma czasu czytać kde-18n howto, zatem postaram się przedstawić po krótce
wytyczne nakreślone przez kierownictwo kde-18n.
Plik .po dzieli się na dwie części:
- Nagłówek:
#, fuzzy
msgid ""
msgstr ""
"POT-Creation-Date: 2000-02-17 00:58+0100\n"
"PO-Revision-Date: 2000-02-17 08:43+MET\n"
"Last-Translator: Thomas Diehl \n"
"Language-Team: Deutsch \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 0.6\n"
Po kolei:
#, fuzzy
Opisana w dalszej części artykułu informacja o niedokończeniu
tłumaczenia,
usuwamy ją, gdy skończymy tłumaczenie. KBabel zrobi to za nas sam.
msgid ""
msgstr ""
Te początkowe linijki muszą być, aby uniknąć błędów podczas
parsowania.
"POT-Creation-Date: 2000-02-17 00:58+0200\n"
Tego nie dotykamy.
"PO-Revision-Date: 2000-02-17 08:43+0100\n"
To jest data naszej ostatniej poprawki w tłumaczeniu. Musi być ona w
formacie:
YYYY/MM/DD HH:MM+GMT_OFFSET,
czyli np. dla polskiego tłumaczenia ostatnio zmodyfikowanego 12 stycznia 2002 o
14:30:
"PO-Revision-Date: 2003-01-12 14:30+0100\n"
"Last-Translator: Czarny Kot \n"
Tutaj wpisujemy nasze imię i nazwisko, a następnie adres email.
"Language-Team: Polish \n"
Wpisujemy dane dotyczące polskiej listy o tłumaczeniach, takie jak powyżej.
"MIME-Version: 1.0\n"
Oznaczenie wersji MIME pozostawiamy bez zmian
"Content-Type: text/plain; charset=utf8\n"
"Content-Transfer-Encoding: 8bit\n"
Definiujemy zestaw znaków i kodowanie, tutaj wyraźnie zaznaczamy, że chodzi
o Unikod 8bitowy (16 bitowy nie jest jeszcze zaimplementowany w KDE)
"X-Generator: KBabel 0.6\n"
Opcjonalny nagłówek jaki wstawia KBabel lub inny program używany do
tłumaczenia (np. KTranslator z kde 1.x.x), ja lubię umieszczać tu vim 6.0 :)
Osoby korzystające z KBabel nie muszą się niczego obawiać, gdyż on sam wszystko
wypełni, wystarczy, że wszystkie ustawienia będą zgodne z podanymi wyżej.
- Treść:
Treść pliku po dzieli się na wiele kawałków wywodzących się z poniższego
schematu:
#: plik.cpp:12
msgid "Setup screen saver."
msgstr "Konfiguruj wygaszacz ekranu."
#: plik.cpp:12
Tutaj znajduje się nazwa pliku i numer wersu w którym jest używany niżej
podany string.
msgid "Setup screen saver."
String oryginalny, jego mamy przetłumaczyć.
msgstr "Konfiguruj wygaszacz ekranu."
Tutaj wpisujemy przetłumaczony string.
Jeśli chodzi o KBabel, to zawartość msgid pojawia się w górnym okienku, a w
dolnym msgstr, zaś to co znajduje się przed msgid (wszystkie linijki poprzedzone
#), pokazywane są w prawym górnym okienku.
Tłumaczenie interfejsu użytkownika (GUI)
W tłumaczeniu interfejsu użytkownika występuje wiele specjalnych par
stringów, które należy potraktować niestandartowo:
- Teksty znajdujące się w oknach "About...", w zakładce tłumacze:
msgid ""
"_: NAME OF TRANSLATORS\n"
"Your names"
Tłumaczymy jako:
msgstr "Imię i nazwisko tłumacza1, Imię i nazwisko tłumacza 2, itp..."
#: _translatorinfo.cpp:3
msgid ""
"_: EMAIL OF TRANSLATORS\n"
"Your emails"
Jako:
msgstr "email tłumacza1, email tłumacza2, itp..."
Gdzie tłumacz jeden to my, a tłumacze2 do n to osoby które wcześniej tłumaczyły
ten plik, jeżeli przejęliśmy go po kimś, to wypadałoby umieścić odpowiednią
adnotację. Jeśli od zera tłumaczymy dany plik to oczywiście podajemy tylko swoje
dane.
- Pozostałości po nieużywanych tłumaczeniach.
#~ msgid "Where do you want to go tomorrow?"
#~ msgstr "Where do you want to go tomorrow?"
#~ msgid "No comment available"
Jeśli otrzymany plik zawiera linijki zaczynające się od #~ to takie
linijki należy usunąć, gdyż są to pozostałe ze starszej wersji pliku linie
zawierające tłumaczenie tekstów nie używanych już w danym programie, jeżeli
używamy KBabel, on zrobi to za nas automatycznie.
- Podkreślenia i skróty klawiaturowe.
msgid "Show &Status Bar"
msgstr ""
tłumaczymy jako:
msgid "Show &Status Bar"
msgstr "Pokaż pasek &stanu"
Gdyż znak & oznacza podkreślenie litery i uznanie jej za skrót klawiaturowy do
danej pozycji. Rzadko jednak zdarza się, żeby te litera podkreślona w msgid
występowały w msgstr,dlatego naszym najważniejszym celem jest, aby w danym menu
nie powtarzały się te same skróty: np. w menu Plik: "&Zapisz" i "&Zapisz jako"
tylko: "&Zapisz" i "Zapisz &jako". Nie zawsze jednak można się tego dopatrzyć,
ale nie ma się o co martwić, bo my i tak wszystko sprawdzimy.
- Niejednoznaczne tłumaczenia.
#: kvoctrain.cpp:1354 kvoctrain.cpp:1404
#, fuzzy
msgid "Create &Multiple Choice"
tłumaczymy jako:
#: kvoctrain.cpp:1354 kvoctrain.cpp:1404
msgid "Create &Multiple Choice"
msgstr "Test &wyboru"
Gdyż komentarz fuzzy oznacza informację dla tłumacza, że ten string jest
niejednoznaczny, powstaje ono na bazie prymitywnych heurystycznych skanerów
gettexta, a oznaczane są tak stringi, które uległy zmianie w stosunku do
poprzednich wersji, więc musimy usuwać każdy wpis fuzzy, jeśli jest on sam w
linijce to usuwamy cala linijkę np.
(#, fuzzy), ale jeżeli za informacją fuzzy stoi kolejna np. (#, fuzzy,
c-format), to usuwamy jedynie część: ", fuzzy", tak, żeby pozostało: "#,
c-format". Oczywiście KBabel robi to za nas automatycznie :)
- Tłumaczenia z przekazywaną zmienną.
#: kpackage.cpp:613
#, fuzzy, c-format
msgid "Unknown package type: %1"
msgstr "Nieznany typ pakietu: %s"
należy przetłumaczyć:
#: kpackage.cpp:613
#, c-format
msgid "Unknown package type: %1"
msgstr "Nieznany typ pakietu: %1"
Jak nietrudno zauważyć różnica pojawia się w znaku stojącym po %. Informacja
c-format znajdująca się na msgid informuje nas, że są to wartości zmiennych. W
standardach przyjętych przy KDE 1.x.x uznano, że będą stosowane formy %s, %d
itp. aktualnie wymagane jest użycie %1, %2 itp., zatem, należy zamienić w
starych tłumaczeniach nazwy zmiennych na uaktualnione. Jak można było
przewidzieć KBabel robi to za nas.
- Komentarze w tłumaczeniach.
#: kdeui/kstdaction.cpp:669
msgid ""
"_: beginning (of line)\n"
"&Home"
msgstr "&Początek linii"
#: src/kernel/qaccel.cpp:562
msgid ""
"_: QAccel\n"
"Home"
msgstr "Pos1"
Fragmentów msgid zaczynających się od _: nie tłumaczymy, gdyż są to tylko
komentarze mające na celu ułatwienie tłumaczowi odgadnięcie kontekstu podanego
stringa. KBabel
- Opuszczanie cudzysłowów.
#: cardmaps.cpp:105
#, c-format
msgid "kpat: PANIC, cannot load card pixmap \"%1\"\n"
msgstr "kpat: krytyczny błąd, nie można załadować mapy pikselowej karty
\"%1\"\n"
W tym momencie ze względu na konieczność użycia cudzysłowów w stringu,
postępujemy jak w większości języków programowania poprzedzając istniejące
cudzysłowy znakiem: "\". Najprościej jest po prostu wkleić msgid w miejsce
msgstr, wcisnąć insert i zastępować znaki na bieżąco.
W ten oto sposób przechodzimy do tłumaczenia dokumentacji
Tłumaczenie dokumentacji
Format dokumentacji w KDE zmieniał się co wersję. Aktualnie obsługiwany jest
format docbook, jednakże, żeby ułatwić tłumaczenie, zastosowano mechanizm
tworzenia plików po, zatem za pomocą specjalnego programu (xml2po z kdesdk)
pliki
po są generowane i umieszczane w CVS.
Istnieją tutaj jednakże istotna różnica w porównaniu do tłumaczeń GUI:
- Przygotowywanie tłumaczenia
W ustawieniach KBabel należy w dziale Edit,
zakładce Wygląd zaznaczyć opcję: "Pokaż podwójny cudzysłów", jest to konieczne,
aby zobaczyć spacje znajdujące się na końcu każdej linii:
"... volume of your"
"sound card."
wyjdzie na:
... volume of yoursound card.
- Tekst pomiędzy znacznikami XML
Pomiędzy znacznikami i dozwolone jest używanie jedynie
tekstu np. &kmidi; jest nieprawidłowe. Zamiast tego powinno
być kmidi.
Dwie pary msgid i msgstr są przeznaczone dla tłumaczących dokumentację. Są w
pewien sposób specjalne, gdyż nie występują w oryginale. Są to pola
CREDIT_FOR_TRANSLATORS i ROLES_OF_TRANSLATORS. Jak już się pewnie domyślacie
pierwsze z nich służy do podania imion i nazwisk tłumaczy, a to drugie do
zaznaczenia, który z tłumaczy co zrobił. Oto przykład dla dwóch tłumaczy:
msgid "CREDIT_FOR_TRANSLATORS"
msgstr ""
"Tłumaczenie IMIĘ1 NAZWISKO1 "
"ADRESEMAIL1"
"Poprawa i sprawdzenie tłumaczenia IMIĘ2 NAZWISKO2 "
"ADRESEMAIL2"
oraz
msgid "ROLES_OF_TRANSLATORS"
msgstr ""
"
"role=\"translator\">IMIĘ1NAZWISKO1"
"ADRESEMAIL1"
"Tłumaczenie"
"
"role=\"translator\">IMIĘ2NAZWISKO2"
"ADRESEMAIL2"
"Poprawa i sprawdzenie tłumaczenia"
Należy pamiętać, że jakiekolwiek cudzysłowy użyte w tłumaczeniu należy
poprzedzić
znakiem "\". Np.
"...rola=\"tłumacz\"...
zamiast
"... rola="tłumacz"...
KBabel w przypadku wpisania cudzysłowu automatycznie dodaje znak "\".
Zmiany w ustawieniach KBabel.
Jeśli używamy KBabel, to należy wyłączyć opcję podświetlania tekstu w
przypadku
wystąpienia błędu (Ustawienia->Konfiguruj KBabel->Edit, Ogólne, Zmień kolor
błędnego tekstu). Jeśli ciekawi was dlaczego tak jest zapraszam tutaj.