Tłumaczenie plików gettext

Opis Gettext - systemu tłumaczeń wielojęzycznych aplikacji i sposobu tłumaczenia i wykorzystywania plików tłumaczeń po i mo

Tłumaczenie większości aplikacji unixowych jest proste. Chodzi o większość korzystającą z GNU gettext jako "systemu" obsługi języków. Praktycznie wszystkie aplikacje C/C++ i spora część aplikacji napisana w językach interpretowalnych (np. Python) korzysta z tego rozwiązania. Musimy pobrać źródła aplikacji i sprawdzić czy ma katalog z plikami *.po - pliki te są właśnie plikami tłumaczeń gettexta.

Jak tłumaczyć

Po pierwsze skontaktuj się z autorem aplikacji i spytaj czy do tłumaczenia jest tylko plik *.po, czy może coś więcej i ew. dla jakiej wersji robić tłumaczenie (gdy np. jest wersja stabilna i rozwojowa). Jeżeli mamy to już za sobą to otwieramy "czysty" plik *.po zawyczaj NAZWA_APLIKACJI.po Czysty czyli z pustymi wierszami msgstr (msgstr ""). Jeżeli nie ma to używamy istniejącego. Zapisujemy nasze tłumaczenie jako pl.po korzystając z edytora tekstowego z kodowaniem ustawionym na UTF-8 a nie iso-8859-2 (Kate spokojnie wystarczy). Tłumaczenie polega na wpisywaniu polskich fraz w msgstr bez ruszania msgid:
#: guarddog.cpp:407
msgid ""
"An error occured while reading the protocol database.*N*"
"*N*"
"Details: "%1""
msgstr ""

#: guarddog.cpp:418
msgid "Zone"
msgstr ""
#: guarddog.cpp:407
msgid ""
"An error occured while reading the protocol database.*N*"
"*N*"
"Details: "%1""
msgstr "Pojawił się błąd podczas wczytywania bazy danych protokołów.*N*"
"Szczegóły:  "%1""

#: guarddog.cpp:418
msgid "Zone"
msgstr "Obszar"
Ważne jest by w tłumaczeniu wszystkie symbole typu %1, %COŚ itd. były obecne. Tak samo znak przejścia do nowej linii - /n powinien być stosowany co sensowną odległość (/n nie musimy obowiązkowo umieszczać w danym miejscu, resztę znaków "specjalnych" musimy).

Po przetłumaczeniu wszystkiego wysyłamy plik *.po autorowi i gdy zostanie dodany do aplikacji warto sprawdzić czy tłumaczenia są poprawne, czy poprawnie zinterpretowaliśmy znaczenie fraz (Notka: "name" dla obiektu martwego to nie "imię" tylko "tytuł" lub "nazwa".). Jeżeli mieliśmy nieco do czynienia z plikami makefile to edytując makefile.in w katalogu z plikami *.po możemy od razu sprawdzić tłumaczenie kompilując i instalując aplikację.
blog comments powered by Disqus

Kategorie

Strony