Несколько полезных функций для плагина qTranslate

06.04.2014

Обычно для мультиязычных сайтов я использую плагин 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';
}

Не уходи, пока не прочитаешь:

Комментарии (20) к “Несколько полезных функций для плагина qTranslate”

  • MariaAspen

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

    Ответить
  • AD Studio

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

    Ответить
  • Бакай

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

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

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

    Ответить
  • Бакай

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

    Ответить
  • Лилия

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

    Ответить
  • Дейл Карнеги

    Здравствуйте!
    Подскажите, пожалуйста, как выстроить флажки в ряд, а не в колонку.
    Пробовал прописать в css так:
    #qtranslate-2-chooser{
    float:left;
    list-style-type:none;
    padding:0px;
    }

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

    Ответить
    • Denis Creative

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

      Ответить
      • Дейл Карнеги

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

        Ответить
        • Denis Creative

          Так будет работать как надо:
          .language-chooser li {
          display: inline-block;
          list-style: outside none none;
          margin-right: 10px;
          }

          Ответить
          • Дейл Карнеги

            Спасибо!
            Еще один нюанс, не отображается третий флажок — английский. В связи с чем это может быть связано? При переходе по ссылке: сайт/en — работает, но флажка в шапке нет.

          • Denis Creative

            Скорее всего в настройках выключен вывод флага текущего языка.

  • Дейл Карнеги

    А где это можно посмотреть? Поскольку в графе «Языки» возле флажка только слова «Редактировать» и «Отключить». В «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;}

    Ответить
    • Denis Creative

      Не подскажу, давно с этим плагином не работал, смотрите настройки или код вывода флагов.

      Ответить
  • Саня

    А как вывести рубрики только из 1 языка а не все которые есть??

    Ответить
  • Сергей

    Спасибо за статью!
    У меня возник такой вопрос:
    Как переделать/доделать плагин qTranslate-X чтобы он зацепил переключатель языков в админке, у текстовых полей которые загружаются через Ajax ?

    Подробное описание этой проблемы есть и на форуме Как сделать перевод полей загружаемые через ajax используя плагин qTranslate-X в WordPress?.

    Спасибо!

    Ответить
    • Denis Creative

      Я уже давно не использую плагин qTranslate, вместо него лучше всего использовать Polylang.
      По вопросам qTranslate-X, к сожалению, помочь не смогу.

      Ответить
  • Виктор

    Здравствуйте! Отличные у вас статьи. Некоторые вещи позаимствовал.
    В плагине Polylang при переключении языка редиректит на главную. Отсутствуют связи между страницами для разных языков. Возможно находили решение как эти связи создать?

    Ответить
    • Denis Creative

      Рад, что на сайте есть что-то полезное не только для меня)
      Чем замечателен плагин Polylang, что связи у него настраиваются очень просто и это очень удобно для навигации по сайту, думаю, для SEO это тоже полезно.
      Связи настраиваются очень просто — у каждой записи и каждой страницы есть выбор связанной записи или страницы:
      polylang связь страниц или записей между разными языками
      При чем раньше была еще настройка в самом плагине, но сейчас ее нет, и походу по умолчанию, если есть связь, то при смене языка, идет перенаправление на связанную страницы, а если нет связанной страницы, тогда идет перенаправление на главную.

      Ответить

Оставить комментарий