WPML
状态
等待作者
类型
Bug
报告对象
Complianz | GDPR/CCPA Cookie Consent 7.5.0
主题标签
Compatibility

问题概述

当您在默认语言不是英语的站点上使用 Complianz | GDPR/CCPA Cookie Consent 时,一些插件字符串会在 WPML → 字符串翻译 中注册,并将英语作为源语言。

Complianz 会在 WordPress 翻译后注册其部分 cookie 横幅字符串。在西班牙语站点上,默认字符串 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 文件。它在 cmplz_register_translation() 函数中注册文档标题、URL 和设置。
  • 找到第 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
  • 选择字符串的真实语言(例如西班牙语),然后应用更改。
  • 将字符串翻译为您的次要语言。

所有已知问题 →