Почему при активации плагина попапа не срабатывают переводы?

Ссылка скопирована
1 ответ

Ссылка удалена модератором.
На сайте переводы сделаны через Loco Translate при активации плагина Popup Maker переводы не срабатывают. Как это можно решить?

Дополнительно:

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Никита Орлов Ответ

Если после активации плагина попапа переводы не срабатывают, обычно проблема в порядке загрузки textdomain или в том, что строки выводятся до события init/plugins_loaded. WordPress должен загрузить файл перевода до первого вызова __(), _e(), esc_html__().

Правильная схема для обычного плагина:

add_action('plugins_loaded', function () {
    load_plugin_textdomain(
        'my-popup',
        false,
        dirname(plugin_basename(__FILE__)) . '/languages'
    );
});

add_action('plugins_loaded', function () { load_plugin_textdomain( 'my-popup', false, dirname(plugin_basename(__FILE__)) . '/languages' ); });

Строки должны использовать тот же textdomain:

echo esc_html__('Закрыть', 'my-popup');

echo esc_html__('Закрыть', 'my-popup');

Проверьте частые ошибки:

  • textdomain в коде не совпадает с именем в .po/.mo;
  • файлы переводов лежат не там или названы неправильно: my-popup-ru_RU.mo;
  • строки собраны в переводах, но в коде изменились и больше не совпадают;
  • перевод выводится в JavaScript, но JSON-переводы для скрипта не подключены;
  • плагин создаёт popup-контент один раз при активации и сохраняет уже непереведённый текст в базе.

Для JS-переводов нужен wp_set_script_translations():

wp_enqueue_script('my-popup', plugin_dir_url(__FILE__) . 'assets/popup.js', ['wp-i18n'], '1.0', true);
wp_set_script_translations('my-popup', 'my-popup', plugin_dir_path(__FILE__) . 'languages');

wp_enqueue_script('my-popup', plugin_dir_url(__FILE__) . 'assets/popup.js', ['wp-i18n'], '1.0', true); wp_set_script_translations('my-popup', 'my-popup', plugin_dir_path(__FILE__) . 'languages');

Если речь о переводе строк самого popup-контента, проверьте, не берутся ли они из настроек плагина. Текст, сохранённый в опциях, WordPress автоматически через .mo не переведёт: его нужно переводить через WPML/Polylang или хранить отдельные значения для каждого языка.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно