Я создал тему WordPress, которая должна быть на немецком и английском языках. В навигации у меня есть кнопка, которая должна менять язык в зависимости от того, какой язык они используют в настоящее время. (Если они просматривают английскую страницу, она должна отображать «Deutsch» и наоборот.)
Я использую qTranslate Plus и решил отображать код языка в URL (/ de или / en). Моя основная проблема заключается в том, что я нахожусь на пользовательской странице (WordPress-страница с шаблоном) (/ custom-page) и меняю язык, который не меняется на немецкий, хотя в исходном коде ссылка отображает / de / custom-page , Он полностью игнорирует код языка и снова выводит меня на / custom-страницу. Так что, похоже, лишает языковой код.
Это стандартное поведение WordPress и если да, то как его отключить?
Также есть ли лучший, более надежный способ изменить язык? Будет ли сохранение языка в сеансе работать?
Примечание: «Скрыть непереведенный контент» и «Скрыть информацию о языке URL для языка по умолчанию». не проверены.
Заранее спасибо,
Питер
У меня была похожая проблема на сайте, над которым я работал. Я установил это расширение, которое, казалось, решило некоторые проблемы с URL
https://wordpress.org/plugins/qtranslate-slug/
в качестве альтернативы, вы можете нацелить кнопку с помощью javascript / jQuery, используя условные операторы для определения html lang attr. Что-то вроде этого:
var lang = document.documentElement.lang;
if (lang == 'en-US'){
$('button').html('your button text')
}
qTranslate не поддерживается хорошо. Если вы только начали внедрять его, я думаю, вы должны попробовать другие плагины. Вот несколько замен для qTranslate:
mqTranslate а также zTranslate. Оба — вилки qTranslate, поэтому вы ничего не должны терять.
Что касается вашего вопроса, вы можете просто скрыть текущий язык с помощью css, используя lang selector:
:lang(current languagecode) {
display: none;
/*the other way to hide things*/
text-indent: 9999px;
overflow: hidden;
}
Надеюсь это поможет.
С уважением.
В двух моих установках wordpress (3.8.1, обновленных до 4.0) я заметил, что mqtranslate (тот же код) не переводит содержимое при использовании маршрутизации на основе URL, что похоже на вашу проблему.
Я только что установил «qtranslate plus» на свежем wp 4.0, и он работал, как и ожидалось, с маршрутизацией на основе URL (но, похоже, испортил формат даты в заголовке поста).
Поэтому я думаю, что проблема может заключаться в том, что номер версии не работает вместе с qtranslate.
может быть, preg_match-code в строке 173 ppqtranslate_core.php не дает правильного результата.
обходной путь:
я перестал копать на этом этапе и переключился на доменную маршрутизацию (en.site.com для английского и site.com для немецкого). это работает без нареканий. если вы можете сделать это, просто попробуйте. вам нужно
Добавьте к httpd.conf:
<VirtualHost *:80>
ServerName "en.site.com"ServerAdmin webmaster@localhost
DocumentRoot /the/path/to/your/html/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /the/path/to/your/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
и перезапустите веб-сервер с
/etc/init.d/httpd restart
после этого доменного перевода должен работать.