Несколько полезных функций для плагина qTranslate
Обычно для мультиязычных сайтов я использую плагин 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'; }
Я ничего против внешних ссылок на авторов плагинов, шаблонов и каких-либо программерских решений не имею,…
Плагин Google XML Sitemaps — отличный плагин для создания карты сайта в формате xml для…
После обновления плагина Contact Form 7 сообщение об ошибке (alert) не пропадает при наведении курсора…
Как вывести несколько последних записей из определенной категории В нужном месте добавляем в шаблон код:…
24 комментария
Ответить
Спасибо большое за информацию. Ко мне перешел под руководство сайт на русском языке. Это первый для меня сайт не на английском и я была в замешательстве по поводу назначения на многих страницах. Теперь понятно :)
Спасибо, очень полезные статейки по WP у вас.
Добрый вечер!
Спасибо, отличный материал! Но только у меня не получается перевести ссылки (например site.ru/category/politics/)
помогите пожалуйста :(
Для того, чтобы убрать «category» из адреса страницы, ознакомьтесь со статьей Как убрать category из адреса страницы в WordPress.
и у меня 3 языка :(
Рекомендую использовать плагин Polylang (https://wordpress.org/plugins/polylang/) — он гораздо лучше в настройках, удобнее, и стабильнее.
На сайте, который я редактирую, проблемы с переводом страницы редактирования профиля пользователя(используется qtranslate). Если я выбираю русский язык, то страница переводится, но после нажатия кнопки «Сохранить изменения» страница перезагружается уже не на русском, а на английском(язык по умолчанию). Если честно, я еще новичок в WordPress и еще пока толком не разобралась, меня попросили исправить ошибки в уже существующем сайте. Очень прошу Вашего совета, с чем может быть связана подобная проблема?Заранее спасибо.
Здравствуйте!
Подскажите, пожалуйста, как выстроить флажки в ряд, а не в колонку.
Пробовал прописать в css так:
К сожалению, не помогло.
Попробуйте
display:inline-block;
или покажите сайт, нужно посмотреть как они у вас выводятся, в каком виде.К сожалению, не помогло.
Сайт: intaste.lv. Посмотрите, пожалуйста.
Так будет работать как надо:
Спасибо!
Еще один нюанс, не отображается третий флажок — английский. В связи с чем это может быть связано? При переходе по ссылке: сайт/en — работает, но флажка в шапке нет.
Скорее всего в настройках выключен вывод флага текущего языка.
А где это можно посмотреть? Поскольку в графе «Языки» возле флажка только слова «Редактировать» и «Отключить». В «Head inline CSS» появилась строчка с этим флажком:
.qtranxs_flag_en {background-image: url(http://www.intaste.lv/wp-content/plugins/qtranslate-x/flags/gb.png); background-repeat: no-repeat;}
Не подскажу, давно с этим плагином не работал, смотрите настройки или код вывода флагов.
А как вывести рубрики только из 1 языка а не все которые есть??
Спасибо за статью!
У меня возник такой вопрос:
Как переделать/доделать плагин qTranslate-X чтобы он зацепил переключатель языков в админке, у текстовых полей которые загружаются через Ajax ?
Подробное описание этой проблемы есть и на форуме Как сделать перевод полей загружаемые через ajax используя плагин qTranslate-X в WordPress?.
Спасибо!
Я уже давно не использую плагин qTranslate, вместо него лучше всего использовать Polylang.
По вопросам qTranslate-X, к сожалению, помочь не смогу.
Здравствуйте! Отличные у вас статьи. Некоторые вещи позаимствовал.
В плагине Polylang при переключении языка редиректит на главную. Отсутствуют связи между страницами для разных языков. Возможно находили решение как эти связи создать?
Рад, что на сайте есть что-то полезное не только для меня)
Чем замечателен плагин Polylang, что связи у него настраиваются очень просто и это очень удобно для навигации по сайту, думаю, для SEO это тоже полезно.
Связи настраиваются очень просто — у каждой записи и каждой страницы есть выбор связанной записи или страницы:
При чем раньше была еще настройка в самом плагине, но сейчас ее нет, и походу по умолчанию, если есть связь, то при смене языка, идет перенаправление на связанную страницы, а если нет связанной страницы, тогда идет перенаправление на главную.
Добрый день! Помогите пожалуйста, столкнулся с такой проблемой при установке плагина Polylang на WordPress(на основе шаблона TemplateMonster) слетает главная страница. С чем это может быть связанно, и как можно решить данную проблему?
За ранние благодарю за ответ!
После активации плагина нужно обязательно все записи присвоить к языку по умолчанию в настройках плагина Polylang

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