Wsparcie I18n
Wszystkie ciągi wyjściowe powinny być połączone z odpowiednią domeną tekstową, aby umożliwić internacjonalizację przez zainteresowane strony, nawet jeśli programista nie jest zainteresowany tłumaczeniem własnej wtyczki.
Pamiętaj, że bardzo ważne jest, aby załadować pliki językowe podczas init
akcji, aby użytkownik mógł się do niej przyczepić.
Zobacz Codex: I18n dla programistów WordPress
A także ten artykuł: Poprawne ładowanie plików językowych WP .
Od WordPress 4.6+
WP 4.6 zmienił kolejność ładowania i sprawdzone lokalizacje, znacznie ułatwiło to programistom i użytkownikom.
Biorąc pod uwagę wtyczkę z „my-plugin” domeny tekstowej, WordPress PIERWSZE szuka pliku tłumaczenia w:
/wp-content/languages/plugins/my-plugin-en_US.mo
Jeśli nie uda się go znaleźć, będzie szukał takiego, w którym wtyczka każe mu szukać (zwykle w folderze „języka” pluigns, jeśli postępuje zgodnie z kodeksem):
/ wp-content / plugins / my-plugin / languages / my- plugin-en_US.mo
Na koniec, jeśli nie zostanie znaleziony żaden plik językowy, sprawdzi domyślną lokalizację:
/wp-content/languages/my-plugin-en_US.mo
Pierwsze sprawdzenie zostało dodane w 4.6 i daje użytkownikom określone miejsce do dodania pliku językowego, ponieważ wcześniej musieliby wiedzieć, gdzie programista dodał plik językowy, teraz użytkownik musi tylko znać domenę tekstową wtyczki:
/ wp-content / języki / wtyczki / TEXTDOMAIN-LOCAL.mo
Poniżej jest stary sposób (Nie dotyczy od WP 4.6+)
[...]
Na koniec chciałbym podkreślić, że ważne jest, aby załadować niestandardowe pliki języka użytkownika z WP_LANG_DIR przed załadowaniem plików językowych dostarczonych z wtyczką . Gdy wiele plików mo zostanie załadowanych dla tej samej domeny, zostanie użyte pierwsze znalezione tłumaczenie. W ten sposób pliki językowe dostarczone przez wtyczkę będą służyć jako rezerwowe ciągi znaków nie przetłumaczone przez użytkownika.
public function load_plugin_textdomain()
{
$domain = 'my-plugin';
// The "plugin_locale" filter is also used in load_plugin_textdomain()
$locale = apply_filters( 'plugin_locale', get_locale(), $domain );
load_textdomain(
$domain,
WP_LANG_DIR . '/my-plugin/' . $domain . '-' . $locale . '.mo'
);
load_plugin_textdomain(
$domain,
FALSE,
dirname( plugin_basename(__FILE__) ) . '/languages/'
);
}