Jak najlepiej utworzyć wtyczkę, która jest gotowa do tłumaczenia?
Nie musi być tłumaczony od samego początku, ale musi być łatwy do przetłumaczenia, aby inni programiści z różnych kultur mogli wziąć udział w procesie lokalizacji wtyczki.
Jak najlepiej utworzyć wtyczkę, która jest gotowa do tłumaczenia?
Nie musi być tłumaczony od samego początku, ale musi być łatwy do przetłumaczenia, aby inni programiści z różnych kultur mogli wziąć udział w procesie lokalizacji wtyczki.
Odpowiedzi:
Nie używaj echo
lub print()
do generowania tekstu, zamiast tego użyj funkcji WordPress __()
i _e()
:
/** Not localization friendly */
echo "Welcome to my plugin";
// OR
print("Welcome to my plugin");
/** Localization friendly */
_e('Welcome to my plugin', 'my-plugin');
// OR
$my_text = __('Welcome to my plugin', 'my-plugin');
echo $my_text;
_e()
i __()
zapewni tłumaczenie - w bieżącym języku - tekstu podanego jako pierwszy parametr. _e()
wypisze tekst, a __()
zwróci go.
Drugi parametr to domena tekstowa , będziesz go używał, aby powiedzieć WordPressowi, że tekst podany jako pierwszy parametr należy do tej wtyczki, możesz użyć dowolnej nazwy, ale wolę używać tej samej nazwy, co nazwa wtyczki plik katalogu, uważam to za bardziej intuicyjne.
Z __()
i sprintf()
:
/** Get the username */
$username = 'Magictrick';
/** Not localization friendly */
echo "Hello $username";
/** Localization friendly */
printf(__('Hello %s', 'my-plugin'), $username);
// OR
$my_text = sprintf(__('Hello %s', 'my-plugin'), $username);
echo $my_text;
Definicje
Otwórz Poedit i utwórz nowy katalog (Plik ›Nowy katalog ...) z tymi ustawieniami:
.
..
(przechowujemy plik językowy w podkatalogu wtyczki o nazwie języki)__
i_e
Zapisz katalog jako i zeskanuj pliki wtyczek w celu przetłumaczenia tekstu, naciskając przycisk aktualizacji. Po zakończeniu aktualizacji zamknij ten katalog, nie będziesz musiał aktualizować tego pliku, chyba że dodasz nowe przetłumaczalne ciągi (tj. Zawarte w lub ) do swojej wtyczki./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot
__()
_e()
Teraz stwórzmy pierwsze tłumaczenie (użyję fr_FR):
Korzystanie Podeit , stworzyć katalog z pliku POT (Plik> Nowy katalog z pliku POT ...) :
Zapisz katalog jako . Przetłumacz niektóre lub wszystkie ciągi, ponownie zapisz plik .po, prześlij pliki .po i .mo./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po
Pamiętaj, że za każdym razem, gdy zapisujesz plik .po, generowany jest plik .mo o tej samej nazwie, nazwa pliku .po ma kluczowe znaczenie , składa się z połączenia domeny tekstowej wtyczki (moja wtyczka) i ustawień regionalnych języka ( fr_FR), zawsze nazywaj swoje pliki .po wtyczek w następujący sposób: [textdomain] - [locale] .po , oto kilka przykładów:
wpcf7-it_IT.po
wpcf7-pt_BR.po
wpcf7-ar.po
... Tak!Ilekroć wtyczka jest aktualizowana o nowy tekst, zaktualizuj plik po, przetłumacz nowe ciągi i ponownie załaduj pliki .po i .mo
Gdzieś we wtyczce musisz powiedzieć WordPressowi, aby używał pliku .mo, możesz to zrobić, używając tego kodu na początku pliku wtyczki:
function my_plugin_init() {
load_plugin_textdomain( 'my-plugin', false, 'my-plugin/languages' );
}
add_action('init', 'my_plugin_init');
Zastąp my-plugin
swoją nazwą wtyczki w 1. i 3. parametrze load_plugin_textdomain
funkcji.
Niektóre powody, dla których może nie działać:
_e('my text')
z _e('my text', 'my-plugin')
)Odpowiedź Nabila jest dość kompletna, ale można ją łatwo zmienić:
Twoja wtyczka znajduje się w repozytorium wtyczek WordPress.org
Chcesz, aby Twoja wtyczka działała tylko z WordPress 4.6 lub nowszym.
Kroki są następujące:
W pliku readme.txt wtyczki dodaj
Requires at least: 4.6
. Zobacz https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/
jeśli jeszcze nie jest, prześlij swoją wtyczkę do repozytorium wtyczek WordPress. Zobacz https://wordpress.org/plugins/developers/add/ .
Znajdź domenę ślimaka / tekstu wtyczki. Aby to zrobić, przejdź do strony wtyczki w repozytorium wtyczek WordPress. Adres URL będzie podobny do https://wordpress.org/plugins/your-plugin-slug/ . Ta ostatnia część adresu URL, „twój plugin-ślimak”, to ślimak twojej wtyczki. Tego właśnie używasz w domenie tekstowej funkcji tłumaczących.
Użyj funkcji tłumaczenia WordPress we wtyczce (jak __e(‘hello’, ‘my-plugin-domain’);
). Upewnij się, że używasz prawidłowej domeny tekstowej wtyczek, uzyskanej w poprzednim kroku. Zobacz https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/ aby uzyskać więcej informacji.
Jeśli wykonasz powyższe kroki, WordPress zajmie się:
(Odpowiedź z mojego posta na blogu tutaj: https://cmljnelson.blog/2019/01/01/the-really-lazy-way-to-translate-a-wordpress-plugin/ )