Bloom Email Optin Plugin

Przy okazji ostatniej większej zmiany wyglądu strony pisałem o „szablonach potomnych” w WordPressie… Wtedy też  (zmiana szablonu, nie pisania artykułu ;-)) wystąpił „mały zgrzyt” z brakiem tłumaczeń niektórych tekstów, a to oznacza dobrą okazję do napisania tekstu na ten temat… :-)

gettext, czyli proste i wygodne tłumaczenie

Sposób tłumaczenia szablonu i/lub wtyczki zależy od tego, czy autor przygotował go/ją pod obsługę plików językowych (gettext). Najprościej to rozpoznać patrząc do dokumentacji, bądź bezpośrednio do kodu szablonu/wtyczki – jeśli znajdziemy tam fragmenty podobne do:

printf( __( 'All posts by %s', 'twentyfourteen' ), get_the_author() );

To znaczy, że szablon i/lub wtyczką obsługują pliki językowe (gettext) i możemy przystąpić do następnych kroków.

W innym wypadku prawdopodobnie zostaje nam bezpośrednia edycja tekstów w kodzie…

.po/.mo czy functions.php?

Korzystając z „gettext” możemy do tłumaczenia podejść na 2 sposoby:

  • Tworząc/edytując plik .po (edycja) i .mo (zapis)
  • Korzystając z funkcji w pliku functions.php

Druga metoda (functions.php) sprawdzi się najlepiej przy małej ilości tekstów do przetłumaczenia, gdy zabawa w tworzenie i/lub edycję plików .po/.mo może być nieopłacalna. Przy większej ilości tekstów (lub gdy sami tworzymy szablon/wtyczkę do publikacji) do tłumaczenia zdecydowanie warto skorzystać z plików .po/.mo

WordPress/WooCommerce: Tłumaczymy szablon lub wtyczkę za pomocą plików .po/.mo

Jeśli do szablonu lub wtyczki dołączony jest plik .po lub .pot (szablon) to sprawa jest prosta – kopiujemy go pod nową nazwą, zazwyczaj:

  • pl_PL.po
  • nazwa-pl_PL.po

Edytujemy np. w programie Poedit:

poedit02

Po czym zapisujemy – przy okazji wygeneruje się też plik .mo, i oba te pliki kopiujemy tam gdzie trzeba – więcej o tym za chwilę…

A gdy nie ma pliku .po(t)

W takim przypadku mamy 2 możliwości:

  • Tworzymy samodzielnie plik .po i dodajemy ręcznie kolejne frazy do przetłumaczenia
  • Pobieramy (automatycznie) frazy z plików wtyczki/szablonu

W pierwszym przypadku tworzymy nowy plik tekstowy, znajdujemy na stronie nieprzetłumaczony tekst, i dodajmy go do naszego pliku w formacie:

msgid "Tekst do przetłumaczenia"
msgstr "Tekst przetłumaczony"

Całość zapisujemy jako plik z rozszerzeniem .po, i otwieramy np. w programie PoEdit, który resztę (łącznie z nagłówkami) zrobi za nas.

Metoda prosta i szybka, choć sprawdzi się raczej w przypadku prostych tekstów. W przypadku „zmiennych” mogą się pojawić problemy – dlatego lepiej potraktować ją jako uzupełnienie metody polegającej na wyciągnięciu danych ze źródeł:

Sięgamy do źródeł…

Czasem się zdarza, że wprawdzie autor przygotował swój szablon lub wtyczkę pod obsługę plików językowych, ale nie udostępnił plików od których moglibyśmy zacząć naszą pracę. W takim przypadku musimy sięgnąć do analizy źródeł – w tej pracy warto wspomóc się np. wspomnianym powyżej programem Poedit, który sporą część pracy z tym związanej wykona za nas.

Uruchamiamy program Poedit, i wybieramy:

  • Plik > Nowe…

A następnie:

 Język tłumaczenia: polski (Polska)

I:

Wyodrębnij ze źródeł
Konfiguruj kod źródłowy wyodrębniania we właściwościach.

poedit01

Pojawi się nowe okno, w którym w zakładce „Źródła słuch kluczowych” dodajemy:

__
_e

poedit_tworzenie-ze-zrodel_zrodla-slow-kluczowych01

Następnie klikamy OK, i zapisujemy plik, np. jako:

  • pl_PL.po

Lub:

  • nazwa-pl_PL.po

