Skip navigation

Это форум технической поддержки WPML – плагина для многоязычной WordPress.

Доступно для чтения всем, но только клиенты, купившие WPML, могут оставлять сообщения. Сотрудники WPML отвечают на сообщения форума 6 дней в неделю, 22 часов в сутки.

Помечено: 

Эта тема содержит 11 ответов, имеет 2 голоса.

Последнее обновление: Andrey 1 год, 11 месяцев назад.

При содействии: Andrey.

Автор Записи
13 января, 2023 на 6:50 пп #12815857

stanislavS-19

Я написал плагин:
<?php
/* ====================================
* Plugin Name: ***
* Description: Плагин для размещения (без потери при любых обновлениях) кодов в футере.
* Author: ***
* Author URI: ***
* Version: 1.0
* ==================================== */

/**
*
*/
add_action('wp_footer', 'sheensay_counters', 100);
function sheensay_counters() {
?>
<ul class="share">
<!--Phone-->

  • <div class="social-link">


    </div>

  • <!--Viber-->

  • <div class="social-link">
    скрытая ссылка"><div class="nav-label">
    <span><?php _e('Написать в Viber', 'callback_widget'); ?></span>
    </div>

    </div>
  • <!--Telegram-->

  • <div class="social-link">
    скрытая ссылка"><div class="nav-label">
    <span><?php _e('Написать в Telegram', 'callback_widget'); ?></span>
    </div>

    </div>
  • <!--Mail-->

  • <div class="social-link">


    </div>

  • <?php
    }

    Он добавляет код в футер, который отображает блок обратной связи на сайте скрытая ссылка Все текста, согласно инструкции https://wpml.org/documentation/support/translating-the-theme-you-created/ заключил в _e

    WPML нашел мои строки, и я их перевел. Но переводы не отображаются на сайте. Где я допустил ошибку?

    16 января, 2023 на 7:08 дп #12823935

    stanislavS-19

    Я заметил, что перевод работает. Но, только после обновления страницы. Т.е. если мы находимся на странице с рус яз и переключаемся на укр яз. Перевод не появляется и надписи в моем блоке мессенджеров отображаются на русском. Но, если обносить страницу (F5 или кнопка "Обновить" в браузере), то перевод появляется. Как это можно исправить? Чтобы перевод загружался/отображался сразу?

    16 января, 2023 на 8:03 дп #12824123

    stanislavS-19

    Аналогичное явление наблюдаю и с плагином Popup Maker. Если переключиться с русского на украинский и нажать кнопку "Замовити печатку" или "Замовити факсиміле" (ориентировочно находятся посередине страницы), то мы увидим Contact Form7 во всплывающем окне на русском языке. Но, если обновим страницу, и снова нажмем на ту же кнопку, то форма уже будет на украинском.

    16 января, 2023 на 1:21 пп #12827017

    Andrey
    Supporter

    Языки: Английский (English ) Русский (Русский )

    Часовой пояс: Europe/Kyiv (GMT+02:00)

    Спасибо за обращение в службу поддержки WPML.

    Как Вы загружаете Ваш textdomain callback_widget в плагине?

    https://developer.wordpress.org/themes/functionality/internationalization/

    Также обратил внимание, что при смене языка на украинский блок обратной связи не перезагружается. Не знаю, как он был именно реализован, может проблема в кэше?

    16 января, 2023 на 3:07 пп #12827613

    stanislavS-19

    Я не понял этой части предложения: "Как Вы загружаете Ваш textdomain"((( На неё нет ответа в коде, который я написал в первом посте? Те слова, которые надо перевести есть в этом коде. Вот его фрагмент:
    <span><?php _e('Позвонить нам', 'callback_widget'); ?></span>

    И перевод работает, просто он отображается не после переключения языка на украинский. А после переключения и нажатия Обновить страницу (F5).

    И я на 99% уверен, что это тема (Bridge) кеширует. Мой вопрос наверное правильнее сформулировать так: можно ли сделать автоматический принудительный сброс кеша при переключении языка?

    16 января, 2023 на 3:32 пп #12827825

    Andrey
    Supporter

    Языки: Английский (English ) Русский (Русский )

    Часовой пояс: Europe/Kyiv (GMT+02:00)

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

    В нашей API есть константа, которая определяет язык текущей страницы ICL_LANGUAGE_CODE.
    https://wpml.org/documentation/support/wpml-coding-api/

    А, также есть фильтр, который возвращает язык страницы 'wpml_current_language'. То есть, используя это Вы можете написать какую нибудь функцию, которая будет сбрасывать кэш темы, если язык страницы изменился.
    https://wpml.org/wpml-hook/wpml_current_language/

    Каждый плагин или тема загружает свой текстовый домен (по примеру callback_widget), используя следующий код, который есть в указанной ссылке ранее:

    function my_theme_load_theme_textdomain() {
        load_theme_textdomain( 'my-theme', get_template_directory() . '/languages' );
    }
    add_action( 'after_setup_theme', 'my_theme_load_theme_textdomain' );
    

    В Вашем коде, я этого не заметил. Может это и не является причиной, но я бы протестировал.

    23 января, 2023 на 7:02 дп #12869109

    stanislavS-19

    Ок. Забудем про мой код. В теме Bridge (скрытая ссылка) указано, что она оптимизирована для работы с WPML. В этой теме есть боковая область (на скрине). Контент, который в ней отображается, добавляется при помощи виджета. Я создал его на обоих языках (на скрине) и он работает не корректно. Просто при переключении языка перевод не отображается. Надо еще и обновить страницу, нажав F5. Только тогда появляется перевод.

    Виджеты-‹-Ваша-печать-—-WordPress.png
    Ваша-Печатка-виготовлення-печаток-і-штампів-будь-якої-складності.png
    23 января, 2023 на 8:30 дп #12869647

    Andrey
    Supporter

    Языки: Английский (English ) Русский (Русский )

    Часовой пояс: Europe/Kyiv (GMT+02:00)

    Спасибо за информацию. Как говорили ранее, видимо текущая тема кеширует страницы или загружает их методом AJAX.

    Попробуйте добавить следующую линию в functions.php текущей темы:

    add_filter( 'wpml_ls_enable_ajax_navigation', '__return_true' );
    

    Дайте мне знать, если не помогает.

    26 января, 2023 на 12:18 дп #12893861

    stanislavS-19

    Не помогает( Я заметил, что и контактные формы не переключаются((( Т.е. Если с украинского переключиться на русский, и нажать, например, на кнопку баннера, то появится контактная форма на украинском языке. И только обновив страницу, и уже повторно нажав на ту же кнопку мы увидим контактную форму на русском.

    26 января, 2023 на 3:08 пп #12898459

    Andrey
    Supporter

    Языки: Английский (English ) Русский (Русский )

    Часовой пояс: Europe/Kyiv (GMT+02:00)

    Хммм.... странно. А какой будет результат, если отключить Page Transition у Вас в текущей теме, находится в Admin -> Qode Options -> General -> Settings -> Page Transition and select "Fade" ?

    27 января, 2023 на 11:00 дп #12903307

    stanislavS-19

    Да! Это оно! Я переключил на No animation и теперь всё работает прекрасно. Даже мой плагин сразу загружается на выбранном языке. Спасибо за помощь.

    PS: У меня одностраничник, и не принципиально как загружаются страницы, но я думаю не мешало бы вместе с разработчиками темы сделать так, чтобы переключения языков работало на всех вариантах загрузок страницы)

    27 января, 2023 на 3:49 пп #12905387

    Andrey
    Supporter

    Языки: Английский (English ) Русский (Русский )

    Часовой пояс: Europe/Kyiv (GMT+02:00)

    Спасибо за фидбэк) Странно эта линия кода должна была решить именно проблему. Рад, что сейчас работает. Передам фидбэк.

    Хороших выходных!