WordPress 4.0 (и выше) — динамическое изменение языкового стандарта из внешнего интерфейса (общедоступного)

Извините за длинное объяснение, но у меня есть куча времени, когда я пытаюсь заставить клиентский веб-сайт WordPress перейти с английского на корейский и наоборот (с внешнего интерфейса) с тех пор, как я обновил WordPress 3.8 до WordPress 4.1.

Я понимаю, что WordPress 4.0 теперь использует «выбор языка» в настройках Dashboard, чтобы определить, на каком языке сайт отображается в глобальном масштабе, однако клиенту нужен сайт для переключения языков на основе предпочтений посетителей, а не того, который установлен в Dashboard. Клиент хочет, чтобы только пользователи уровня администратора имели доступ к приборной панели, что означает, что все остальные (обычные) пользователи будут сохранены из их собственной панели инструментов.

Я реализовал простой переключатель общедоступного языка, который прекрасно работал с WordPress 3.8, и плагин qTranslate, который выглядит следующим образом (это просто ссылки, по которым можно перейти, чтобы изменить язык):

Английский | 한국어

После обновления до WP 4.0 мне пришлось прекратить использовать qTranslate (несовместимо с WP 4.0) и начать использовать qTranslate Plus (https://wordpress.org/plugins/qtranslate-xp/).

Но теперь WP 4.0 игнорирует то, что пытается сделать qTranslate Plus, особенно с такими большими плагинами, как BBPress.

Я много раз использую удобную функцию на сайте, которая позволяет мне определить, какой язык в данный момент выбрал пользователь. URL также изменяется соответствующим образом. Например:

Английская версия — example.com/

Корейская версия — example.com/KO/ (Простой «KO /» добавляется после имени домена, если пользователь нажимает на корейскую ссылку, описанную выше)

Функция, которую я использую для определения того, какой язык в данный момент включен пользователем, выглядит следующим образом:

$current_lang = ppqtrans_getLanguage(); // function is from qTranslate Plus
if ($current_lang == "KO") {
// do what I need to do here in Korean
} else if ($current_lang == "en") {
// do what I need to do here in English
}

Вышеописанное прекрасно работает на пользовательских страницах, но я также использую BBPress и Event Espresso (программное обеспечение для регистрации событий и платежный шлюз), которые больше не переключаются на корейский после обновления до WordPress 4.1, в котором мой клиент прямо сейчас бушует.

Я попытался использовать такую ​​функцию в файле functions.php темы, но она не работает:

add_filter('locale', 'change_lang');
function change_lang( $locale ) {

$current_lang = ppqtrans_getLanguage();

if ($current_lang == "KO") {
$locale = "ko_KR";

} else if ($current_lang == "en") {
$locale = "en_US";

}

return $locale;

}

Извините, если вышесказанное выглядит совершенно неправильно. Я все еще пытаюсь разобраться с крючками и фильтрами.

В любом случае, если у кого-то есть понимание того, как заставить плагины, такие как BBPress и Event Espresso, учитывать динамически измененную локаль, это было бы удивительно! Даже сотрудники Event Espresso не знали, как заставить это работать. Я просто не понимаю, почему то, что кажется таким простым, так трудно осуществить!

Большое спасибо за ваше время!

TL; DR: я пытаюсь динамически изменять языковой стандарт WordPress 4.0 в зависимости от того, как выглядит URL. example.com/ должен установить сайт на английском языке. example.com/KO/ должен установить для сайта корейский язык — без использования настройки в переключателе языка на панели инструментов.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]