po4a-runtime(7) po4a i tłumaczenie komunikatów programów bez użycia Autotools

Wstęp

Z pomocą po4a-build, po4a wspiera także dodawanie tłumaczeń komunikatów skryptów przy użyciu narzędzi gettext, ale bez wymagania, żeby używane były Autotools i typowy proces ./configure.

Używając przykładowych fragmentów pliku Makefile, pakiety mogą bezproblemowowykorzystywać intltool.

Układ

Tłumaczenia dokumentacji NIE powinny używać tego samego katalogu po/ co katalog tłumaczeń komunikatów programów. Podczas gdy tłumaczenia komunikatów programów mogą używać innych katalogów niż po/, zazwyczaj prościej jest dostosować się do konwencji.

Wiele języków programowania

Słowo o pakietach używających skryptów napisanych w kilku językach programowania. Typowym połączeniem jest używanie Perla i skryptów powłoki. Notabene: gettext POGUBI SIĘ i opuści komunikaty z jednego lub drugiego języka, chyba że używane są rozszerzenia plików, co jest rozwiązaniem sprawiającym najmniej problemów.

Podczas używania wielu języków, prosimy poeksperymentować z różnymi ustawieniami w po/Makevars, tak żeby uzyskać wszystkie potrzebne komunikaty w pliku POT.

W szczególności problematyczne może być podanie dwóch języków w po/Makevars. Zamiast:

 # Nie rób tego:
 XGETTEXT_OPTIONS = -L Perl -L Shell --from-code=iso-8859-1

Prosimy rozważyć zmianę nazwy (lub utworzenie dowiązań symbolicznych dla) wszystkich plików jednego spośród używanych języków i nie podawać opcji -L. Pliki z odpowiednimi rozszerzeniami muszą istnieć tylko podczas przetwarzania pliku po/POTFILES.in.

The --keywords option can also be useful - see the xgettext(1) documentation.

Wypełnianie katalogu po/

Tak więc należy utworzyć główny katalog po/, a następnie wypełnić go, używając przykładowych plików z /usr/share/doc/po4a/examples/.
LINGUAS
Must exist, even if empty. Consists of a list of translations - each line not starting with a '#' must match an existing PO file. E.g. if LINGUAS contains a single line, 'fr', an fr.po file must exist alongside the LINGUAS file.

 $ cat po/LINGUAS
 cs
 de
 fr
 $

Zgodnie z konwencją, plik LINGUAS jest posortowany alfabetycznie, jednakże jest to przeprowadzane ręcznie.

POTFILES.in
Lista plików zawierających komunikaty do przetłumaczenia pochodzące np. ze skryptów. Jeżeli jest używany katalog po/ najwyższego poziomu, ścieżki powinny być względne w stosunku do głównego katalogu, a nie w stosunku do katalogu po/.

 $ ls -l
 myscript.pl
 another.pl
 foo/support.pl
 po/
 po/POTFILES.in
 $ cat po/POTFILES.in
 myscript.pl
 another.pl
 foo/support.pl
 $

Proszę zauważyć, że jest wspierane, by skrypty jednocześnie zawierały tłumaczenia komunikatów wyjściowych i dokumentacji, np. używając funkcji programu gettext do tłumaczenia komunikatów skryptu i osadzonej w nim dokumentacji w formacie POD. Tak więc nie będzie problemem wymienienie tego samego pliku zarówno w po/POTFILES.in, jak i doc/po4a-build.conf

Makevars-perl.example
Jeśli skrypty są skryptami Perla, proszę skopiować ten przykład do pliku po/Makevars, a następnie dopasować do własnych potrzeb.
Makevars-shell.example
Jeśli skrypty są skryptami powłoki, proszę skopiować ten przykład do pliku po/Makevars, a następnie dopasować do własnych potrzeb.
po4a-build.make
Proszę skopiować ten przykładowy plik do po/Makefile. Nie powinien wymagać późniejszej edycji, jednakże może istnieć potrzeba aktualizowania go z /usr/share/doc/po4a/examples/po4a-build.make, jeśli nowe wydanie pakietu po4a zmieni wewnętrzną obsługę intltool (Plik ten został wygenerowany z innego projektu używającego Autotools i intltool).

Budowanie

Poniższe kawałki kodu należy dodać do głównego pliku Makefile albo innego pliku używanego do przygotowywania dystrybuowalnej wersji pakietu źródłowego.

 clean:
        $(MAKE) -C po/ clean
 install:
        $(MAKE) -C po/ install DESTDIR=$(DESTDIR)
 dist:
        $(MAKE) -C po/ pot

(W projekcie korzystającym z Autotools, nastąpiłoby to automatycznie po dodaniu po do wartości zmiennej "SUBDIRS" value w Makefile.am.)

Utrzymywanie

Tłumaczenie komunikatów skryptów nie jest tak proste jak w po4a-build w tym względzie, że dodanie nowego tłumaczenia wymaga edycji pliku po/LINGUAS, jednakże aktualizowanie tłumaczenia sprowadza się do zastąpienia odpowiedniego pliku PO jego nową wersją.

W zależności od sposobu przygotowywania archiwum źródłowego, może być potrzebne wpisanie nowych plików PO w pliku MANIFEST lub dodanie ich do skryptów generujących archiwum (dotyczy to również po4a-build).

Pliki *.mo lub *.gmo w katalogu po/ można usunąć.

Copyright

Chociaż przykładowe pliki są częścią projektu po4a, można ich dowolnie używać, zmieniać je i dystrybuować we własnych projektach bez dodawania wzmianki o po4a lub wymieniania zespołu po4a w informacji o prawach autorskich, tak samo jak nie ma potrzeby wymieniania tam innych narzędzi używanych do budowania, jak na przykład Automake. Jeśli jednak chcesz wymienić po4a, nikt tego nie może zabronić.

AUTORZY

 Neil Williams <[email protected]>

TŁUMACZENIE

 Robert Luberda <[email protected]>