WPML
发布日期
2026年10月21日
渠道
稳定版
测试的 WordPress 版本
7.1

更新日志

更快的保存和页面加载速度、重构的翻译仪表板、更清晰的自动翻译以及 355 项修复。

新增功能

  • 当帐户无法支付时,自动翻译不再将任务保留在进行中状态:它会暂停并提示前往计费,并在支付后恢复。
  • 翻译仪表板的内容列表已重构:它适用于拥有多种语言的站点,每篇文章只列出一次,并且其状态筛选器与列匹配。
  • 更改自定义字段的翻译首选项会作为跟踪的后台任务更新您的现有内容,并且设置中解释了每个首选项的作用。
  • 对已翻译内容的微小编辑不再丢失现有翻译,也不会作为全新的翻译进行收费。
  • 分类或标签的名称和说明仅翻译和收费一次,而不会在使用它们的每篇文章中再次收费。
  • 产品变体不会包含在“翻译所有内容”中,之前创建的空变体任务已被停用。
  • 取消已翻译内容的任务会将其恢复到以前的状态。
  • WPML 的管理后台屏幕遵循您的管理后台语言,包括从右到左的语言。
  • 评论数按语言显示,并且文章状态在原文及其翻译之间保持同步。
  • 审核模式按翻译批次保留,并且高级翻译编辑器会标记原文已更改的媒体和分类法文本。
  • 多站点:子站点的设置向导正确处理站点密钥,不会出现损坏的用户查询,并且子站点不再报告站点密钥不匹配。
  • 移除了翻译优先级,并且在站点仍有次要语言时,重置 WPML 会被阻止。
  • 站点与 wpml.org 的签到包括其设置和自动翻译运行状况;设置向导和“设置”中的一个可选复选框控制着共享您的内容统计信息和插件列表。
  • 所有 WPML 附加组件均基于与 WPML 相同的源代码构建,并与其同步发布。
  • 每个 WPML 附加组件都带有与 WPML 相同的共享库版本,因此无论哪个插件先加载,“WPML Update is Incomplete”通知都会保持已翻译状态。
  • 安全加固:对存储数据进行更严格的处理,验证请求输入,更安全的文件删除、文件名和包含路径,以及转义存储的值。
  • 当管理员角色失去 WPML 的功能时,WPML 会恢复这些功能,因此新管理员可以看到 WPML 的所有内容。
  • 设置向导的最低要求警告不再会被跳过并丢失。
  • 当因数据库问题导致将内容发送至翻译失败时,弹出窗口会显示错误详情。
  • 当 WPML 无法读取您帐户的可用字数时,它会显示清晰的状态和消息。
  • 在成功创建的任务旁边,不断失败的任务不再无限制地重试。
  • 在只有新发送才能结束的连接中断期间,横幅不再显示重试倒计时。
  • 在翻译队列中,在“状态”筛选器中勾选的状态在任务列表加载后仍保持勾选状态。
  • 翻译仪表板上的“Your automatic translation pricing has been upgraded”通知现在会显示其内容,而不再是空白。
  • 当没有活动语言使用编码 URL 时,选择“如果翻译语言使用编码 URL 则从原始语言复制”会向您发出警告。
  • 下拉式语言切换器现在可以通过键盘和点击打开,并会告知屏幕阅读器它们是否已打开。
  • 语言切换器下拉图标仅在有翻译可供选择时才会出现。
  • 当站点只有一种活动语言时,语言切换器将被关闭。
  • 自定义文章类型年度归档上的语言切换器会链接到正确的归档。
  • 在每种语言使用不同的域名的站点上,文章和页面预览会使用正确的地址。
  • 文章列表为进行中的翻译显示正确的图标。
  • 带有时间元素的内容在拆分翻译时会保持其 HTML 完整。
  • 在多个浏览器选项卡中工作不再会在区块编辑器中混淆语言。
  • 从高级翻译编辑器缓存的语言对信息不再过时,并会自动修复。
  • 将翻译连接到另一个翻译组时,不再会在报告成功的同时发生失败。
  • 层级文章类型(如页面)的管理后台列表不再对每篇文章运行翻译查询,这在限制查询大小的主机上会导致失败。
  • 类别、标签和其他术语的自动翻译更加可靠。
  • 支持工具的旧管理后台地址会指向同一个“支持”页面,而不是单独的副本。
  • 从基于字段的构建器(如 Meta Box)自动检测到的区块仅提供其文本属性以供翻译。
  • Avada:Fusion Post Cards 小工具已翻译。
  • WP User Manager:个人资料页面上的语言切换器会指向已翻译的个人资料页面,而不是通用页面。
  • 当重新连接复制或移动的站点失败时,WPML 不再清除其站点密钥,因此更新和自动翻译将继续工作。
  • 注册为 base64 编码但实际上包含纯文本的简码属性现在可以被翻译。

