WPML

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

Как зарегистрировать тексты, вводимые пользователями

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

Вы можете выполнить этот вызов с помощью хука действия wpml_register_single_string:

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

Рассмотрим пример пользовательского виджета, который включает title, однострочное поле input и textarea. Чтобы зарегистрировать эти поля для перевода при сохранении или обновлении параметров виджета, мы используем функцию update:

Использование хука действия wpml_register_single_string
function update($new_instance, $old_instance){
    $instance = $old_instance;
    $instance['title']      = strip_tags($new_instance['title']);
    $instance['custom_input']   = strip_tags($new_instance['custom_input']);
    $instance['custom_textarea']    = $new_instance['custom_textarea'];
 
    //WPML
    /**
     * register strings for translation
     */
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - input field', $instance['custom_input'] );
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - textarea field', $instance['custom_textarea'] );
    //WPML
 
    return $instance;
}

В этом примере мы сообщаем WPML, что ему необходимо перевести тексты, вводимые пользователем для полей input и textarea. Эти тексты будут зарегистрированы в контексте строк Widgets под названиями Custom Widgetinput field и Custom Widget – textarea field соответственно.

После регистрации текстов Вы можете использовать хук действия wpml_translate_single_string для отображения переводов на фронтенде.

Как интегрировать Перевод строк с плагинами и темами оформления

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

Реализация условных вызовов

Оберните Ваши вызовы в конструкции if_function_exists(), чтобы в случае активации WPML они выполнялись, а если нет — сохранялась нормальная работа.

Обработка поздней активации WPML

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

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

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

Код должен сначала проверить, существует ли функция wpml_register_single_string. Если да, то эта функция должна быть вызвана для регистрации всех текстов, вводимых пользователем. Вот как это работает:

  • Если функция вызывается с пустыми значениями или значениями NULL, WPML игнорирует эти вызовы.
  • Если строка уже существует и не изменена, WPML игнорирует вызов.
  • Функция выполняет действие только в том случае, если регистрируются новые или измененные строки.

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

Дополнительные ресурсы

Чтобы зарегистрировать для перевода жестко закодированные тексты из тем оформления и плагинов, ознакомьтесь с нашей статьей о поиске строк, которые не появляются на странице Перевод строк.

Чтобы зарегистрировать для перевода параметры темы оформления или плагина, ознакомьтесь с нашим руководством по использованию файла языковой конфигурации.

Чтобы перевести элементы темы оформления или плагина как группу, см. наш раздел Перевод пакетов строк.

Автор: Amir · Последнее обновление: 7 июня 2024