Локализация: мне нужен бэкэнд: английский и внешний интерфейс на определенном языке

9

Я бы хотел иметь бэкэнд Wordpress на английском языке и использовать другой язык для внешнего интерфейса

до сих пор я выясняю, возможно, я мог бы сделать это, установив в wpconfig локаль, которую я хочу использовать во внешнем интерфейсе, а затем добавив в functions.php что-то вроде этого:

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

Это лучшая практика для достижения того, что я хочу, или я должен делать это по-другому?

unfulvio
источник

Ответы:

1

Есть плагин, который может быть тем, что вам нужно.

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

Энди Джеймс
источник
хорошо, спасибо, я посмотрю код, но, возможно, не буду его использовать, поскольку он не обновляется с 2008 года и поддерживает только до WP 2.6 - если он мне нравится и у меня есть возможность, возможно, попробую поговорить с разработчиком и обновить его
unfulvio
о, только что проверил, он делает почти то же самое, что и функция, которую я написал выше, в другом стиле
unfulvio
Да, он старый, но, кажется, единственный вокруг. Если код - это то, как вы это сделали, то я думаю, что ответ в том, что вы на правильном пути, и как я бы это сделал ... не могу придумать лучшего способа.
Энди Джеймс
1

До сих пор я думаю, что ответ Фульвио - лучший. Я использую этот фильтр даже на многосайтовой установке, используя всего одну строку:

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

В основном иногда, и в этом случае я использую мультисайты для многоязычных сайтов вместо плагинов. Кроме того, у меня есть одна отдельная тема для каждого языка (обычно дочерние темы основного языка). Таким образом, каждый сайт сети имеет свой собственный язык, но на стороне администратора мне нужны все интерфейсы на итальянском языке.

Итак, что я делаю:

  1. Я не использую общую константу WPLANG в wp-config.php
  2. Я устанавливаю итальянский язык на каждом сайте сети
  3. В файле functions.php каждой темы я использую приведенный выше фильтр для управления языком / языком интерфейса.

ПРИМЕЧАНИЕ: этот фильтр не изменит язык администратора, поэтому нет необходимости проверять, является ли is_admin ()

Лука Регеллин
источник
0

Если кто-то все еще ищет это, вот что вы должны сделать, начиная с версии 4.7

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

Это заставляет приборную панель загружаться на английском языке, затем вы можете перейти к настройкам, установить желаемый язык.

Мотаз М. Эль Шазлы
источник