http://wordpress.org/extend/plugins/bbpress/ bbpress 'folder językowy (wp-content / plugins / bbpress / bbp-languages) ma to ostrzeżenie:
/**
* Do not put custom translations here. They will be deleted on bbPress updates.
*
* Keep custom bbPress translations in /wp-content/languages/
*/
W rzeczywistości nie jest to nowy problem i tak, mają rację. Jest to duży problem, jeśli używasz wtyczek wordpress w języku innym niż angielski.
Zasadniczo przetłumaczyłem bbpress i utworzyłem pliki .po i .mo. Pliki działają, jeśli umieszczę je w normalnym folderze wp-content / plugins / bbpress / bbp-languages. Ale jak wspomniano powyżej, ostrzeżenie mówi, że zostanie usunięte po aktualizacji. Ale problem polega na tym, że tłumaczenie nie działa, jeśli umieszczę je w folderze wp-content / languages / jak sugerowano w bbpress.
Myślę, że musi istnieć hak lub coś, co mogę aktywować, ale jakie jest najlepsze rozwiązanie? Po prostu chcę zachować pliki językowe wtyczek w wp-content / languages /
źródło
Odpowiedzi:
Musisz zastąpić wywołanie pliku językowego BBpress.
Dobrym miejscem do tego jest plik specyficzny dla języka w twoim katalogu języków ogólnych. W przypadku języka tureckiego byłby to prawdopodobnie plik o nazwie
tr_TR.php
. Zostanie to załadowane automatycznie i tylko jeśli będzie pasować do języka Twojego bloga. Nie zostanie nadpisany.BBPress nie używa tej funkcji
load_plugin_textdomain
,load_textdomain
zamiast tego używa . Tutaj możesz znaleźć filtr:Więc w swoim języku plik php wystarczy dodać filtr, aby zmienić ścieżkę:
źródło
WP_LANG_DIR
) plus plik mo.load_plugin_textdomain()
wykonuj połączenia podczas akcji „init”, w przeciwnym razie nie będziemy mogli podłączyć się do filtra „load_textdomain_mofile”. Już wtedy będzie za późno.Musisz stworzyć prostą wtyczkę, która będzie zarządzać tekstem_domena zainstalowanych wtyczek. Jeśli nie chcesz mieć globalnego rozwiązania, możesz dodać kod do pliku functions.php w swoim motywie.
Chodzi o to, aby poinstruować wordpress, gdzie znaleźć tłumaczenia. Wewnętrznie we wszystkich wtyczkach odbywa się to za pomocą czegoś podobnego do
z tej funkcji będziesz korzystać. Jak widać tutaj , ostatni argument służy do ustawienia względnej ścieżki wtyczki, w której znajdują się pliki tłumaczeń.
Możesz zrobić, co chcesz, umieszczając jeden wiersz dla każdej wtyczki, którą chcesz zmienić folder języków w następujący sposób.
poinstruuje to wordpress, aby załadował niestandardowe pliki tłumaczeń z folderu obok
plugins
folderu, który ma folder o nazwiebbpress
zawierającej pliki tłumaczeń przy użyciu DOKŁADNEGO nazewnictwa używanego przez każdą wtyczkę.Twoja metoda, która instruuje domeny tekstowe dla wszystkich wtyczek, powinna działać w tej
init
fazie w następujący sposób(Nie zapomnij zaznaczyć tej odpowiedzi jako przydatnej)
źródło
Aby to zadziałało, musisz mieć już pliki tłumaczeń WordPress w WP_LANG_DIR i mieć globalne ustawienia regionalne ustawione na ten język. Jeśli dołączasz tylko tłumaczenia dla bbPress bez zmiany ustawień regionalnych lub obecności podstawowych plików tłumaczeń WordPress, nic nie zostanie przetłumaczone, mimo że je załadujesz.
Jeśli chcesz zastąpić ustawienia regionalne samego bbPress, musisz dodać filtr do 'bbpress_locale', który pozwala na przesłonięcie pliku mo bbPress.
Chociaż prawdą jest, że bbPress 2.0 korzysta z funkcji load_textdomain (), load_plugin_textdomain () jest po prostu opakowaniem dla load_textdomain (). Metoda bbPress 2.0 jest bardziej niezawodna i umożliwia globalne umieszczanie plików tłumaczeń, dzięki czemu nie tracisz ich podczas aktualizacji wtyczki.
źródło
W moim przypadku utworzenie stałego niestandardowego tłumaczenia wtyczki wymaga następujących kroków (przykłady tłumaczenia wtyczki ACF):
wp-content/languages/plugins/
katalog.po
zlang/
folderu wtyczki (lub dowolnego innego z tłumaczeniem) do utworzonegowp-content/languages/plugins/
(np. zlang/acf-pl_PL.po
dowp-content/languages/plugins/acf-pl_PL.po
).po
plików, a następnie wygeneruj.mo
i zapisz wwp-content/languages/plugins/
(np.wp-content/languages/plugins/acf-pl_PL.mo
)W ten sposób tłumaczenie powinno zostać zachowane nawet po aktualizacji wtyczki.
Nie jestem pewien, czy ta strategia będzie działać dla wszystkich wtyczek, ale zdecydowanie warto spróbować.
źródło