Loco Translate – łatwe tłumaczenie motywów i wtyczek

Loco Translate

Jednym z najgorszych błędów, jakie można zrobić na własnej stronie internetowej, jest pozostawienie na niej nieprzetłumaczonych słów lub całych zdań. Problem pojawia się gdy korzystamy z motywu lub wtyczki, dla których nie istnieje polskie tłumaczenie lub jest ono niekompletne. Wiele blogów (w tym nawet te dość popularne) razi pojedynczymi anglojęzycznymi frazami – „comments”, „latest posts” czy „recent comments” to frazy, które chyba najczęściej pozostają nieprzetłumaczone. Wyjaśnienie tego problemu jest proste, a rozwiązanie jeszcze łatwiejsze – wystarczy skorzystać z darmowej wtyczki Loco Translate i samodzielnie uzupełnić braki w tłumaczeniach.

Nieco ponad dwa lata temu do tłumaczenia motywów i wtyczek polecałem wtyczkę CodeStyling Localization. Niestety, to świetne narzędzie zostało porzucone przez swojego autora, a następnie usunięte z repozytorium z uwagi na liczne błędy uniemożliwiające korzystanie z wtyczki. W poświęconym jej wpisie znajdziecie jednak wciąż aktualne informacje na temat mechanizmu tłumaczeń w WordPressie, a także alternatywnych metod tworzenia tłumaczeń.

Skąd się biorą braki w tłumaczeniach?

Nie ma nic dziwnego w tym, że posługujący się językiem angielskim autor wtyczki czy motywu nie dołącza do swojego produktu polskiego tłumaczenia. Często jednak spotykam się z pytaniem: dlaczego fraza „XYZ” nie jest przetłumaczona na stronie, skoro w panelu administracyjnym WordPressa dokładnie ta sama fraza jest wyświetlana po polsku? Odpowiedź jest ukryta w sposobie działania mechanizmu tłumaczeń WordPressa.

Motywy i wtyczki mają swój unikalny (przynajmniej teoretycznie) identyfikator, do którego są przypisane wszystkie występujące w ich plikach frazy (teksty widoczne na stronie). Identyfikator ten jest używany między innymi w wywołaniach funkcji tłumaczących – aby wyświetlić wspomnianą frazę „Comments”, w pliku motywu umieszcza się na przykład taki kod:

Sam WordPress jest specyficznym przypadkiem, ponieważ wszystkie frazy w nim występujące mają identyfikator default, z którego nie korzystają (a przynajmniej nie powinny korzystać) motywy i wtyczki. To dlatego frazy przetłumaczone w WordPressie nie koniecznie będą przetłumaczone w motywie lub wtyczce. A ponieważ na naszej stronie widoczne są zwykle frazy pochodzące z motywu lub wtyczki, to mamy wyjaśnienie problemu brakujących tłumaczeń.

Samodzielne tłumaczenie motywów i wtyczek

Po instalacji i aktywacji wtyczki w menu panelu administracyjnego pojawi się nowa sekcja Loco Translate. Jej główna część (Home) wyświetla listę aktywnych wtyczek oraz nazwę aktywnego motywu. Stąd możemy przejść bezpośrednio do tłumaczenia wybranego rozszerzenia lub motywu. Jeśli chcemy zobaczyć listę wszystkich zainstalowanych wtyczek i motywów, wystarczy wybrać z menu Loco Translate odpowiednią opcję (Themes lub Plugins).

Przed rozpoczęciem tłumaczenia warto zajrzeć do ustawień wtyczki (Loco Translate → Settings), gdzie tak naprawdę jedyną interesującą opcją jest liczba zapisywanych wersji tworzonych przez nas plików językowych (Number of backups to keep of each file).

Po kliknięciu w wyświetlaną na liście nazwę wtyczki lub motywu zostaniemy przeniesieni do ekranu edycji tłumaczenia. Wygląd tego ekranu i dostępne opcje różnią się w zależności od stanu tłumaczenia.

Tworzenie pliku .pot

Plik .pot (zwany też szablonem tłumaczenia) zawiera wszystkie możliwe do przetłumaczenia frazy i jest podstawą do stworzenia plików z tłumaczeniem (.po i .mo). Jeśli tłumaczona wtyczka lub motyw nie posiada takiego pliku, możemy go stworzyć samodzielnie. Co ciekawe, możemy również dodać tłumaczenie bez tworzenia pliku .pot – nie jest to jednak zalecane, głównie dlatego, że przy większej liczbie fraz edycja tłumaczenia może działać wolno.

