Wtyczki i motywy WordPress powinny być napisane po angielsku a do tłumaczenia używać gettext. Dzięki temu można w prosty sposób dodawać tłumaczenia, zupełnie nie ingerując w kod.
Opiszę tutaj jak w narzędziach konsolowych uzyskać wynikowy plik tłumaczenia.
Całość zaczęła się do tego, że kilka razy zdarzyło mi się przeczytać następujące zdanie:
ten poEdit to jest chory w obsłudze w ogóle…
Muszę przyznać że poEdit coć jest dość siermiężnym narzędziem, które jednak doskonale sprawdza się w swojej roli. Sam jednak z niego już nie korzystam. Zamiast tego używam narzędzi z trybu tekstowego.
Opisane tutaj rozwiązanie stosuję od około dwóch lat i zaoszczędziło mi mnóstwo czasu. Przyznam też od razu, że nie jest dla wszystkich, bo nie każdy lubi „babrać” się w shellu.
dlaczego tak?
prostota rozwiązania
lekkość rozwiązania
możliwość oskryptowania
możliwość użycia na serwerze
do edycji plików językowych używam ulubionego edytora tekstowego
wymagane programy i narzędzia
wordpress-i18n
msgmerge
msgfmt
Do generowania pliku pot wykorzystuję dostarczane przez automattic odpowiednie narzędzia, które można pobrać z repozytorium:
svn co http://svn.automattic.com/wordpress-i18n/tools/trunk ~/wordpress-i18n
Co da nam w rezultacie katalog
wordpress-i18n
w naszym domowym, co zostanie za chwile wykorzystane.
Pozostałe dwa punkty, to polecenia należące do pakietu gettext, który dla Ubuntu instalujemy w następujący sposób:
sudo apt-get install gettext
Cały przykład zawiera wszystko co potrzebne żeby wykonać tłumaczenie dla motywu Twenty Ten.
generowanie pliku twentyten.pot
Na początek należy wygenerować plik bazowy na podstawie katalogu zawierającego to co chcemy mieć przetłumaczone.
Składnia dla makepot.php jest następująca:
php makepot.php PROJEKT KATALOG [PLIK]
Jako PROJEKT wybieramy jedną z następujących opcji: generic, wp-core, wp-ms, wp-tz, wp-plugin, wp-theme, bb, mu, bp, rosetta. Dobraną oczywiście do tego co zamierzamy zrobić.
KATALOG naszego projektu.
PLIK jest opcjonalny, jego brak spowoduje wyświetlenie efektu pracy.
Skoro już wszystko wiadomo, to wygenerujmy plik pot dla wybranego motywu:
php -e ~/wordpress-i18n/makepot.php wp-theme twentyten/languages/twentyten.pot
W efekcie otrzymamy gotowy, zawierający wszystkie możliwe do przetłumaczenia frazy. Tworzenie takiego pliku uruchamiamy zawsze po dodaniu czegoś, co wymaga potem tłumaczenia. Praktycznie wykonuję to zawsze po skończonej pracy, a przed ostatecznym commitem.
tworzenie pliku pl_PL.po
Na początku należy wykonać zwykłe kopiowanie i uzupełnić kilka informacji związanych z tym, że jest to tłumaczenia, a nie plik startowy.
cp twentyten.pot pl_PL.po
aktualizacja pliku pl_PL.po
Do aktualizowania zmian potrzebujemy świeżego pliku pot oraz komendy msgmerge:
msgmerge -U pl_PL.po twentyten.pot
edycja pliku pl_PL.po
Ten punkt pozostawię prawie pusty. Każdy z nas ma swój własny, najukochańszy edytor z którego korzysta i nie moją rolą jest przekonywanie kogokolwiek do vima, bo każdy ma prawo błądzić :D
Tak czy inaczej należy wypełnić w pliku pl_PL.po, odpowiednim tłumaczeniem, wszystkie linijki tego typu:
msgstr ""
generowanie pliku pl_PL.mo
Na sam koniec należy wygenerować binarny słownika pl_PL.mo
msgfmt --statistics -v pl_PL.po -o pl_PL.mo
podsumowanie
Nie wiem jak Wy generujecie pliki językowe, ale ja nie znam aktualnie lepszej metody. Jeżeli znasz inną, może lepszą, to napisz mi to koniecznie w komentarzu. Sprawdzę.
Co prawda warto by jeszcze podpiąć aktualizowanie plików po pod hooka w subversion, ale jakoś nigdy na to czasu nie znalazłem.
Comments