Несколько полезных функций для плагина 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';
}
Как удалить внешние ссылки из карты сайта sitemap.xml

Я ничего против внешних ссылок на авторов плагинов, шаблонов и каких-либо программерских решений не имею,…

Плагин Google XML Sitemaps не работает с www, как исправить? (Error loading stylesheet: An unknown error has occurred (805303f4))

Плагин Google XML Sitemaps — отличный плагин для создания карты сайта в формате xml для…

В CF7 версии 3,6 перестало пропадать сообщение о неправильном заполнении полей

После обновления плагина Contact Form 7 сообщение об ошибке (alert) не пропадает при наведении курсора…

Как вывести несколько последних записей из определенной категории

Как вывести несколько последних записей из определенной категории В нужном месте добавляем в шаблон код:…

24 комментария

MariaAspen

Спасибо большое за информацию. Ко мне перешел под руководство сайт на русском языке. Это первый для меня сайт не на английском и я была в замешательстве по поводу назначения на многих страницах. Теперь понятно :)

Спасибо, очень полезные статейки по WP у вас.

Бакай

Добрый вечер!

Спасибо, отличный материал! Но только у меня не получается перевести ссылки (например site.ru/category/politics/)

помогите пожалуйста :(

Для того, чтобы убрать «category» из адреса страницы, ознакомьтесь со статьей Как убрать category из адреса страницы в WordPress.

Бакай

и у меня 3 языка :(

Рекомендую использовать плагин Polylang (https://wordpress.org/plugins/polylang/) — он гораздо лучше в настройках, удобнее, и стабильнее.

Лилия

На сайте, который я редактирую, проблемы с переводом страницы редактирования профиля пользователя(используется qtranslate). Если я выбираю русский язык, то страница переводится, но после нажатия кнопки «Сохранить изменения» страница перезагружается уже не на русском, а на английском(язык по умолчанию). Если честно, я еще новичок в WordPress и еще пока толком не разобралась, меня попросили исправить ошибки в уже существующем сайте. Очень прошу Вашего совета, с чем может быть связана подобная проблема?Заранее спасибо.

Дейл Карнеги

Здравствуйте!
Подскажите, пожалуйста, как выстроить флажки в ряд, а не в колонку.
Пробовал прописать в css так:

#qtranslate-2-chooser{
	float:left;
	list-style-type:none;
	padding:0px;	
}

К сожалению, не помогло.

Попробуйте display:inline-block; или покажите сайт, нужно посмотреть как они у вас выводятся, в каком виде.

Дейл Карнеги

К сожалению, не помогло.
Сайт: intaste.lv. Посмотрите, пожалуйста.

Так будет работать как надо:

language-chooser li {
    display: inline-block;
    list-style: outside none none;
    margin-right: 10px;
}
Дейл Карнеги

Спасибо!
Еще один нюанс, не отображается третий флажок — английский. В связи с чем это может быть связано? При переходе по ссылке: сайт/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 связь страниц или записей между разными языками

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

Александр

Добрый день! Помогите пожалуйста, столкнулся с такой проблемой при установке плагина Polylang на WordPress(на основе шаблона TemplateMonster) слетает главная страница. С чем это может быть связанно, и как можно решить данную проблему?
За ранние благодарю за ответ!

После активации плагина нужно обязательно все записи присвоить к языку по умолчанию в настройках плагина Polylang
polylang

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

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

Ответить