Po tej operacji kolejny raz wybieramy:

Wyodrębnij ze źródeł
Konfiguruj kod źródłowy wyodrębniania we właściwościach.

Tym razem przechodzimy do zakładki „Ścieżki źródeł” i wskazujemy ścieżkę do katalogu ze skórką:

poedit_tworzenie-ze-zrodel_sciezki-zrodel01

Po chwili (zależnie od ilości plików i tekstów w nich) pojawi się nam ekran ze znalezionymi tekstami, gotowymi do tłumaczenia:

poedit02

Dalej postępujemy tak samo, jak w przypadku wcześniejszej edycji plików .po/.pot

Gdzie i pod jaką nazwą zapisać pliki?

Tu nie ma jednej odpowiedzi – sporo zależy od tego, jak to sobie wymyślił autor szablonu/wtyczki, ale są pewne standardy, i jest duża szansa, że… :-)

Głównym katalogiem z plikami językowymi w WordPressie jest katalog:

  • wp-content/languages

Znajdziemy tu m.in. pliki językowe samego WordPressa.

Innymi popularnymi katalogami – odpowiednio dla szablonów i wtyczek – są:

  • wp-content/languages/themes
  • wp-content/languages/plugins

We wszystkich tych katalogach – z racji tego, że są to katalogi wspólne – zazwyczaj pliki językowe są zapisywane w formacie:

  • [nazwa]-pl_PL.po
  • [nazwa]-pl_PL.mo

Zdarzają się sytuacje, gdy pliki językowe należy umieszczać bezpośrednio w katalogu szablony lub wtyczki, często w podkatalogu „languages”:

  • wp-content/themes/[katalog szablonu]/languages
  • wp-content/plugins/[katalog wtyczki]/languages

Wtedy zazwyczaj zapisuje się je w formie:

  • pl_PL.po
  • pl_PL.mo

W razie wątpliwości warto poszukać na forum pomocy danego szablonu lub wtyczki, bądź w samym kodzie…

WordPress/WooCommerce: Tłumaczymy szablon lub wtyczkę za pomocą funkcji w pliku functions.php

Na wstępie  dodam, że wprawdzie można modyfikacji dokonywać na oryginalnych plikach szablonu, to zdecydowanie polecam skorzystać z „szablonów potomnych” (child themes), które od dawna świetnie sprawują się w WordPressie…

Zaczynamy od utworzenia – jeśli jeszcze go nie ma – pliku functions.php w katalogu naszego szablonu, o takiej zawartości:

<?php

Prawda, że nić trudnego? ;-)

Gdy już mamy przygotowany plik, wpisujemy po „<?php” np. taki kod:

function translate_text($translated) {
$translated = str_ireplace('Submit a Comment', 'Napisz komentarz', $translated);
return $translated;
}
add_filter('gettext', 'translate_text');

Przy większej ilości tekstów do przetłumaczenia również możemy skorzystać z tej metody odpowiednio zwielokrotniając jedną z linijek:

function translate_text($translated) {
$translated = str_ireplace('Submit a Comment', 'Napisz komentarz', $translated);
$translated = str_ireplace('Posted by %1$s in %2$s', 'Opublikował %1$s w kategoriach: %2$s', $translated);
return $translated;
}
add_filter('gettext', 'translate_text');

Ale osobiście w takim przypadku polecam skorzystać z tabeli – będzie znacznie przejrzyściej:

function translate_text( $translated ) {
$text2translate = array(
'Submit a Comment' => 'Napisz komentarz',
'Posted by %1$s in %2$s' => 'Opublikował %1$s w kategoriach: %2$s',
);
$translated = str_ireplace(  array_keys($text2translate),  $text2translate,  $translated );
return $translated;
}
add_filter( 'gettext', 'translate_text' );

Na koniec zapisujemy nasz plik i to wszystko…

Jak utworzyć i edytować plik?

Plik możecie utworzyć z konsoli (jeśli macie do niej dostęp), czyli np.:

sudo nano /var/www/[domena]/public_html/wp-content/themes/[katalog_z_szablonem]/functions.php

Choć ja polecam skorzystać np. z programu WinSCP (do zarządzania plikami i katalogami) oraz Notepad++ (do edycji plików).

Zgłoś błąd na stronie
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które - w miarę możliwości - spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. "linki partnerskie", co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte... :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Bloom Email Optin Plugin