Loco Translate - plik .pot

Aby utworzyć plik .pot musimy skorzystać z opcji Create template. Pojawi się informacja o liczbie plików wchodzących w skład wtyczki oraz o katalogu, w którym zostanie zapisany plik.

Loco Translate - plik .pot

Kliknięcie przycisku Create template uruchomi proces tworzenia pliku .pot. W zależności od wielkości wtyczki może to trwać od kilku do kilkudziesięciu sekund.

Po utworzeniu pliku .pot zostaniemy przeniesieni z powrotem na stronę wtyczki, gdzie zamiast opcji Create template zobaczymy opcję Edit template. Edycja szablonu tłumaczenia pozwala na edycję, dodawanie i usuwanie fraz do przetłumaczenia (co nie ma oczywiście większego sensu) oraz na uaktualnienie szablonu za pomocą przycisku Sync (tę operację wykonujemy gdy do wtyczki lub motywu zostaną dodane nowe frazy).

Tworzenie nowego tłumaczenia

Po kliknięciu linku New language pojawi się ekran z konfiguracją naszego tłumaczenia.

Loco Translate - nowe tłumaczenie

Opcja Choose a language służy do wyboru języka, na jaki będziemy tłumaczyć motyw lub wtyczkę. Opcja Choose a location pozwala na wybór katalogu, w którym zostanie zapisany plik z naszym tłumaczeniem. To ustawienie jest bardzo ważne! Wybranie opcji Author spowoduje, że po aktualizacji wtyczki nasze tłumaczenie zostanie usunięte. Wybór opcji System jest dobry, ale jeśli w repozytorium pojawi się „oficjalne” tłumaczenie, to nadpisze ono nasz plik językowy. Najbezpieczniejszy wydaje się więc wybór opcji Custom.

Aby utworzyć plik językowy i przejść do ekranu edycji tłumaczenia należy kliknąć przycisk Start translating.

Edycja istniejącego tłumaczenia

Niezależnie od tego, czy stworzyliśmy właśnie nowy plik językowy, czy też chcemy uaktualnić plik już istniejący, całą pracę będziemy wykonywać na ekranie edycji tłumaczenia. Możemy dostać się do niego z listy dostępnych języków.

Loco Translate - lista języków

Na liście widać kompletność tłumaczenia (w procentach) oraz liczbę pozostałych do przetłumaczenia fraz.

Loco Translate - edytor

Edytor tłumaczeń jest bardzo prosty. Z listy Source text wybieramy interesującą nas frazę, po czym w polu Polish translation wprowadzamy jej tłumaczenie. Nowe (jeszcze nie zapisane) zmiany są oznaczane gwiazdką, a jeśli takowe istnieją, to przyciski SaveRevert stają się aktywne.

Loco Translate - edytor tłumaczeń

Wprowadzone zmiany zachowujemy klikając przycisk Save, co spowoduje zapisanie pliku .po i wygenerowanie na jego podstawie pliku .mo. Aby wycofać (usunąć) nasze modyfikacje wystarczy kliknąć przycisk Revert.

Wprowdzone i zmodyfikowane tłumaczenia powinny być widoczne na stronie zaraz po ich zapisaniu.

Przycisk Sync służy do uaktualnienia fraz możliwych do przetłumaczenia. Jeśli na liście brakuje nam jakiejś frazy, to albo została ona dodana przez autora w jednej z ostatnich aktualizacji, albo nie jest w ogóle możliwa do przetłumaczenia. O ile w drugiej sytuacji nie jesteśmy w stanie nic zrobić (poza poproszeniem autora o dodanie tekstu do wtyczki lub motywu w prawidłowy sposób), o tyle w pierwszej pomoże nam właśnie przycisk Sync, którego kliknięcie spowoduje przeskanowanie plików i dodanie nowych fraz.

Bezpośredni link

  • Generalnie większość rzeczy tłumaczę ręcznie w poedit ale muszę przyznać, że ta wtyczka to jest kawał dobrej roboty. Miałem co prawda przyjemność użyć jej tylko kilka razy ale do przetłumaczenia na szybko kilku fraz(czytaj dalej, szukaj itd.) jest wręcz idealna, zwłaszcza dla laików. Nie pamiętam tylko, czy zostawia za sobą syf w bazie.

  • Też zawsze koegzystowałem się poedit, ale na pewno spróbuję tą.

  • Paweł Miastkowski

    Witam, tłumaczę komercyjny szablon, który zakupiłem na Envato. Jestem laikiem, więc używam wtyczki Loco Translate. Wszystkie zmiany wykonuję na motywie „dziecka”. Czy aby zachować tłumaczenie po aktualizacji motywu przez producenta, powinienem tłumaczyć motyw dziecka, czy motyw pierwotny. Wydaje mi się, że dziecka, ale sam jestem „dzieckiem” w kwestii informatycznych :)

    • Aby zachować tłumaczenie istotne jest to, do jakiego katalogu trafiają pliki z Twoim tłumaczeniem – wszystko na ten temat znajdziesz w powyższym wpisie. Generalnie powinieneś zapisywać te pliki do katalogu innego niż katalog motyw nadrzędnego (głównego).

      • Paweł Miastkowski

        Panie Bartoszu, z listy motywów, którą pokazuje mi Loco Translate wybrałem aktywny motyw dziecka. Mam oczywiście zainstalowany również główny motyw, jak wymaga tego sztuka. Motyw dziecka, który tłumaczę miał już plik.pot oraz listę z językami, w tym polskim przetłumaczonym w 40 %, także tłumaczę właśnie to tłumaczenie z listy. I nie wiem, jak sprawdzić, gdzie trafia plik z zapisanym tłumaczeniem, do jakiego katalogu… Jestem humanistą, niestety :/

        • Na ekranie edycji tłumaczenia jest zakładka ‚Info’. Tam znajdziesz informacje o katalogu, do jakiego trafia plik .po. https://uploads.disquscdn.com/images/c4be1cec0e05e68a8805ea2ba2640dda48f94407c7dad3668f42e2465bb1cf5a.png

          • Paweł Miastkowski

            Bardzo dziękuję :) Sprawdziłem i mam następujące lokacje:

            PO file is writeable

            You can update these translations directly from the editor to the file system.
            -rw-r–r– literko:literko themes/kleo/languages/pl_PL.po

            Directory is writeable

            The containing directory is writeable by literko, so you can add new files in the same location.
            drwxrwxr-x literko:literko themes/kleo/languages

          • To jest (jak rozumiem) katalog motywu głównego, a nie Twojego motywu potomnego, tak więc jeśli wykonasz automatyczną aktualizację motywu, to stracisz swoje tłumaczenia. Najprościej skopiować istniejące tłumaczenie (opcja ‚Copy’) i dla kopii wybrać inny katalog (opcja ‚Choose a location’ opisana we wpisie).

          • Paweł Miastkowski

            Dziękuję! Tak zrobię.

            Mam wtyczkę BuddyPress, która ma jak wiadomo wbudowane tłumaczenie w języku polskim, aczkolwiek niepełne i chciałbym je kontynuować przez Loco Translate. Czy po zapisaniu tłumaczenia i po automatycznej aktualizacji Buddy, zachowam je? Czy mam też skopiować i zapisać w innym katalogu?

            W info na temat tłumaczenia (które było razem z Buddy, a które kontynuuje) mam to:

            PO file is writeable

            You can update these translations directly from the editor to the file system.

            -rw-r–r– literko:literko languages/plugins/buddypress-pl_PL.po

            Directory is writeable

            The containing directory is writeable by literko, so you can add new files in the same location.

            drwxr-x— literko:literko languages/plugins

          • Te tłumaczenia z kolei zostaną zastąpione przez aktualizację tłumaczeń z oficjalnego repozytorium. Tak więc dla pewności również radziłbym je skopiować i zapisać gdzie indziej.

          • Paweł Miastkowski

            Ale Pana męczę, ale muszę :/

            Dziękuję, wszystko powoli staje się jasne. Mam jeszcze pytanie: Jeżeli wybiorę miejsce zapisu „custom” i zaktualizuje Buddy to:

            ewentualna oficjanta aktualizacja tłumaczenia zastąpi mi automatycznie moje tłumaczenie i muszę wtedy w jakiś sposób włączyć znowu tłumaczenie, które zapisałem opcją „custom”?

            czy po prostu zapisanie opcją „custom” ochroni mnie przed nadpisaniem tłumaczenia przez tłumaczenie z automatycznej aktualizacji?

          • Opcja ‚Custom’ chroni Twoje tłumaczenie przed nadpisaniem przez aktualizację motywu lub wtyczki oraz przez aktualizację samego tłumaczenia znajdującego się w repozytorium. Teoretycznie aktualizacja „oficjalnego” tłumaczenia nie powinna niczego zmienić – cały czas będzie widoczne Twoje tłumaczenie.

          • Paweł Miastkowski

            Dziękuję!

  • paweł

    hej, zainstalowałem wtyczkę, ale motyw jej nie widzi, w zakładce „file info” jest komunikat These translations are not linked to a POT file. Sync operations will extract strings directly from source code. może ktoś coś pomóc ?

    • Chyba wtyczka nie widzi motywu. ;)

      Komunikat mówi wszystko: nie ma pliku POT, więc albo musisz go sobie utworzyć (jest to opisane wyżej), albo wtyczka wyciągnie wszystkie rzeczy możliwe do przetłumaczenia z plików motywu.

      • paweł

        hej dzięki za odpowiedź, wtyczka widzi motyw i inne wtyczki, plik pot też jest, pliki PO i MO też są w katalogu languages, jak skopiowałem pliki PO i MO do innego katalogu to pojawiły się dodatkowe tłumaczenia, czy da się jakoś ewentualnie ręcznie przetłumaczyć kila wyrażeń ? Motyw jest w większości przetłumaczony i chcę przetłumaczyć kilka wyrazów. W jakim pliku szukać tego.

        • paweł

          wykasowałem ręcznie wszytskie pliki PO MO i POT i zacząłem konfigurację od nowa, po wejściu w motyw i kliknięciu create template wyskakuje error Error: {„error”:{„code”:0,”type”:”error”,”class”:”Loco_error_WriteException”,”title”:”Permission denied”,”message”:”Parent directory doesn’t exist”},”notices”:. Check console output for debugging information

          we wtyczce w zakłądakch oprócz HOMES, THEMES i PLUGINS jest jeszcze zakładka WORDPRESS w której są trzy tłumaczenia – ale to pewnie samego wordpress a nie motywu – są w 100% przetłumaczone

          • Komunikat mówi o braku jakiegoś katalogu. Pewnie usunąłeś trochę za dużo.

        • Te słowa, których nie możesz przetłumaczyć, mogą być dodane do motywu w nieprawidłowy sposób. Mogą też znajdować się w bazie danych i być edytowalne np. z poziomu panelu administracyjnego.

          • paweł

            Hej Bartoszu, sorry że zawracam jeszcze,

            brakowało katalogu „languages” w plikach motywu, stworzyłem ten katalog i LOCO utworzył w tym katalogu plik unicon.pot (unicon to motyw). Potem zgodnie z instr. nowy język, polski i start translating – po wejściu w motyw widać plik do tłumaczenia – pokazuje około 250 wyrazów nieprzetłumaczonych, wchodzę w edycję dodaje tłumaczenie i SAVE wtedy pokazuje się błąd

            Error: {„data”:{„locale”:”pl-PL”,”pobytes”:33314,”poname”:”pl_PL.po”,”modified”:1480774981,”datetime”:”3 grudnia 2016 15:23″,”mobytes”:694},”notices”:[{„code”:0,”type”:”success”,”class”:”Loco_error_Success”,”title”:”OK”,”message”:”PO file saved and MO file compiled”. Check console output for debugging information

            jednak mimo wszystko plik zapisuje tłumaczenia – pokazuje liczbe przetłumaczonych i procent
            Updated: 3 grudnia 2016 15:05 – 4% translated, 253 strings (244 untranslated)

            sprawdziłem przez ftp – i w katalogu languages (tam gdzie jest plik POT) brak plików MO i PO – w sumie to nigdzie ich nie moge znależć – tu chyba jest problem ??? Wciśniecie SYNC powoduje kolejny bład – kilkadziesiąt linijek kodu – masz jakiś pomysł ? w sumie gdybym znalazł ten plik PO to można go skopiować do katalogu unicon/languages/ czylii w miejsce gdzie jest plik pot.

          • paweł

            w sumie to udało mi się pliki PO i MO poprzez downlaoad zapisać na kompie widać w nich przetłumaczone wyrazy, przez ftp wrzuciłem do katalogu gdzie jest plikk pot – niestety nie widać zmian na stronie

  • Grzegorz

    Niestety u mnie nie widać po tłumaczeniu zmian na stronie – ani we wtyczkach ani w szablonie. Co może być problemem?

  • Po prostu super – sprawdziła się doskonale i od razu. Wielkie dzięki.

  • Robert

    U mnie wtyczka zostawia jakiś syf. Tak przynajmniej twierdzi Free Online Website Malware Scanner, a Search Console potwierdza. Długo szukałem skąd mam kody dopisywane, wgrałem na nowo szablon i po instalacji Loco okazało się, że to wina wtyczki. Uważajcie