性能

  • 保存页面或模板(包括 Elementor 模板)不再重写未更改的翻译,因此在具有多种语言的站点上保存速度更快。
  • WooCommerce 站点上的前端页面加载更快:不再为每个产品术语重新读取 URL 规则。
  • 缓存的前端请求不再在每次页面浏览时向数据库查询 WPML 的语言表。
  • 前端请求不再写入升级进度或重新读取 WPML 的表布局。
  • 文章编辑屏幕不再在每次加载时等待翻译引擎查找,并且失败的查找不会在每个页面上重试。
  • 在拥有许多插件的站点上编辑文章不再耗尽内存。
  • 翻译管理仪表板不再在拥有许多已翻译术语的站点上超时。
  • 翻译管理仪表板在统计字数时不再耗尽内存。
  • WPML > 翻译 不再在具有持久对象缓存(如 Redis 或 WP Engine 的缓存)的站点上耗尽内存。
  • URL 解析缓存表不再无限制增长,并且保存路由设置不再计算整个表。
  • 包含长包含、排除或子列表的术语查询(如在菜单、小工具和产品筛选器中)将在一次数据库查询中被翻译。
  • 在查询外部读取的产品术语翻译在每次请求中仅查找一次。
  • 区块默认文本在区块渲染时被翻译,而不是在每次请求时针对每个已注册的区块类型进行翻译。
  • WP-CLI 命令使用更少的内存:WPML 仅在命令需要时才加载其安装程序。
  • 多站点:在站点之间切换时,当没有内容需要恢复时,不再运行恢复检查,因此网络管理后台页面再次快速加载。
  • 对于 WooCommerce 产品系列区块显示的产品,产品翻译在一次查询中查找。
  • WP Rocket 会像优化每个语言目录一样优化站点的根页面,并且不再为其记录“Empty buffer”。
  • Elementor 页面不再在每个元素上运行每个 WooCommerce 动态 ID 转换器。
  • 管理后台页面不再在每次请求时重新注册每个第三方区块的默认文本,从而节省了许多数据库查询。
  • 在某些已升级的站点上,语言目录刷新仅运行一次,而不是在每次请求时运行。
  • 保存文章不再每次都重新检查 WPML 的表,并且区块文章仅读取其字符串包一次。
  • 区块主题和 WooCommerce 商店的前端页面每页仅读取一次区块翻译、术语别名和已翻译 URL 规则,而不是每次使用时都读取。
  • WPML 缓存的无过期时间的值将被保留,而不再被视为已过期并删除。
  • 通过别名查找术语不再在请求中的每次查找时重复相同的调整。
  • WPML 不再在每次主页 URL 查找时获取完整的堆栈跟踪,并且其主页 URL 过滤器已被缓存。
  • WPML 不再在每个管理后台页面、REST 请求和 AJAX 调用上加载其电子邮件模板引擎,因此加载的文件更少。
  • 管理后台页面不再在每次加载时计算带有等待您决定的自定义字段的文章。
  • 管理后台页面不再因缓慢的 REST API 检查和数据解压错误而变慢。
  • 页面构建器:在一次请求中保存多个翻译不再重新构建每个早期的文章。
  • 文章列表不再为每一行运行翻译查询。
  • AI 翻译设置页面在加载时无需等待我们翻译系统的响应。
  • 在大型多语言网站上保存文章的速度更快。
  • 将翻译应用到具有许多自定义字段的文章速度更快。
  • 分类翻译页面不再在术语数量非常多的站点上超时。
  • 翻译仪表板每页读取可翻译内容类型一次,而不是两次。

