WordPress Dataviews React многоязычность i18n

Вопрос или проблема

Я использую компонент React WP dataviews в своем плагине, но не могу загрузить перевод для компонента.

ОФИЦИАЛЬНАЯ ДОКУМЕНТАЦИЯ

Я загрузил перевод плагина в файл php с помощью:

function umc_load_textdomain() {
    load_plugin_textdomain(
        'unused-media-cleaner',
        false,
        dirname( plugin_basename( __FILE__ ) ) . '/languages'
    );  
}
add_action( 'plugins_loaded', 'umc_load_textdomain' );

и я загрузил перевод скрипта js в файл js с помощью:

wp_set_script_translations( 'umc-script', 'unused-media-cleaner', plugin_dir_path( __FILE__ ) . '/languages/' );

Перевод плагина работает отлично, а также перевод внутри файла js. Но компонент Dataviews не загружает языки.

Я не понимаю, делаю ли я что-то неправильно.

Я проверил стандартный домен WP в /languages/ и он содержит перевод строк. Я проверил тот же компонент на странице site-editor.php, используя FSE, и он загружает перевод правильно.

dataviews

Ответ или решение

Вопрос о мультиязычности Dataviews компонента в React для WordPress

Ваша проблема с загрузкой перевода для компонента Dataviews в React, вероятно, связана с особенностями работы этого компонента и тем, как он взаимодействует с локализацией в WordPress. Давайте подробно рассмотрим возможные причины и решения.

1. Настройка текстового домена

Вы уже правильно настроили текстовый домен для вашего плагина в PHP с помощью функции load_plugin_textdomain. Это обеспечивает загрузку переводов для всех строк в вашем плагине, включая те, которые могут находиться в JavaScript.

function umc_load_textdomain() {
    load_plugin_textdomain(
        'unused-media-cleaner',
        false,
        dirname( plugin_basename( __FILE__ ) ) . '/languages'
    );  
}
add_action( 'plugins_loaded', 'umc_load_textdomain' );

Также вы правильно используете wp_set_script_translations для подключения переводов к вашему JavaScript.

wp_set_script_translations( 'umc-script', 'unused-media-cleaner', plugin_dir_path( __FILE__ ) . '/languages/' );

2. Проверка правильности идентификаторов

Убедитесь, что используемые вами идентификаторы совпадают с теми, которые указаны в языковых файлах. Для компонента Dataviews важно, чтобы идентификаторы текстов совпадали с теми, которые он использует. Попробуйте временно добавить простую строку перевода в ваш pоplugin и проверить, загружается ли она.

3. Загрузка скриптов

Убедитесь, что скрипты, содержащие компонент Dataviews, загружаются после вызова wp_set_script_translations. Если они загружаются до вызова этой функции, переводы не будут доступны. Попробуйте использовать хук wp_enqueue_scripts для более точного контроля порядка загрузки:

add_action('wp_enqueue_scripts', function() {
    // Регистрация и подключение скриптов
    wp_enqueue_script('umc-script', plugin_dir_url(__FILE__) . 'js/script.js', array(), '1.0', true);
    // Загрузка переводов
    wp_set_script_translations('umc-script', 'unused-media-cleaner', plugin_dir_path(__FILE__) . '/languages/');
});

4. Проверка структуры файлов

Убедитесь, что структура папок в вашем плагине соответствует ожиданиям WordPress. Например, у вас должна быть папка languages на том же уровне, что и основной файл плагина, и в ней должны находиться файлы .mo и .po с правильными названиями (например, unused-media-cleaner-ru_RU.mo).

5. Проверка контекста использования компонента

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

6. Альтернативные подходы к локализации

Иногда имеет смысл использовать стандартные функции локализации JavaScript, такие как wp.i18n.__(), которые позволяют задавать строки перевода непосредственно в вашем коде JavaScript:

import { __ } from '@wordpress/i18n';

const MyComponent = () => (
    <div>{__('Hello, World!', 'unused-media-cleaner')}</div>
);

Заключение

Следуя вышеперечисленным шагам, вы сможете устранить проблемы с загрузкой переводов для компонента Dataviews в вашем плагине. Если ни одно из предложенных решений не сработает, возможно, стоит проверить наличие ошибок в консоли или обратиться за помощью на форумы WordPress, где вы сможете найти дополнительные идеи от сообщества.

Оцените материал
Добавить комментарий

Капча загружается...