Lokalizacja: Chcę backend: angielski i frontend w zdefiniowanym języku

9

Chciałbym mieć backend Wordpress w języku angielskim i użyć innego ustawienia narodowego dla frontendu

do tej pory wymyśliłem, że mógłbym to zrobić, ustawiając w wpconfig ustawienia narodowe, których chcę używać w interfejsie, a następnie dodaj w funkcji functions.php coś takiego:

add_filter('locale', 'mytheme_backendlocale');
function mytheme_backendlocale($locale) {
    if ( is_admin() ) {
        return 'en_US';
    }
    return $locale;
}

czy to najlepsza praktyka, aby osiągnąć to, czego chcę, czy powinienem to zrobić inaczej?

unfulvio
źródło

Odpowiedzi:

2

Zainstaluj wtyczkę WP Native Dashboard . Następnie możesz ustawić jeden język dla interfejsu użytkownika wp-config.phpi każdy użytkownik może wybrać inny dla interfejsu.
Zobacz Zmień szablon komentarzy, aby uzyskać szczegółowe informacje i zrzut ekranu.

fuxia
źródło
1

Istnieje wtyczka, która może być tym, czego potrzebujesz.

http://wordpress.org/extend/plugins/fe-be-localization/

Andy James
źródło
Cóż, dziękuję, spojrzę na kod, ale może go nie użyję, ponieważ nie jest aktualizowany od 2008 roku i obsługuje tylko WP 2.6 - jeśli mi się podoba i mam możliwość, może spróbuję porozmawiać z deweloperem i zaktualizuj
unfulvio
och właśnie sprawdzone, robi to prawie tak samo jak funkcja, którą napisałem powyżej, w innym stylu
unfulvio
Tak, jest stary, ale wydaje się jedyny w okolicy. Jeśli kod jest taki, jak to zrobiłeś, to chyba odpowiedź brzmi: jesteś na właściwej ścieżce i to, jak bym to zrobił… Nie mogę wymyślić lepszego sposobu.
Andy James,
1

Do tej pory uważam, że odpowiedź Fulvio jest najlepsza. Używam tego filtru nawet w konfiguracji z wieloma witrynami, z tylko jedną linią:

add_filter('locale', 'set_admin_locale');
function set_admin_locale($locale) {
  return 'en_US';
}

Zasadniczo czasami iw tym przypadku używam wielu witryn dla wielojęzycznych witryn zamiast wtyczek. Mam też 1 pojedynczy motyw dla każdego języka (zwykle motywy podrzędne głównego języka). Więc każda strona sieci ma swój własny język, ale po stronie administratora potrzebuję wszystkich interfejsów w języku włoskim.

Więc to co robię to:

  1. Nie używam ogólnej stałej WPLANG w wp-config.php
  2. Ustawiam włoski na każdej stronie sieci
  3. W funkcji każdego motywu. Php Używam powyższego filtra do sterowania językiem / ustawieniami frontonu.

UWAGA: ten filtr nie zmieni języka administratora, więc nie trzeba sprawdzać, czy is_admin ()

Luca Reghellin
źródło
0

Jeśli ktoś nadal tego szuka, oto, co powinieneś zrobić od wersji 4.7

function wp_noshor_redefine_locale($locale) {
    if( is_admin() ):
        switch_to_locale('en_US');
    endif;
}
add_filter('init','wp_noshor_redefine_locale');

Wymusza to załadowanie deski rozdzielczej w języku angielskim, a następnie możesz przejść do ustawień, ustawić żądany język.

Motaz M. El Shazly
źródło