- Статус
- Ожидает автора
- Тип
- Ошибка
- Заявлено для
- Complianz | GDPR/CCPA Cookie Consent 7.5.0
- Связанный плагин/тема
- Complianz | GDPR/CCPA Cookie Consent
- Теги темы
- Compatibility
Обзор проблемы
Когда Вы используете Complianz | GDPR/CCPA Cookie Consent на сайте, язык по умолчанию которого не английский, некоторые строки плагина регистрируются в WPML → Перевод строк с английским в качестве исходного языка.
Complianz регистрирует некоторые строки своего баннера cookie после того, как WordPress их переводит. На испанском сайте строка по умолчанию Accept сохраняется как Aceptar, и Complianz регистрирует Aceptar без исходного языка. Затем WPML обрабатывает эту строку как английскую.
Это затрагивает строки баннера cookie и строки, которые Complianz регистрирует с помощью собственной вспомогательной функции cmplz_register_translation(). База данных cookie плагина не затрагивается, поскольку этот код регистрирует английские значения.
Обходное решение
Сделайте полную резервную копию Вашего сайта, прежде чем продолжить.
Первая часть изменяет код плагина, чтобы Complianz регистрировал свои строки с языком сайта. Номера строк приведены для версии Complianz 7.5.5. Вносите это изменение заново после каждого обновления Complianz, пока в плагин не будет добавлено исправление.
- Откройте файл …/wp-content/plugins/complianz-gdpr/cookiebanner/class-cookiebanner.php.
- Найдите строки 491 и 494.
- Замените:
icl_register_string( 'complianz', $fieldname . $key, $string ); do_action( 'wpml_register_single_string', 'complianz', $fieldname, $string ); - На:
$lang = apply_filters( 'wpml_default_language', null ); icl_register_string( 'complianz', $fieldname . $key, $string, false, $lang ); do_action( 'wpml_register_single_string', 'complianz', $fieldname . $key, $string, false, $lang ); - Откройте файл …/wp-content/plugins/complianz-gdpr/functions.php. Он регистрирует заголовки документов, URL-адреса и настройки в функции cmplz_register_translation().
- Найдите строки 2255 и 2258.
- Замените:
icl_register_string( 'complianz', $fieldname, $string ); do_action( 'wpml_register_single_string', 'complianz', $fieldname, $string ); - На:
$lang = apply_filters( 'wpml_default_language', null ); icl_register_string( 'complianz', $fieldname, $string, false, $lang ); do_action( 'wpml_register_single_string', 'complianz', $fieldname, $string, false, $lang ); - Снова сохраните баннер в Complianz → Cookie banner, чтобы плагин зарегистрировал строки с языком сайта.
Изменение кода помогает только для новых строк. Строки, которые Complianz уже зарегистрировал, сохраняют английский в качестве исходного языка, поэтому исправьте их вручную:
- Перейдите в WPML → Перевод строк.
- В Select strings within domain выберите домен complianz.
- Выберите строки, в которых указан неправильный язык.
- Откройте Change the language of selected strings внизу страницы.
- Выберите настоящий язык строк, например испанский, и примените изменение.
- Переведите строки на Ваши дополнительные языки.