Как перевести конструктор главной

Способ 1 для относительно небольших текстов.

Перевод элементов конструктора главной необходимо задавать вручную. Для этого нужно добавить такой код в плагин https://support.wpshop.ru/docs/general/profunctions/

function bono_translate_items( $text ) {
    $items = [];
    switch ( substr( get_locale(), 0, 2 ) ) {
        case 'ru':
            $items = [
                'Hi there!' => 'Приветики!',
                // add more translations here
            ];
            break;
            // add more locales here
        default:
            break;
    }
    if ( array_key_exists( $text, $items ) ) {
        return $items[ $text ];
    }

    return $text;
}

add_filter( 'bono_homepage_constructor:categories_section_header_text', 'bono_translate_items' );
add_filter( 'bono_homepage_constructor:html_section_header_text', 'bono_translate_items' );
add_filter( 'bono_homepage_constructor:posts_section_header_text', 'bono_translate_items' );
add_filter( 'bono_homepage_constructor:products_section_header_text', 'bono_translate_items' );
add_filter( 'bono_category_slide_item_title', 'bono_translate_items' );
add_filter( 'bono_category_slide_item_description', 'bono_translate_items' );
add_filter( 'bono_category_slide_item_button_text', 'bono_translate_items' );
add_filter( 'bono_homepage_constructor:slide_title', 'bono_translate_items' );
add_filter( 'bono_homepage_constructor:slide_button_text', 'bono_translate_items' );
add_filter( 'bono_homepage_constructor:slide_excerpt', 'bono_translate_items' );

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

Способ 2

Для перевода контента в блоках конструктора главной можно добавить такой код в файл functions.php дочерней темы

add_shortcode( 'i18n', function ( $atts, $content ) {
    shortcode_atts( [
        'lang' => get_locale(),
    ], $atts );

    if ( substr( 0, 2, $atts['lang'] ) === substr( get_locale(), 0, 2 ) ) {
        return $content;
    }

    return '';
} );

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

[i18n lang="ru"]текст[/i18n]
[i18n lang="en"]text[/i18n]

Для того, чтобы задать разные ссылки для разных языковых версий, нужно добавить такой код *

add_filter( 'bono_homepage_constructor:slide_link', function ( $url ) {
    global $shortcode_tags;
    $orig_shortcode_tags = $shortcode_tags;

    $shortcode_tags = array_filter( $shortcode_tags, function ( $shortcode ) {
        return $shortcode === 'i18n';
    }, ARRAY_FILTER_USE_KEY );

    $result = do_shortcode( $url );

    $shortcode_tags = $orig_shortcode_tags;

    return $result;
} );

и таким образом появиться возможность задавать разные урлы для разных языковых версий, примерно так

[i18n lang="ru"]http://example-ru.com[/i18n][i18n lang="en"]http://example-ru.com[/i18n]

(* хук bono_homepage_constructor:slide_link доступен с версии 1.9.9)

Чтобы разделить избранное и сравнения в разных языковых версиях, нужно добавить параметр path. Для этого надо добавить такой дополнительный код

add_filter( 'bono_scripts_settings_array', function ( $args ) {
    $locale = substr( get_locale(), 0, 2 );
    if ( $locale != 'en' ) {
        $args['cookie_path'] = "/$locale";
    }

    return $args;
} );

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

Языки задаются в коротком варианте, например, en, ru, ua, us.

Вам помог ответ?
Похожие вопросы
Как на мобильном "Меню в шапке" вывести под "Меню под шапкой"?
+8
Как вывести содержание поста (оглавление)?
+4
Как включить комментарии на страницах?
+4
Как добавить и настроить телефонные номера?
+38
Как добавить код статистики/счетчика?
+3
Как вывести блок автора на странице записи?
+3
Как в рекламные блоки вставить код php?
+3
Как добавить табу на страницу товара
+3
Как выровнять меню под шапкой по центру?
+20
Как изменить тип миниатюры на странице записи?
+2
Как поменять названия вкладок (табов)
+2
Как добавить раздел блога в Bono
+2
Как вставить Instagram запись?
+2
Как добавить рандомное количество просмотров?
+2
Как изменить цвета в блоке Конструкторе главной
+2
Как вывести соц. кнопки шаринга на странице записи?
+2
Как вывести рейтинг на странице записи?
+2
Миниатюры неправильного размера (растянутые, квадратные, обрезанные и т.д.)
+18
Как убрать поле "Сайт" из формы комментирования?
+18
Как вывести рекламу на страницах?
+14