Обычно для мультиязычных сайтов я использую плагин Polylang, про него еще напишу позже, но в последнем проекте попросили делать языковые версии на qTranslate. В принципе плагин не сложный, все просто и понятно, и даже несколько очень даже ощутимых плюсов я у него обнаружил.
Самый, конечно же, большой плюс – это то, что в одной записи вы можете заполнить все языковые варианты этой страницы, в отличие от Polylang, где для каждой языковой версии страницы нужно создавать отдельные записи.
При переключении между языками, открывается эта же страница только на другом языке, в отличие от Polylang, где по умолчанию перенаправляет на главную страницу, а иначе нужно настраивать связи между различными языковыми версиями страницы.
Также очень удобно, что у каждой языковой версии один и тот же урл, только добавляются префиксы языков, в Polylang из за того, что для каждой языковой версии создается своя запись, не получится сделать одинаковые урлы, то есть не получиться создать /ru/map/ и /en/map/, потому что адрес map может быть только у одной записи.
Так же при использовании qTranslate можно не настраивать шаблон на использование файлов локализации формата .mo, .po. Можно использовать простой код с вариантами для каждого языка. Это удобно для небольших сайтов, если же сайт большой и много статичных текстов в шаблоне, то, возможно, лучше использовать файлы локализации для каждого языка. Как его создать напишу чуть позже.
Но, единственный (пока замеченный) серьезный минус – это то, что дополнительные поля будут относиться ко всем языковым версиям, и не получится заполнить их отдельно для каждой версии с разными значениями. Можно, конечно для каждого языка создавать свое поле, но это не поможет, например, с плагином All In One Seo.
Длинное вступление, а теперь несколько полезных функций:
Выводим переключатель языков, в данном случае, выведется ненумерованный список с текстовым названием языков, стили отображения переключателя языков задаются в настройках плагина, можно вывести флаги, иконки, текст, но можно задать любые свои стили, прописав их в таблице стилей:
<?php qtrans_generateLanguageSelectCode('text', 'language'); ?> Варианты: 'image' 'text' 'both' 'dropdown'
Вывод ссылки на главную в той же языковой версии:
<a href="<?php echo qtrans_convertURL(home_url( '/' )); ?>">Home</a>
Для того, чтобы не использовать файлы локализации, можно прямо в шаблоне прописать несколько языковых вариантов для статического текста:
<?php echo __('[:en]Map[:ru]Карта'); ?>
Есть так же еще один вариант, но первый точно работает и пишется гораздо короче, а нижний вариант еще нужно проверить, и получается он очень громоздкий:
<?php _e('<!--:en-->Map<!--:--><!--:ru-->Карта<!--:-->'); ?>
Так же можно сделать условие, что при английском языке выводится дополнительное поле для англ., а при русском выводится поле, созданное для русского языка:
<?php if ( get_field('title_en') && qtrans_getLanguage() == 'en' ) { ?> <?php the_field('title_en'); ?> <?php } elseif ( get_field('title_ru') && qtrans_getLanguage() == 'ru' ) { ?> <?php the_field('title_ru'); ?> <?php } else { ?> <?php the_title(); ?> <?php } ?>
Или такой вариант, но он больше подходит для больших текстов или частей кода:
if ( qtrans_getLanguage() == 'ru' ) { echo 'Карта'; } else { echo 'Map'; }
Комментарии (24) к “Несколько полезных функций для плагина qTranslate”
MariaAspen
Спасибо большое за информацию. Ко мне перешел под руководство сайт на русском языке. Это первый для меня сайт не на английском и я была в замешательстве по поводу назначения на многих страницах. Теперь понятно :)
AD Studio
Спасибо, очень полезные статейки по WP у вас.
Бакай
Добрый вечер!
Спасибо, отличный материал! Но только у меня не получается перевести ссылки (например site.ru/category/politics/)
помогите пожалуйста :(
Denis Creative
Для того, чтобы убрать “category” из адреса страницы, ознакомьтесь со статьей Как убрать category из адреса страницы в WordPress.
Бакай
и у меня 3 языка :(
Denis Creative
Рекомендую использовать плагин Polylang (https://wordpress.org/plugins/polylang/) – он гораздо лучше в настройках, удобнее, и стабильнее.
Лилия
На сайте, который я редактирую, проблемы с переводом страницы редактирования профиля пользователя(используется qtranslate). Если я выбираю русский язык, то страница переводится, но после нажатия кнопки «Сохранить изменения» страница перезагружается уже не на русском, а на английском(язык по умолчанию). Если честно, я еще новичок в WordPress и еще пока толком не разобралась, меня попросили исправить ошибки в уже существующем сайте. Очень прошу Вашего совета, с чем может быть связана подобная проблема?Заранее спасибо.
Дейл Карнеги
Здравствуйте!
Подскажите, пожалуйста, как выстроить флажки в ряд, а не в колонку.
Пробовал прописать в css так:
К сожалению, не помогло.
Denis Creative
Попробуйте
display:inline-block;
или покажите сайт, нужно посмотреть как они у вас выводятся, в каком виде.Дейл Карнеги
К сожалению, не помогло.
Сайт: intaste.lv. Посмотрите, пожалуйста.
Denis Creative
Так будет работать как надо:
Дейл Карнеги
Спасибо!
Еще один нюанс, не отображается третий флажок – английский. В связи с чем это может быть связано? При переходе по ссылке: сайт/en – работает, но флажка в шапке нет.
Denis Creative
Скорее всего в настройках выключен вывод флага текущего языка.
Дейл Карнеги
А где это можно посмотреть? Поскольку в графе “Языки” возле флажка только слова “Редактировать” и “Отключить”. В “Head inline CSS” появилась строчка с этим флажком:
.qtranxs_flag_en {background-image: url(https://www.intaste.lv/wp-content/plugins/qtranslate-x/flags/gb.png); background-repeat: no-repeat;}
Denis Creative
Не подскажу, давно с этим плагином не работал, смотрите настройки или код вывода флагов.
Саня
А как вывести рубрики только из 1 языка а не все которые есть??
Сергей
Спасибо за статью!
У меня возник такой вопрос:
Как переделать/доделать плагин qTranslate-X чтобы он зацепил переключатель языков в админке, у текстовых полей которые загружаются через Ajax ?
Подробное описание этой проблемы есть и на форуме Как сделать перевод полей загружаемые через ajax используя плагин qTranslate-X в WordPress?.
Спасибо!
Denis Creative
Я уже давно не использую плагин qTranslate, вместо него лучше всего использовать Polylang.
По вопросам qTranslate-X, к сожалению, помочь не смогу.
Виктор
Здравствуйте! Отличные у вас статьи. Некоторые вещи позаимствовал.
В плагине Polylang при переключении языка редиректит на главную. Отсутствуют связи между страницами для разных языков. Возможно находили решение как эти связи создать?
Denis Creative
Рад, что на сайте есть что-то полезное не только для меня)
Чем замечателен плагин Polylang, что связи у него настраиваются очень просто и это очень удобно для навигации по сайту, думаю, для SEO это тоже полезно.
Связи настраиваются очень просто – у каждой записи и каждой страницы есть выбор связанной записи или страницы:
При чем раньше была еще настройка в самом плагине, но сейчас ее нет, и походу по умолчанию, если есть связь, то при смене языка, идет перенаправление на связанную страницы, а если нет связанной страницы, тогда идет перенаправление на главную.
Александр
Добрый день! Помогите пожалуйста, столкнулся с такой проблемой при установке плагина Polylang на WordPress(на основе шаблона TemplateMonster) слетает главная страница. С чем это может быть связанно, и как можно решить данную проблему?
За ранние благодарю за ответ!
Denis Creative
После активации плагина нужно обязательно все записи присвоить к языку по умолчанию в настройках плагина Polylang

Ника
Здравствуйте! Помогите, пожалуйста, убрать из URL язык, чтобы он скрывался.
Denis Creative
Добрый день, не подскажу, уже давно не использую плагин qTranslate – вместо него везде использую Polylang.