自动翻译和翻译所有内容的修复

  • 在提高上限或月份重置后,“翻译所有内容”不再因每月支出上限而保持暂停状态。
  • 暂停的“翻译所有内容”框会显示当前的每月支出上限和本月的使用情况。
  • 早期翻译仅从原始语言复制的文本(例如未翻译的表单消息)现在会自动翻译,而不再被视为已完成,同时保留译员有意完成的副本。
  • “翻译所有内容”会应用说明中包含 HTML(如图像)的术语翻译,并且失败的术语任务会说明其原因。
  • “翻译所有内容”成本估算会排除已暂停的语言,包括唯一缺失的翻译处于已暂停语言中的项目。
  • 即使内容的早期翻译已被删除,自动翻译也会交付,并且一个失败的任务不再影响其他任务。
  • WPML 请求已完成翻译的站点会持续收集这些翻译,直到没有剩余,因此大批量的翻译会在几分钟而不是几天内到达。
  • 放弃失败的自动翻译任务会将其永久删除,并且其文本不会再次发送至自动翻译。
  • 在有许多过去批次的站点上,“翻译所有内容”的字符串传递不再变慢。
  • 被放弃或取消的失败的文章、字符串批次、字符串包或术语的自动翻译,在内容更改之前不会再次发送。
  • “Synchronize local job ids with ATE jobs”操作会拒绝模棱两可的任务映射,因此交付内容永远不会写入不相关的翻译中。
  • 在“AI 翻译”设置中切换翻译引擎时,失败的保存会报告为失败,而不是显示已保存。
  • 在“放弃任务”后,“无法完成”框不再列出每个细节均为 N/A 的任务。
  • 当另一个插件处理文章保存时,在文章屏幕打开时交付的翻译会保留其与原文的链接及其语言。
  • “翻译所有内容”不再跳过在完成该分类法期间创建的术语。
  • 当高级翻译编辑器给出关于语言映射的意外响应时,WPML 管理后台页面会继续工作。
  • “翻译所有内容”会将每个已完成的项目记录一次,并且删除语言也会将其从 Ninja Forms 和 WPForms 记录中清除。
  • “翻译所有内容”成本估算(包括设置向导中的估算)会在发送时计算文章及其术语字段、字符串、字符串包和分类法标签。
  • 自动翻译成本估算会列出其未计算的内容,因此最终使用量不会出现意外。
  • “翻译所有内容”不再卡在管理后台屏幕外部的区块小工具文本上,并且它无法发送的内容不再阻止后续文章。
  • “翻译所有内容”不再覆盖另一个请求同时记录的进度。
  • “翻译所有内容”字数统计表下方的注释解释说,在首次翻译后,编辑是免费的,您只需为添加的字数付费。
  • 一旦重新包含小工具,“翻译所有内容”会发送在排除小工具期间添加的小工具字符串包。
  • 当 WPML 无法访问站点以检查已交付的翻译时,状态框会显示检查已停止,并提供立即提取的选项。
  • 当我们的翻译系统不断拒绝站点的地址时,WPML 会显示正在重新连接并不断重试,而不会要求映射默认语言。
  • 在交付检查期间按下“立即提取翻译”会在该检查结束后立即收集翻译。
  • 当多个管理后台页面同时被要求重新连接到我们的翻译系统时,WPML 仅重新注册站点一次。
  • 在 WPML 重新连接时使用“翻译现有内容”添加的语言,一旦连接恢复,其现有内容将被翻译。
  • 在 WPML 重新连接到我们的翻译系统时,“翻译内容”按钮不再在没有解释的情况下被禁用。
  • 有翻译正在进行的站点会按预期每两分钟检查一次已完成的翻译,并且该检查不再阻塞您的浏览器。
  • 在重新连接期间,翻译仪表板的第 2 步不显示重试倒计时或“无法访问”消息,并且被挂起的“翻译所有内容”按钮会解释原因。
  • “翻译所有内容”估算将区块小工具行命名为“区块”,而不是“小工具”。
  • 设置向导的成本估算不再计算文章在已翻译成的语言中的类别,这与翻译仪表板保持一致。
  • 翻译引擎无法翻译的任务会出现在无法完成的任务列表中,并带有“重新发送”和“放弃”选项。
  • 当分类法标签的状态记录丢失时,“翻译所有内容”不再发送并收取两次费用。
  • 当 WPML 只是无法读取支持信息时,开启“翻译所有内容”不再声称不支持默认语言。
  • 在 WPML 重新连接到我们的翻译系统时,“翻译所有内容”框会保持可见的暂停状态,并解释正在发生的情况。
  • 不断应用失败的翻译会在第三次尝试后被放弃,并与“重新发送”和“放弃”一起列出;“重新发送”会启动一个新任务。
  • WPML 会识别来自我们翻译系统的“缺少语言映射”响应,并清除在那里取消的任务的错误图标。
  • 从高级翻译编辑器返回时,当翻译无法保存时,WPML 会说明原因及下一步操作。
  • 当另一个插件未能保存其中一个自动翻译时,自动翻译会继续交付,并且管理栏进度不再从零重新开始。
  • 通过 WordPress 仪表板上的帐户小工具付款后,暂停的自动翻译框会立即清除。
  • 在现收现付模式下,因待处理或付款失败而被挂起的任务会说明等待原因及如何继续。
  • 与我们翻译系统的连接中断仅在发送再次工作时结束,并且“重试”不再让重复的任务通过。
  • 发送至自动翻译后,结果仅计算实际创建的任务,并且“重试”不再每次都替换被挂起的任务。
  • 当“翻译所有内容”发送的部分内容失败时,失败的项目将被挂起并在稍后再次发送。
  • WPML 无法读取的响应(例如代理页面)不再永久阻止这些项目进行自动翻译。
  • 在 WPML 等待中断结束期间,不再拒绝来自翻译仪表板外部(如文章编辑器或文章列表)的发送请求。
  • 连接通知将帐户问题与高级翻译编辑器问题区分开来,因此一个问题不再掩盖另一个问题。
  • 新的连接中断不再立即显示“无法访问”,因为另一个请求在发送中途关闭了先前的中断。
  • 失败、被中断、目标为已暂停语言或被拒绝的字符串发送请求不再留下空的字符串批次。
  • 重新发送失败的术语任务会保留该术语,并且失败的重新发送会报告为失败。
  • 在翻译字符串时关闭“翻译所有内容”不再让它们永久处于“翻译进行中”状态。
  • 在手机宽度的屏幕上,“设置翻译所有内容”窗口会适应屏幕并且可以关闭。
  • “翻译所有内容”不再重新发送并在其首次全站传递仍在运行时对您取消的任务再次收费。
  • 因帐户字数耗尽而暂停的分类法任务会在添加字数后恢复。
  • 仪表板不再将我们翻译系统从未接受的任务计为待处理,因此没有幽灵翻译等待提取。
  • 当 WPML 无法读取自动翻译支持哪些语言时,成本估算和翻译仪表板的语言列表不再显示错误或为空。
  • “翻译所有内容”不再将没有要翻译内容的内容类型列为等待您批准。
  • 插件仅在管理后台注册的内容类型(如 WPBakery 的 Grid Builder)可以从“调整内容限制”中包含。

