Узнайте, как зарегистрировать пользовательский контент конструктора страниц для перевода с помощью файла wpml-config.xml. Вы можете регистрировать строки, медиафайлы, виджеты конструктора страниц, ID шорткодов и многое другое.
Это руководство предназначено для разработчиков, которые создают темы оформления и плагины или добавляют на свой сайт пользовательский код конструктора страниц.
Если Вы используете сторонний конструктор страниц и не можете перевести пользовательские виджеты на своем сайте, обратитесь в службу поддержки WPML.
Нужно сгенерировать файл wpml-config.xml? Ознакомьтесь с нашим пошаговым руководством по автоматическому созданию файла конфигурации с помощью плагина Multilingual Tools.
Перевод строк
Рассмотрим пример, в котором на страницу с помощью Visual Composer добавлен текстовый разделитель. У этого разделителя есть заголовок, а его шорткод выглядит следующим образом:
[vc_text_separator title="Separator Title"]
Чтобы перевести заголовок этого текстового разделителя, Вам нужно добавить несколько строк в файл wpml-config.xml. Таким образом, WPML «узнает», что заголовок этого разделителя нуждается в переводе.
Следующий код — это пример того, что Вам нужно добавить в файл wpml-config.xml в этом случае.
Пример добавления шорткода конструктора страниц в файл wpml-config.xml
<wpml-config>
<shortcodes>
<shortcode>
<tag>vc_text_separator</tag>
<attributes>
<attribute>title</attribute>
</attributes>
</shortcode>
</shortcodes>
</wpml-config>Давайте разберем структуру приведенного выше примера:
- Начните с тега shortcodes. Любые шорткоды на Вашем сайте, которые нужно перевести, должны быть помещены внутри этого тега.
- Используйте тег shortcode, чтобы обернуть все теги, относящиеся к одному шорткоду.
- Используйте тег tag, чтобы определить имя шорткода. В данном случае это vc_text_separator. При желании Вы можете добавить к тегам необязательные пользовательские метки. Эти метки будут отображаться рядом с текстом как в Расширенном редакторе переводов, так и в Классическом редакторе переводов. Экспортированные файлы XLIFF также включают эти метки. Ниже приведен пример того, как добавлять метки к тегам и атрибутам.
- Шорткоды могут иметь один или несколько атрибутов, поэтому их нужно обернуть в тег attributes (во множественном числе) и использовать тег attribute (в единственном числе) для определения заголовка каждого атрибута.
Конструкторы страниц (иногда) включают элементы дизайна, имеющие атрибуты ссылок.
Вы можете сделать так, чтобы внутренние ссылки автоматически указывали на переведенную версию этой записи, используя параметр ссылки: type="link".
С ним можно использовать атрибут encoding. Он обрабатывает специальную кодировку, которую используют различные конструкторы страниц. Атрибут кодировки обычно зависит от используемого конструктора страниц. Он принимает следующие значения:
- base64 — шорткод необработанного HTML в Visual Composer. Шорткод хранит HTML в виде строки base64.
- vc_link — специальное форматирование ссылок для Visual Composer.
- vc_values — специальная кодировка Visual Composer для значений в виджетах индикатора выполнения (progress-bar), круговой (pie-chart) и линейной (line-chart) диаграмм.
- av_link — специальное форматирование ссылок для Enfold.
- allow_html_tags — обычно HTML-теги удаляются из атрибутов шорткода. Установите для кодировки значение allow_html_tags, если атрибут шорткода должен разрешать HTML-теги. Используйте это с осторожностью, так как разрешение HTML-тегов в некоторых ситуациях может нарушить форматирование и создать проблемы с безопасностью.
Пример добавления атрибута ссылки шорткода: type="link"
<wpml-config>
<shortcodes>
<shortcode>
<tag>av_button</tag>
<attributes>
<attribute>label</attribute>
<attribute type="link" encoding="av_link">link</attribute>
</attributes>
</shortcode>
</shortcodes>
</wpml-config>Если Вы планируете использовать шорткоды urlencoded, обязательно прочитайте страницу о переводе шорткодов urlencoded.
Пример добавления меток тегов и атрибутов
<wpml-config>
<shortcodes>
<shortcode>
<tag label="My shortcode label">my_shortcode</tag>
<attributes>
<attribute label="Shortcode title">title</attribute>
</attributes>
</shortcode>
</shortcodes>
</wpml-config>Добавление меток к тегам и атрибутам позволяет отображать пользовательские метки в Расширенном редакторе переводов или Классическом редакторе переводов. Это может помочь переводчику лучше понять контекст строки.
Группировка полей для лучшей организации
Чтобы улучшить ясность и организацию Вашей XML-конфигурации, Вы можете добавлять префикс с именем группы к меткам полей. Рассмотрим этот пример кнопки призыва к действию (CTA):
<wpml-config>
<shortcodes>
<shortcode>
<tag label="Call To Action: Content">et_pb_cta</tag>
<attributes>
<attribute label="Call To Action: Title">title</attribute>
<attribute label="Call To Action: Button Text">button_text</attribute>
<attribute label="Call To Action: Button URL" type="link">button_url</attribute>
</attributes>
</shortcode>
</shortcodes>
</wpml-config>
Здесь каждый атрибут шорткода et_pb_cta содержит метку Call To Action: . WPML не передает эти метки в Расширенный редакторе переводов: переводчик видит каждый атрибут как отдельное поле, сгруппированное под шорткодом, и различает поля по тексту, который содержит каждое из них. Атрибут label по-прежнему является частью формата конфигурации, и его все равно стоит задавать:

