Ostatnio pracowałem nad pełnym spolonizowaniem w pełni przynajmniej zewnętrznego wyglądu mojego bloga. Jak zawsze nie obyło się bez problemów. Najważniejszy problem to skąd zdobyć polski język dla WordPress’a. Niestety WordPress nie dał linka do translacji obok przycisku Download więc trzeba było poszukać. Okazało się, że wręcz nie hostują tłumaczeń. Na szczęście w końcu dotarłem poprzez kilka linków do bloga Jakuba Zwolińskiego który stworzył polskie tłumaczenie WordPress’a 2.5.
Tłumaczenie spisuje się świetnie, jest kompletne, ale nawet skórka standardowa nie miała wszystkich elementów przetłumaczonych. Aktualna skórka była tłumaczona jeszcze gorzej. Przeglądając jej kod (zdziwilibyście się jak mało go wystarcza) okazało się, że znajdują się tam na stałe wpisane łańcuchy znaków, jak choćby etykietki obok linków do RSSów na górze strony. To już poważniejszy problem, zwłaszcza, że nie lubię PHP. Niestety większość skórek nie jest dostosowana do bycia przetłumaczonymi, co mnie osobiście trochę dziwi, zważywszy na fakt, że we wtyczkach tendencja jest odwrotna.
Tak czy siak tłumaczenie było cokolwiek żmudne i nudne. Najpierw musiałem się dowiedzieć jak działa mechanizm translacji w WordPress’ie. Jak zwykle Google w ruch i znalazłem dobry opis na niemieckim blogu którego autor na szczęście przygotował wersję angielską (chwała mu za to). Jedyne do czego muszę się przyczepić to opis różnicy pomiędzy funkcją __() oraz _e(). Jest on napisany dla nie-programistów, więc mi się wydały mętne. Codex WordPress’a przyniósł na szczęście wytłumaczenie. Żebyście nie musieli szukać: __() zwraca przetłumaczony łańcuch znaków, natomiast _e() wypisuje go.
Potem już było z górki. W header.php wstawiłem na samym początku (nawet przed DOCTYPE) wywołanie funkcji load_theme_textdomain(‘domena_mojej_skorki’) a potem zacząłem tłumaczyć całość. Przy okazji poprawiłem jedną funkcję, która w dokumentacji została oznakowana jako deprecated (przestarzała). Ważne przy przygotowywaniu skórki (i wtyczki) do tłumaczenia jest to, żeby było to proste. Miałem sytuację, że w zdaniu pojawiał się odnośnik do innej strony (fragment zdania był nim). W wielu wtyczkach spotkałem się z cięciem takiego zdania na kawałki dzięki czemu lądowałem przy tłumaczeniu skrawków zdań, których sens często wychodził z kontekstu. Dlatego też skorzystałem z tricku z funkcją printf(). Dzięki temu format jest tłumaczony i zawiera %s w miejscach gdzie się ma znaleźć znacznik otwierający i zamykający link.
Tak czy siak tłumaczenie skórki już jest kompletne, jeszcze tylko zostały mi do przetłumaczenia niektóre wtyczki, no i muszę wykombinować coś datą, bo jej format jest inny podany w konfiguracji, a inny zakodowany w skórce. Można by to zrobić przez plik tłumaczeń, ale nie jest to zbyt eleganckie rozwiązanie, no i pojawiłyby się w dwóch miejscach te same dane.
Tags: skórka wordpress, tłumaczenie