翻译编辑器和翻译任务的修复

  • 在高级翻译编辑器中打开时,包含多个区块的内容的现有经典翻译编辑器翻译将被保留。
  • 经典翻译编辑器在纯文本字段中显示带有视频、音频和图片元素的 HTML,因此不会丢失任何标签。
  • 在翻译编辑器中,在几个区块、简码或属性中重复的文本列在其首次出现的位置下,因此不会有区块看起来像是丢失了。
  • 完成翻译任务绝不会写入或移动非该任务本身翻译的文章。
  • 在经典翻译编辑器中,源语言为次要语言的任务不再加载默认语言页面。
  • 打开从另一个翻译(而非原文)发送的翻译任务,会保留该翻译作为其源语言。
  • 当审校员单击“保存并完成”时,在高级翻译编辑器中审核的字符串包或文章将完成并发布。
  • 重新打开已交付的产品翻译不再创建带有空字段的新任务;编辑器会等待直到翻译被收集。
  • 已交付的 XLIFF 文件中的空目标不再使任务失效:无文本单元保留源文本,并跳过错误的单元。
  • 在编辑器中打开翻译不再接管我们翻译系统仍在翻译的自动任务。
  • 接受已审核的计划文章翻译不再在其原文之前发布它。
  • 在翻译编辑器中,页面构建器简码文本仅标记其当前具有的属性。
  • 在翻译编辑器中,区块内的简码按页面顺序列出,每个重复的文本有一个条目。
  • 在翻译编辑器中,区块内带有简码的页面会在不同的名称下显示其两组文本。
  • 不会为因同时保存而删除了状态记录的翻译创建翻译任务,因此相关的 PHP 警告已消失。
  • 翻译状态记录写入失败不再返回另一个翻译的 ID。
  • 同时保存没有任务的翻译会创建一个基线任务,而不是各创建一个。
  • 在高级翻译编辑器中审核的术语翻译会再次应用到站点。
  • 下载的翻译任务存档中的文件具有 Windows 接受的名称,因此存档可以在任何地方解压。
  • 当无法创建或更新已翻译的文章时,该任务会报告为失败并说明原因,并且可以再次应用。
  • 经典翻译编辑器能够正确显示双引号属性内的双引号简码。
  • 从带有其任务 ID 的链接重新打开翻译会保留译员未保存的进度。
  • 在管理员打开已完成的翻译后,删除译员或导入 XLIFF 文件会使任务保持在正确的状态。
  • 在翻译审核页面上,语言切换器链接指向它们自己的语言,而不是正在审核的语言。

翻译管理和翻译仪表板的修复

  • 对于没有译员语言对的用户,已翻译文章的编辑链接保持在原位。
  • 当 WordPress 编辑器是被选中的翻译编辑器时,复制文章的铅笔图标会再次打开 WordPress 编辑器。
  • 当我们的翻译系统无法识别站点的新地址时,在 WordPress 编辑器中翻译的文章会再次在那里打开,并且被阻止的翻译会说明原因。
  • 编辑者可以从翻译状态列打开原文,而不会出现“不允许翻译此语言对”的错误。
  • 在页面、类别或标签的翻译存在之前,从另一种语言再次发送它们,会在“翻译作业”中显示新的源语言。
  • 在关闭自动字符串注册的情况下,返回翻译仪表板窗口不再启动字符串处理。
  • 无法在编辑器中打开的翻译会在“翻译任务”列表上方解释原因,就像文章列表一样。
  • 自动字符串注册对话框中的“取消”和“保存”不再离开翻译仪表板并进入空白页面。
  • 更改原文的语言会更新其翻译的源语言,因此它们的任务会保留在“翻译作业”列表中。
  • 任务列表不再为语言对没有目标语言的译员显示数据库错误。
  • 翻译更新电子邮件不再将字符串包任务计为具有相同 ID 的文章。
  • 当一种项目已被翻译时,“翻译内容”对于混合选择仍然可用。
  • 当任务的管理员不是用户时,任务摘要电子邮件不再显示 PHP 警告。
  • 即使先前的发送使用了“自己翻译”,翻译仪表板也会发送标记为“自动翻译”的类别。

页面构建器的修复

  • Elementor:编辑翻译会以您的管理后台语言而不是页面语言打开编辑器。
  • Elementor:当主题小工具需要当前文档或小工具在渲染时出错时,保存翻译不再失败。
  • Elementor:已翻译页面上的每个按钮都链接到其自身目标的翻译,而不是全部链接到同一页面。
  • Elementor Pro:Form 小工具的 Message 字段不再发送进行翻译,因此通知电子邮件会保留提交的数据。
  • Avada:翻译表单通知电子邮件中的重音字符不再存储为转义码。
  • WPBakery:带有自定义链接的 Single Image 在翻译中会保留其图像和链接。
  • 不是附件 ID 列表的页面构建器值在翻译时不再被重写为零。
  • Flatsome 和其他简码构建器:两个同名简码之间的文本会提供翻译并被翻译。
  • Beaver Builder:在已翻译的页面上,Pattern 模块和模式面板仅列出该语言的模式。
  • Divi 5:原始页面上的 Loop 模块保留在翻译中并列出已翻译的文章。
  • Divi:Divi 标记为未使用的 theme-builder 布局不再在翻译仪表板中提供或由“翻译所有内容”发送。
  • 在多个语言配置文件中声明的简码或区块会保留来自所有这些文件的属性和设置。
  • 在搜索和替换后,基于简码的构建器不再提供两次相同的文本,并且页面不再具有的文本会被删除。
  • 内容包含区块注释的简码构建页面会应用其经典翻译编辑器翻译。
  • 简码 ID 属性设置不再同时转换名称以相同方式结尾的其他属性。
  • 翻译简码属性不再更改具有相同文本的另一个属性。

