2012-11-26 21 views
11

Wiem, jak tworzyć tłumaczenia dla tematów i szablonów, generując na przykład pliki .po i .mo za pomocą Poedit. Ale ponieważ nazwy szablonów są zapisane w komentarzach PHP na górze każdego pliku szablonu, nie ma możliwości przetłumaczenia tego, jak widzę.Jak tłumaczyć nazwę szablonu WordPress?

WordPress Szablon header:

/** 
* Template Name: Three columns 
* 
* @package WordPress 
*/ 

Nazwa szablonu jest jakoś analizowany przez Wordpress i użyto do wypełnienia szablonu wybierz rozwijaną podczas tworzenia strony.

Moje pytanie brzmi: Czy istnieje sposób na przetłumaczenie nazwy szablonu WordPress? Czy WordPress szuka również jakiejś konkretnej zmiennej, którą mogę ustawić w moim pliku szablonu? czy jest to po prostu niemożliwe?

Odpowiedz

12

Natknąłem się na to całkiem niedawno. Oto, jak sobie z tym poradziłem:

Najpierw dodaj (jeśli już tego nie masz) Text Domain: mytext_domain do twojej style.css, gdzie mytext_domain jest aktualną domeną tekstową dla twojego motywu.

Następnie dodać obojętne wywołanie funkcji tłumacza gdzieś w temacie (najlepsze jest to, aby dodać go tuż pod deklaracją Nazwa szablonu, więc nie zastanawiam się, dlaczego pan umieścić go):

/** 
* Template Name: Three columns 
* 
* @package WordPress 
*/ 
__('Three columns', 'mytext_domain'); 

Powodem tego jest fakt, że WordPress przekazuje nazwę twojego szablonu do funkcji translate(), ale ponieważ wtyczki tłumacza analizują twój kod, nie wiedzą, że nazwa twojego szablonu powinna być częścią .po (lub było to .mo?) plik. Fałszywe połączenie z numerem __() rozwiązuje ten problem.

Powodem, dla którego dodajesz deklarację Text Domain do pliku style.css, jest fakt, że w tym miejscu WordPress wyszukuje textdomain twojego motywu podczas analizowania nazw szablonów.

Nie mogę podać dokładnych źródeł, ponieważ naprawdę po prostu wczepiłem się w podstawowy kod, dopóki nie zorientowałem się, jak to działa i jak mogę przetłumaczyć nazwy swoich szablonów.

PP: Nie jestem pewien, jak Poedit działa - jeśli dodać tłumaczenia przez strony, może nie trzeba atrapę połączenia - po prostu przetestować i bez niego i wykorzystanie zależności od tego najlepiej pasuje do Ciebie :)

+1

Świetnie! To wystarczyło. :) Dziwne, że prawie nie ma dokumentacji na ten temat. Aby wyjaśnić innym: Musisz dodać "Text Domain: mytext_domain" w komentarzach definicji motywu w style.css. – jamietelin

+1

Tak, w zasadzie nie jest to udokumentowane. Zacząłem od [tego biletu] (http://core.trac.wordpress.org/ticket/6007), a następnie przeszukałem podstawowe pliki, dopóki nie zrozumiałem, jak to działa :) –

5

Better metoda:

  1. Dodaj nagłówek Text Domain: theme-slug do pliku style.css, jeśli nie zostało to zrobione.

  2. Zdobądź kasę pakietu deweloperskiego oficjalne WordPress poprzez sprawdzanie develop.svn bagażnik: http://develop.svn.wordpress.org/trunk/

  3. Tam znajdziesz katalog o nazwie/tools/i18n. W tym katalogu znajduje się plik makepot.php. Można go używać do tematów następująco:

> php makepot.php wp-theme /path/to/your/theme/directory theme-slug.pot

Spowoduje to utworzenie pliku POT dla Ciebie, z wykorzystaniem najnowszych kod WordPress. Otrzymuje ciągi z nagłówków, ze wszystkich funkcji iPin iPlP, wszystko.Oznacza to również, że nie trzeba tworzyć żadnych "fałszywych" łańcuchów, jak sugeruje inna odpowiedź.

Co pewien czas należy również wykonać svn update, ponieważ narzędzia i18n i główny kod portu mogą być aktualizowane co pewien czas o nowe rzeczy.

Należy pamiętać, że podczas korzystania z narzędzi i18n muszą znajdować się w kasie bagażnika. Nie można ich przenosić w systemie plików, ponieważ zależą one od funkcji WordPressa w celu wykonania niektórych analiz plików, więc mają one względne ścieżki włączania, które tworzą kopię drzewa w katalogu core/src WordPress. Katalog wszystkich serwerów musi być nienaruszony, aby narzędzia działały poprawnie. Jednak katalog trunk może być zdekonfigurowany, nie trzeba mieć działającej instalacji WordPressa, wystarczy trochę kodu WordPressa, aby poprawnie przeanalizować pliki.

Powiązane problemy