Перевод медиафайлов
Вы можете использовать Перевод медиафайлов WPML, чтобы использовать разные изображения для разных языков в контенте конструктора страниц. Это делается путем преобразования ID изображений и URL-адресов изображений. Вы должны «сообщить» конструктору страниц, использующему шорткоды, как выполнять это преобразование. Следующий код — это пример того, что Вам нужно добавить в файл wpml-config.xml в этом случае.
Пример добавления шорткода конструктора страниц в файл wpml-config.xml для перевода изображений
<wpml-config>
<shortcodes>
<shortcode>
<!-- Convert media IDs in `gallery_ids` attribute, and ignore the shortcode content -->
<tag ignore-content="1">et_pb_gallery</tag>
<attributes>
<attribute type="media-ids">gallery_ids</attribute>
<attributes>
</shortcode>
<shortcode>
<!-- Convert the media URL in the content, translate some string attributes for `title` and `alt`, convert media URL in `src` attribute -->
<tag type="media-url">et_pb_image</tag>
<attributes>
<attribute>title_text</attribute>
<attribute>alt</attribute>
<attribute type="media-url">src</attribute>
</attributes>
</shortcode>
</shortcodes>
</wpml-config>Вы можете использовать следующие значения:
- ignore-content — Вы можете использовать его внутри элемента tag. Это значение является необязательным и может быть равно 0 или 1. Вы можете использовать этот атрибут для обеспечения обратной совместимости новых шорткодов медиафайлов. Если установлено значение 1, содержимое шорткода обрабатываться не будет.
- type — Вы можете использовать его внутри элемента tag. Вы также можете использовать содержимое шорткода, содержащее URL-адрес медиафайла, в качестве необязательного значения внутри media-url.
- type — Вы также можете использовать его внутри элемента attribute. В этом случае он может иметь одно из следующих необязательных значений:
- media-ids — список ID медиафайлов, разделенных запятыми.
- media-url — URL-адрес медиафайла.
- link — указывает на другую страницу сайта, и WPML автоматически преобразует ее в URL-адрес переведенной страницы.
Перевод медиафайлов в атрибутах блоков
Вы также можете использовать типы атрибутов media-url и media-ids с блоками Gutenberg для перевода таких медиафайлов, как фоновые изображения. Это работает аналогично шорткодам, но использует элемент <gutenberg-block> с вложенными элементами <key> для определения type="media-url" и type="media-ids".
Использование этого элемента позволяет нашему дополнению Перевод медиафайлов WPML переводить фоновые изображения.
Это работает как для блоков Gutenberg, так и для Divi 5. Эта версия Divi использует блоки для хранения контента, поэтому элемент <gutenberg-block> подходит для добавления перевода медиафайлов.
Вот пример добавления перевода медиафайлов для атрибутов блока Gutenberg:
<wpml-config>
<gutenberg-blocks>
<gutenberg-block type="divi/section" translate="1">
<key name="module">
<key name="decoration">
<key name="background">
<key name="desktop">
<key name="value">
<key name="image">
<key name="url" type="media-url" />
</key>
</key>
</key>
</key>
</key>
</key>
</gutenberg-block>
</gutenberg-blocks>
</wpml-config>
Перевод виджетов конструктора страниц
WPML позволяет регистрировать виджеты конструктора страниц в Вашем файле языковой конфигурации. Для получения подробной информации см. нашу страницу документации о том, как зарегистрировать виджеты конструктора страниц для перевода.
Автоматическое преобразование ID шорткодов
Начиная с WPML 4.5.9, Вы можете объявлять ID записей или терминов таксономии, расположенных в атрибутах шорткодов. Затем эти ID могут быть автоматически преобразованы на фронтенде Вашего сайта.
Начиная с WPML 4.8, эта же логика распространяется на ID объектов, хранящиеся в текстах администратора, а также на ID в произвольных полях записей и полях терминов произвольных таксономий.
Например, рассмотрим следующий шорткод:
[foo_product_list product_ids="12,34,56"]
Вы можете объявить, что атрибут product_ids содержит ID записей с помощью следующей конфигурации:
Объявление о том, что атрибут product_ids содержит ID записей
<shortcode>
<tag ignore-content="1">foo_product_list</tag>
<attributes>
<attribute type="post-ids" sub-type="product">product_ids</attribute>
</attributes>
</shortcode>На фронтенде шорткод автоматически преобразуется в:
[foo_product_list product_ids="13,35,57"]
Вы можете использовать следующие атрибуты конфигурации:
- type — post-ids или taxonomy-ids
- sub-type (необязательно) — конкретная сущность для type, если она уже известна. Например, product для произвольного типа записи Товар, поступающего из WooCommerce. Если он не определен, конкретная сущность будет угадана.
Преобразование ID универсально и пытается адаптироваться к большинству возможных форматов ID (один ID, список ID, сериализованный массив, массив в кодировке JSON).
Имена атрибутов с подстановочным знаком
Некоторые шорткоды хранят ID во многих атрибутах с похожими именами, например, include_category, include_portfolio_category и include_product_cat. Одна строка <attribute> может охватить их все. Поместите * в имя атрибута:
Объявление всех атрибутов include_ и exclude_ как содержащих ID таксономий
<shortcode>
<tag>fusion_post_cards</tag>
<attributes>
<attribute type="taxonomy-ids" exclude="include_product_skus">include_*</attribute>
<attribute type="taxonomy-ids" exclude="exclude_product_skus">exclude_*</attribute>
</attributes>
</shortcode>- * соответствует одной или нескольким буквам, цифрам, _ или -.
- * работает только с type="post-ids" и type="taxonomy-ids".
- WPML точно сопоставляет остальную часть имени. WPML не принимает регулярные выражения в именах атрибутов.
- exclude (необязательно) — список полных имен атрибутов, разделенных запятыми. WPML не преобразует ID в этих атрибутах. Используйте его для атрибутов, которые соответствуют имени, но не содержат ID, таких как include_product_skus.
Дополнительные ресурсы
Чтобы узнать больше о файле wpml-config.xml, ознакомьтесь с руководством Файлы языковой конфигурации.
Для настройки других элементов с помощью файла wpml-config.xml ознакомьтесь с нашими дополнительными руководствами:
- Регистрация пользовательских виджетов конструктора страниц для перевода
- Перевод пользовательских шорткодов с помощью WPML
- Настройка параметров перевода для произвольных полей с помощью файла конфигурации WPML
- Регистрация пользовательских терминов, типов и таксономий как переводимых
- Как сделать пользовательские блоки Gutenberg переводимыми
- Перевод текстов, которые темы и плагины сохраняют в wp_options
- Настройка переключателя языков WPML с помощью файла конфигурации WPML