区块和区块编辑器的修复

  • 在没有字符串翻译的情况下,已翻译的页面会保留从模式插入的区块设置,并且再次翻译会修复早期的页面。
  • 编辑区块小工具的文本会保留其替换的文本的翻译。
  • 作为代码的区块设置(例如 HTML 标签、对齐方式或动画类型)在每种语言中都会保留其值。
  • 包含 ID 列表的区块属性(例如 Gallery 图像 ID)会显示已翻译的项目。
  • 自定义 HTML 区块:包含 SVG 图像的 CSS 不再被截断,转义标记、连字符和不换行空格保持原样。
  • 已翻译的页面不再将显示为 HTML 标签的文本(在段落、标题或列表中作为文本写入)转换为真实的标记。
  • 已翻译的区块保留其自己的引用:链接副本跟随已翻译的锚点,图像区块命名已翻译的附件。
  • Beaver Builder:显示已保存的行、列、模块或模板的选项卡或手风琴项目会显示其翻译。
  • 在标记和属性中都存储链接的区块(如 GenerateBlocks 按钮)在编辑器中不再被报告为损坏。
  • 插件或主题自身的语言配置现在在激活后立即应用,因此可以立即翻译诸如 Kadence Blocks 之类的区块。
  • 区块编辑器保存使用文章的语言,而不是管理后台语言,因此 Sensei 课程会保留其模块。

语言切换器的修复

  • 语言切换器 AJAX 导航安全地仅读取 HTML 页面响应,因此其他响应永远不会加载资源或运行代码。
  • 页脚语言切换器设置窗口不再打开为空白,并且未到达的设置不再报告为已保存。
  • 语言切换器数据不再重置列表和循环中的当前文章。
  • 在每种语言使用不同的域名且 WP_HOME 根据请求构建的情况下,默认语言的切换器链接使用其自己的域名。
  • 语言切换器区块适用于没有 unfiltered_html 功能的用户:它干净地保存并保留其箭头、样式和图像大小。
  • 保存的标记缺少当前语言的语言切换器区块不再导致致命错误;它会列出其他语言。
  • 在区块编辑器中,语言切换器下拉菜单的切换按钮会将屏幕阅读器指向其语言列表。
  • 同一页面上的两个语言切换器区块不再在区块编辑器中共享子菜单 ID。
  • 自定义语言切换器设置显示其自己的样式规则,并且切换器不能再保存为空或关闭每个显示选项。
  • 语言切换器选项不再接受每个页面随后都会渲染的模板代码。
  • 在具有较新 libxml 版本的主机上,语言切换器区块能够正确渲染带重音符号和非拉丁语系的语言名称。
  • 语言切换器区块不再向管理后台语言不是英语的管理员报告无效内容。

类别、标签和其他分类法的修复

  • 交付时缺少其中一个文本(如说明)的术语翻译会为缺失部分保持打开状态,而不是完成。
  • 在两种语言中别名相同的分类法归档会显示所请求语言的术语,并且该术语会再次保存。
  • 分类法的默认术语不再在每次语言切换时被重写,并且新文章会获得其自身语言的默认术语。
  • 检查次要语言页面上是否存在某术语的插件会返回该术语,而不是其翻译。
  • 自定义分类法的默认术语不能再从另一种语言的管理后台中删除,这曾导致 WordPress 以错误的语言重新创建它。
  • 当默认类别或术语通过代码或在数据库中被删除时,WPML 会以默认语言重新创建它及其翻译。
  • 更改分类法的翻译模式会将每篇文章移动到其自身语言的术语上。
  • 通过代码从另一种语言的页面删除类别或术语,会将其文章归档在它们自己语言的默认类别下,而不会删除其他默认类别。
  • 从另一种语言的管理后台添加的语言会获得其自己的默认类别名称,例如英语的“Uncategorized”。
  • 通过 WPML 的术语 API 创建的术语翻译会保留其调用者指定的源语言。
  • 通过命名原始术语的 ID,通过 API 创建术语翻译可以正常工作并加入原文的翻译组。
  • 当原文或另一种语言共享其别名时,重新发送已翻译的类别或标签不再重命名其别名。
  • 访问分类翻译屏幕后,管理后台语言不再切换回先前浏览的语言。
  • 术语 ID 和术语分类 ID 不同的站点不再在 hreflang 链接和类别计数中获得不相关的术语。
  • 当自定义分类法的英语默认术语消失并且其翻译共享其名称时,每种语言都会保留其自己的默认术语。
  • 延迟的自动翻译交付不再覆盖手动术语翻译或清除其更新状态。

