Contact Form 7 多语言配置指南
Contact Form 7 是 WordPress 生态中应用最广的表单构建插件之一,但若站点涉及多语言版本,如何让表单内容正确呈现多语言形态,需要与 WPML 多语言插件配合使用。以下详细介绍从前期准备到各组件翻译的完整流程。
前期准备与表单创建
在开始翻译之前,所有表单内容都应在源语言中完整构建,包括:表单标签定义、Mail 和 Mail (2) 邮件模板、Messages 标签页的全部消息文本,以及 Additional Settings 附加设置。 如果后续对表单进行了修改,需要重新发送进行翻译。
WPML 翻译方式选择
自动翻译模式:开启 "Translate Everything Automatically" 后,WPML 会自动识别新创建或更新的表单,与其他站点内容一起在后台完成翻译,无需手动干预。 手动翻译模式(适用于 "Translate Some: You Choose What to Translate" 设置的站点):需要通过 WPML Translations Dashboard 操作,具体步骤为:展开 Contact Forms 部分,勾选待翻译表单,选择翻译方式(PTC 推荐、或指定人工译者、或自行翻译),点击 Translate 按钮。 表单模板、邮件模板和消息文本会作为关联行出现在高级翻译编辑器中,译者可以完整把握上下文。
短代码在多语言页面中的使用
Contact Form 7 通过 [contact-form-7 id="123" title="My Form"] 这样的短代码嵌入到页面或文章中。 多语言站点的正确做法是:在所有语言版本的页面中使用相同的短代码,而非为每种语言创建独立表单。 具体流程如下:
- 在源语言中完成表单构建并发送翻译
- 将短代码插入源语言页面
- 通过 WPML Translations Dashboard 翻译页面本身,短代码会自动保留到翻译版本
- 访客访问翻译版本页面时,WPML Multilingual for CF7 会自动提供对应语言版本的表单
这种 ID 绑定机制从 1.1.0 版本(2021 年 6 月)开始支持,短代码基于表单 ID 或标题均可正确解析到对应语言版本。 例外情况:如果不同语言版本确实需要结构不同的表单(例如表单标签、邮件模板、消息内容完全不同),可以为每种语言单独创建 Contact Form 7 表单,并在对应语言版本的页面中插入各自的短代码。这是唯一需要让短代码在语言间产生差异的场景。 页面构建器注意事项:若页面使用 Divi、Elementor 等页面构建器的文本模块包裹短代码,翻译过程中短代码可能丢失。若翻译后页面仍显示源语言表单,应在页面构建器中打开翻译版本页面,重新插入短代码。使用原生 WordPress 块编辑器或经典编辑器则无此问题。
表单标签与访客可见文本的翻译
表单中访客可直接看到的文本都需要翻译,包括:标签文字、提交按钮标签(如 [submit "Send"] 中的 "Send")、占位符提示文字,以及 checkbox、radio、select 等标签的选项值。 需要注意的是,表单标签的类型和名称本身不需要翻译,这些是系统标识符。例如 [select your-country "China" "India" "San Marino"] 中,your-country 是标签名、select 是类型,两者保持不变,只需翻译选项值本身。
管道语法的妙用
管道语法允许将访客看到的文本与实际提交值分离:[select your-country "Chinese|CN" "Indian|IN" "Sammarinese|SM"] 翻译时只改动冒号前的显示文本,冒号后的提交值保持不变。法文访客看到的是 "Chinois"、"Indien"、"Sammarinais",但表单提交时后台收到依然是 CN、IN、SM。 这一机制在需要保持数据一致性的场景下非常实用,例如 CRM 数据对接、支付 SKU 映射、地理位置编码等。
Acceptance 与 Quiz 标签
Acceptance 标签:常用于隐私政策和条款同意,内含链接。翻译时应将链接目标指向对应语言版本的隐私政策和条款页面,而非简单复制源语言链接。 Quiz 标签:问题和答案都需要翻译。建议对答案使用管道语法,确保各语言版本的正确答案判定逻辑一致。格式示例:[quiz captcha "1+1=?|2" "2+3=?|5"]
消息文本的完整翻译
Messages 标签页包含约 16 条验证提示文本,每一条都需要在翻译任务中完整呈现:
- Thank you for your message. It has been sent.
- One or more fields have an error. Please check and try again.
- There was an error trying to send your message. Please try again later.
- This field is required.
- This e-mail address is invalid.
- The telephone number is invalid.
- The URL is invalid.
- The number is smaller than the minimum allowed.
- The number is larger than the maximum allowed.
- The date format is incorrect.
- The file is too big.
- The file is not supported.
- The Acceptance checkbox is required.
- The answer to the quiz is incorrect.
以及其他 Contact Form 7 默认的消息文本。 如果 Messages 文本中使用了邮件标签进行动态内容插入(如 Thanks [your-name], your message has been sent!),翻译后邮件标签依然能正确解析。 Contact Form 7 提供两套独立的邮件模板:Mail(管理员通知)和 Mail(2)(访客自动回复)。这两个模板在 WPML 中的翻译流程相互独立,包含收件人、发件人、主题、附加头信息、正文和附件等全部字段。通过正确配置,邮件标签(如 [your-name]、[your-message]、[your-email])在翻译后仍能正确解析为访客提交的实际内容。 对于访客自动回复邮件(Mail 2)而言,翻译配置的准确性尤为重要——这条消息会直接送达访客的收件箱。建议在完成翻译后,从已切换语言的页面提交一次测试表单,验证自动回复邮件是否以正确的语言送达。
邮件模板翻译要点
Contact Form 7 的两套邮件模板通过 WPML Translation Editor 独立管理。管理员通知邮件和访客自动回复邮件各自拥有独立的翻译任务,修改其中一项不会影响另一项。
- 收件人 / 发件人信息:确保邮箱地址和显示名称已完成翻译
- 邮件主题:独立翻译,保持语义一致
- 邮件正文:邮件标签在翻译后会正确解析,但前提是表单中对应的字段名称必须与标签一致
- 附件设置:文件上传字段的附件路径在翻译任务中可见
翻译完成后,建议在每种语言的前端页面分别提交测试数据,检查管理员收到的通知和访客收到的自动回复是否语言正确、内容完整。
提交数据集成
Contact Form 7 与多个常用插件的集成可保留访客提交时的语言设置,前提是这些插件已在 WPML 中完成翻译配置。
Flamingo
Contact Form 7 作者开发的提交记录管理插件。访客的表单提交会进入 Contact > Inbound Messages 管理界面,已翻译的主题和正文内容完整保留,不受语言切换影响。
Constant Contact
Contact Form 7 官方邮件营销集成。访客在表单中填写的信息会以访客提交时的语言流转到 Constant Contact 联系人列表,适用于多语言营销场景。
Stripe
使用 Contact Form 7 的 [stripe] 表单标签字段时,Stripe 相关的表单字段和收据消息文本均出现在 WPML 翻译任务中,可实现支付流程的多语言覆盖。
Akismet 与 reCAPTCHA
Akismet 反垃圾插件的消息提示和 reCAPTCHA 验证失败的错误提示均通过 WPML String Translation 管理,不在表单翻译任务中处理。确认这两个插件的语言包已正确加载后,对应的错误信息即可在各语言页面正常显示。
常见问题排查
隐私政策链接指向错误语言
表单中的「已阅读并同意隐私政策」复选框包含指向隐私页面链接时,链接目标可能仍指向默认语言版本。在 WPML Advanced Translation Editor 中编辑该 Acceptance 字段的翻译,逐个设置每种语言对应的隐私政策页面链接。
短代码哈希不匹配(CF7 6.0+)
此问题已在 WPML Multilingual for CF7 1.3.2(2024 年 11 月)中修复。若在 Contact Form 7 6.0 及以上版本遇到此报错,请将 WPML 相关组件升级至最新版本。
Messages 标签页翻译不生效
Messages 标签页的表单提示文字(如验证失败提示、提交成功提示)不通过表单翻译任务管理,而需在 WPML String Translation 界面手动翻译。确保 WPML String Translation 插件已激活,并在编辑 Messages 标签页后重新发送表单进行翻译。
邮件标签解析为空
邮件标签(如 [your-name])在翻译后显示为空,通常是因为表单中实际字段的标签名称与翻译中使用的标签名称不匹配。检查表单编辑页面中各字段的 Name 属性,确保翻译正文中引用的标签名称与表单中的 Name 属性完全一致。翻译本身不会破坏标签解析功能,但在翻译完成后修改表单字段名称会导致已翻译的内容失效。


评论0 注意:评论区不审核也不处理售后问题!如有售后问题请前往用户中心提交工单以详细说明!