Извините за длинное объяснение, но у меня есть куча времени, когда я пытаюсь заставить клиентский веб-сайт 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/ должен установить для сайта корейский язык — без использования настройки в переключателе языка на панели инструментов.
Задача ещё не решена.
Других решений пока нет …