菜单的修复

  • 在具有持久对象缓存(如 Redis)的站点上,已翻译的菜单和术语翻译不再被默认语言的替换。
  • 在“菜单”中,“Translation of”占位符以管理后台语言显示,而不是西班牙语。
  • 在“外观”>“菜单”之外(通过 REST、定制器或代码)保存菜单,会保持其与其翻译的链接。
  • 在一次请求中通过代码添加的菜单项会保留其位置。
  • WP 菜单同步在其原文的翻译组内创建已翻译的菜单。
  • 当 wpml-config 文件(如在 Porto 主题中)将菜单项字段设置为复制时,WP 菜单同步不再展平已翻译的菜单。
  • 从原始菜单中删除项目也会删除其已翻译的副本。
  • 应用两次相同的 WP 菜单同步更改不再创建第二个已翻译的菜单。
  • WP 菜单同步不再将草稿翻译添加到已翻译的菜单中,因此访问者不会获得 404 链接。
  • 从原始菜单中删除父项目不再使已翻译的子项目指向已删除的项目。
  • 使用非默认管理后台语言在定制器中发布菜单更改不再重命名该语言的已翻译菜单。

链接、URL 和重定向的修复

  • 一次将文章翻译或复制为多种语言不再使用错误语言中已翻译的别名保存指向自定义文章类型的链接。
  • 在区块和经典编辑器中,使用“创建根页面”制作的页面从其首次保存起就是站点的根页面。
  • 具有相同别名的草稿或待审页面不再将另一种语言中已发布的页面发送到 404。
  • 在每种语言使用不同的域名的情况下,WPML > 设置 > URL 会再次保存,而不是在隐藏字段检查中失败。
  • 以不存在的类别结尾的类别地址(通常由爬虫请求)不再写入数据库错误。
  • 在翻译中,指向归档和其他非页面地址的链接不再被重写为 Elementor 模板。
  • 无论文章的原始语言是什么,指向别名已翻译的文章的链接都会在默认语言中正确转换。
  • 隐藏语言域名上的登录页面不再重定向到默认语言。
  • 在具有隐藏语言和已翻译登录页面的情况下,隐藏语言的登录地址始终有效。
  • 当 WPML 在页面加载期间恢复缺失的 URL 格式设置时,该页面的语言链接使用已保存的格式,而不是 ?lang= 参数。
  • 丢失其存储的语言 URL 格式的站点将继续提供语言目录并再次保存该设置。
  • 如黏性链接所存储的那样,包含指向已翻译页面纯链接的翻译链接字段,会以翻译的语言打开该页面。
  • 通过其 ?cat= 和 lang= 地址打开的类别归档会显示归档,而不是重定向到该语言的主页。
  • 转换后的页面链接(包括 ACF 链接和 URL 字段)会保留其 #anchor、查询字符串和子路径。
  • 分页地址不再使链接指向错误的文章。
  • 在旧根页面被永久删除后,新根页面会获得一种语言。
  • 术语保存后,其链接会立即更新,因此 SEO 插件可以创建重定向。
  • 转换后的锚点链接不再在 #anchor 之后带有尾部斜杠。
  • 在翻译发布后,链接不再在原始语言中停留一段时间。
  • 在每种语言使用不同的域名的站点上,指向未翻译文章的链接不再导致 404。

语言和设置向导的修复

  • 当仅剩下默认语言时,设置向导会在语言步骤恢复,而不是锁定管理后台。
  • 当保存的默认语言未处于活动状态时,设置向导的“语言”步骤不再显示为空的默认语言。
  • 在设置向导中,添加站点以前使用过的语言的国家/地区变体时,会询问是保留内容还是重新开始。
  • 不再在 WPML 目录中的语言可以作为具有其自身代码和区域设置的自定义语言添加。
  • 当早期版本将预设语言留空时,语言目录同步会填充该预设语言。
  • 在 WPML 语言目录中更正的文本方向会到达使用该语言的站点,而无需更改其语言设置。
  • 语言代码“0”不再将链接发送到默认语言;受影响的站点已修复,并报告了失败的代码更改。
  • 在 WPML 5.0 之前在 WPML 现在使用的代码(如 de-at)下创建的自定义语言,将成为该内置语言,并保留其内容。
  • 无法接管的自定义语言被标记为“需要映射”,并且在映射之前不会发送到自动翻译。
  • 一旦站点拥有 Chinese (Hong Kong),语言搜索不再提供将其添加为自定义语言的选项。
  • 语言包下载在 PHP 时间限制较低的主机上完成,会恢复而不是停滞在最后一个包。
  • 重置语言默认值不再显示 PHP 8.1 弃用通知。

