Если ваши виджеты содержат переводимые строки, вы сможете редактировать перевод при помощи WPML, но он не обязательно отобразится на сайте.

Способ 1) Использование фильтров WordPress

WPML использует стандартные фильтры WordPress и переводит отфильтрованный вами контент.

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

Например, чтобы применить фильтры к заголовку виджета, воспользуйтесь следующим:

$wtitle = apply_filters('widget_title', $wtitle);

WPML подключится к вызову apply_filters и сделает эту строку переводимой через страницу Перевод строк.

Способ 2) Регистрирование строк вручную

Как вариант, можно использовать функции перевода строк WPML вручную. Вы можете зарегистрировать строки для перевода и затем просматривать их перевод.

Чтобы зарегистрировать строки, используйте вызов icl_register_string:

icl_register_string($context, $name, $value)
    • $context – имя плагина в понятном для человека формате
    • $name – имя строки, которое помогает пользователю (или переводчику) понять, что переводится.
    • $value – строка, которую необходимо перевести.

Затем, когда вы показываете тексты, используйте icl_t, чтобы они отображались с переводом:

icl_t($context, $name, $value)

Способ 3) Использование GetText для жестко закодированных строк

Оба описанные выше способа лучше всего подходят для динамически созданных текстов. Пользователи могут их редактировать через консоль администратора WordPress.

Если у вас статические тексты, жестко закодированные в PHP, просто используйте вызовы GetText вида:

<?php __('Hello world','cool_theme'); ?>

WPML привязывается к вызовам GetText и делает эти тексты переводимыми через интерфейс перевод строк. Обратите внимание, что этот способ подходит только для зафиксированных в теме текстов, которые нельзя редактировать.