注册和更新的修复

  • 通过上传从 5.1 版本更新 WPML 不再显示一次性严重错误。
  • 当管理插件(如 InfiniteWP)在更新后立即添加文章时,更新 WPML 不再发送严重错误电子邮件。
  • 对于订阅类型与任何产品均不匹配的帐户,“激活并更新”会打开,而不是因严重错误而停止。
  • “激活并更新”在每个帐户状态下都会显示注册框,包含“取消注册”和一个站点密钥字段,因此可以替换旧注册。
  • WPML 插件的插件详情不再在 WordPress 小版本发布时警告未测试的 WordPress 版本。
  • 注册的站点不再在具有持久对象缓存时显示“A New Site Key Is Required”,也不会在 wpml.org 无法访问时丢失其密钥。
  • 在站点移动到新地址并保留其翻译帐户后,WPML 会说明该站点已移动,而不是将其称为副本。
  • 多站点:“获取此站点的密钥”会命名网络的地址,因此其指向的密钥被接受。
  • 未移动的站点在向我们的翻译系统重新注册后不再显示站点复制通知。
  • 当无法访问 WPML 产品源时,“激活并更新”会保留最后已知的产品并说明失败原因,并提供“再次检查”。
  • 当 WPML 更新待处理时,WP-CLI 在列出插件时不会发出警告。
  • 切换回生产通道后,“激活并更新”会安装生产版本,并且没有内容可安装的下载会进行说明。
  • “激活并更新”中每个插件的版本说明仅显示该插件自己的说明。
  • 更新后,浏览器和 CDN 会加载 WPML 当前的脚本和样式,而不是缓存的旧脚本和样式。
  • 当 Advanced Custom Fields Multilingual 和其他配套插件的版本是 WPML 所需版本的 Beta 版时,它们会加载。
  • 站点不再每秒多次重新验证其密钥,即使在同时收到多个更新通知时也是如此。
  • 当 wpml.org 仅限流或超时时,在 wp-config.php 中定义的站点密钥会保留其注册。
  • 插件下载处理程序在验证站点密钥之前会检查请求的安全令牌。
  • 多站点:具有不同预定义站点密钥的同一网络的两个站点不再来回重新注册。
  • 设置向导不再在每次加载时重新注册 wp-config.php 中定义的站点密钥。
  • 订阅更新路由对订阅已是最新的站点响应成功,因此代理和监控器停止记录虚假拒绝。
  • 即使复制时带有尾部空格或换行符,wp-config.php 中的站点密钥也能正确存储。
  • 拥有 Blog 许可证的站点不再收到关于缺失常量的致命错误。

WooCommerce 站点的修复

  • 在装有 WooCommerce Multilingual 的站点上,WPML 不再自行回退到其设置向导并显示每种语言的文章。
  • WPML 的管理后台脚本、CMS Nav 和黏性链接不再在 WooCommerce Multilingual 设置向导上因“addLoadEvent is not defined”而失败。
  • 从产品中删除类别会更新每种语言中已翻译类别的产品计数。
  • 使用经典翻译编辑器翻译的产品在高级翻译编辑器中打开时,会保留变体、属性和自定义字段的翻译。
  • 当父产品带有两种语言的术语时,导入已翻译的可变产品不再在重复属性行上失败。
  • 当内容类型注册较晚时,WooCommerce Multilingual 不再两次重建其已翻译的帐户和结账地址。

自定义字段和 Advanced Custom Fields 的修复

  • 当插件或导入留下未命名的自定义字段行时,自定义字段翻译和自定义术语元数据翻译设置屏幕会再次打开。
  • 5.1.0 更新后未经验证即排队的后台任务已被停用;新增的可翻译自定义字段将等待您的决定。
  • 自定义术语元数据翻译设置说明,已翻译的字段是与术语一起翻译,而不是与文章一起翻译。
  • 分类法术语上嵌套的 ACF 字段(灵活内容、中继器、组)会自动在编辑器中被翻译。
  • 当在文章编辑器外部(例如使用 update_field() 或前端 ACF 表单)添加行时,设置为“复制”的中继器和灵活内容子字段现在会到达翻译中。
  • 新增的可翻译自定义字段仅将实际具有该字段的已翻译文章标记为“需要更新”。
  • 更改 ACF 字段的翻译首选项也会更新现有的术语翻译。
  • 在 Advanced Custom Fields Multilingual 2.2 迁移后,ACF 字段组标签保留其翻译。
  • 从 WPML 4.x 升级不再在 Advanced Custom Fields Multilingual 清理后恢复旧的自定义字段设置,这曾导致加载不需要的数据。
  • 在自定义字段翻译中,在搜索结果加载时选择的首选项会被保留,而不是在“数据已保存”后丢失。
  • 从外部客户端通过 REST API 保存翻译不再每次都运行完整的自定义字段同步。
  • 在 WPML 复制文章字段后写入的自定义字段仍会到达其翻译中。
  • 在分类翻译屏幕上的 ACF 链接字段中更改字词会保留已翻译的链接。
  • 在 WPML 设置中将 ACF 字段更改为“复制”、“复制一次”或“不翻译”会更新现有的翻译。

媒体和图像的修复

  • 媒体翻译:在对象缓存主机上保存翻译后,已翻译的区块编辑器页面会保留其自己的图像。
  • 完成带有媒体的翻译任务不再在每种次要语言中创建孤立的附件副本。
  • 查询次要语言中的附件会返回其翻译,或附件本身,从而修复 Enfold Color Section 背景。
  • 页面构建器通过 URL 命名的图像会显示页面语言的媒体文本。
  • 页面构建器图像(如 Divi 分区背景)在翻译编辑器中会显示正确的原文文本,并保存到正确的图像中。
  • 小工具或内容中没有可用地址的图像不再在每次页面加载时导致对象缓存错误。

文章和页面的修复

  • 在 wpml-config.xml 文件使该类型可翻译后,自定义文章类型的文章不再从管理后台列表中消失;受影响的站点会在更新时修复。
  • 从计划任务或前端表单删除、移至回收站或恢复已翻译的文章,会像在管理后台中一样应用于其翻译。
  • 保存数据库行已消失的文章不再因致命错误而停止。
  • 从回收站恢复文章会保留其翻译的状态;草稿和私有翻译不再以已发布状态恢复。
  • 当发布日期被复制到翻译时,计划文章不再在其日期发布其已移至回收站或未完成的翻译。
  • 前端请求在解析当前语言时不再因无限递归而崩溃。
  • 更新语言被禁用的文章会保留该语言,并且保存文章不再断开其另一个翻译的连接。
  • 检查与任何文章都不匹配的文章 ID 不再产生 PHP 警告。

与其他插件和主题兼容性的修复

  • 在 WPML 处于活动状态时,其他插件的管理后台页面(如 Slider Revolution 和 Avada 选项)会再次加载其脚本。
  • 当另一个插件(如 Tatsu 构建器)在插件加载时查找文章,不再在每个页面上出现严重错误。
  • 当另一个插件在 WordPress 加载时失败,站点会再次显示 WordPress 的严重错误页面,而不是空白页面。
  • 当另一个插件(如 WP All Export Pro)切换了站点语言但从未切换回来时,WPML 会恢复站点的语言。
  • 刷新对象缓存的缓存插件不再导致“Commands out of sync”数据库错误,因为 WPML 仅读取一次其页面设置。
  • 当 WPML SEO 未激活时,Yoast SEO 站点地图会在其自身的 URL 下列出每篇已翻译的文章。
  • WPML SEO 翻译每个 Rank Math 模式类型的文本值。
  • The Events Calendar:在启用“Integrate events in main blog loop”的情况下,根页面不再显示为空白。

管理后台屏幕和设置的修复

  • 被清理插件或部分恢复删除了存储的 WPML 设置的站点,会从 WPML 的保存副本中恢复它。
  • 在 WPML 完成其数据库更新时保存的设置不再丢失。
  • 故障排除:为单个 URL 重建缓存可在后台可靠地运行,并且不再丢失“重建”点击。
  • “Your automatic translation pricing has been upgraded”通知仅显示给可以管理翻译的用户。
  • 设置搜索:“主题和插件本地化”条目会滚动到“兼容性”下的“本地化选项”。
  • 旧的“主题和插件本地化”地址会指向“设置”>“兼容性”,并显示主题和插件扫描。
  • 在重置 WPML 期间运行的请求不能再重新创建 WPML 的表和设置。
  • 从网络管理后台重置 WPML 也会首先检查次要语言。
  • 删除翻译优先级不再在升级站点上写入虚假的“item deleted”记录。
  • 当 WPML 的管理后台运行状况检查失败时显示的通知会命名失败的请求。
  • 支持 > 通信日志 在“刷新服务”后保持可读状态。
  • 更改翻译引擎会在站点与 wpml.org 的每日签到中报告。
  • WPML 语言设置中的“Same as default”工具提示现在可以被翻译。
  • 在管理后台 REST 请求中,切换区域设置会按预期应用于翻译。

数据库和多站点的修复

  • 在拒绝命名锁的数据库集群(如 Percona XtraDB 严格模式)上,WPML 会切换到基于表的锁并继续工作。
  • WPML 在 MariaDB 11 上使用匹配的字符集和排序规则创建其表。
  • WPML 使用一种字符集和排序规则创建其所有表,并且通知会命名数据库拒绝创建的任何表。
  • 在拒绝命名锁的数据库上,安装程序日志的写入不会出现数据库错误。
  • 多站点:WPML 处于非活动状态或处于活动状态但未设置的网络站点,不再记录有关缺少语言表的错误。

其他修复

  • 字符串翻译不再从共享其区域设置的非活动语言写入语言的翻译文件,这曾导致字符串未被翻译。
  • 字符串翻译:来自区块默认文本(如在 WooCommerce 区块中)的已删除字符串不再恢复。
  • 导入其翻译包含内部链接的 .po 文件不再因服务器错误而失败。
  • 当 WordPress 安装在服务器的文件系统根目录时,字符串翻译会注册并导入主题和插件翻译文件。

阅读 WPML 5.2 发布公告,了解此版本背后的完整故事。

更新或下载

此更新适用于所有拥有有效订阅的 WPML 客户 — 它会在发布后 24 小时内出现在 WordPress 管理后台的插件页面上。您也可以在插件 → 安装插件 → 商业下立即检查更新。要手动下载并安装,请转到您的 wpml.org 帐户中的下载(请参阅安装说明),并请记住同时更新所有组件,不要混合使用不同版本。

需要帮助或想提供反馈?请使用我们的技术支持论坛 (在新标签页中打开)。

查看所有 WPML Multilingual CMS 版本