You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kentico Xperience表单提交后邮件模板本地化显示异常求助

Kentico Xperience表单邮件模板本地化显示解决方案

你遇到的问题是因为表单提交后存储的是本地化键(如{$Form.Participation.Virtual$}),而默认的$$value:字段名$$模板语法只会输出原始存储值,不会自动解析本地化字符串。以下是两种可行的解决方式:

方法一:在邮件模板中直接使用本地化宏解析

替换原模板中的$$value:Participation$$为Kentico的本地化宏,手动解析对应的翻译文本:

$$label:Participation$$:    {% Localization.GetString("Form.Participation.Virtual", SiteContext.CurrentSiteName) %}

如果单选按钮有多个选项,需要根据用户提交的具体值动态解析,可以结合条件宏:

$$label:Participation$$:    {% 
    var selectedValue = GetFormFieldValue("Participation");
    Localization.GetString(selectedValue, SiteContext.CurrentSiteName);
%}

这里的GetFormFieldValue("Participation")用于获取用户提交的选项对应的本地化键,再通过Localization.GetString解析成当前站点语言的文本。

方法二:自定义表单提交逻辑,提前替换本地化键

在表单提交的处理代码中(比如自定义表单组件的提交事件、全局表单提交拦截器),将提交数据中的本地化键替换为翻译后的文本,再传入邮件模板:

// 示例:在表单提交事件中处理
var formData = submission.Data;
if (formData.TryGetValue("Participation", out var value))
{
    var localizedValue = Localization.GetString(value.ToString(), SiteContext.CurrentSiteName);
    formData["Participation"] = localizedValue;
}
// 之后再使用处理后的formData生成邮件内容

这种方式适合需要统一处理多个字段本地化的场景,无需在每个邮件模板中重复写宏。

注意事项

  • 确保对应的本地化字符串已在当前站点的资源文件中配置,且站点的语言设置与用户提交时的语言一致。
  • 对于复选框这类多选项组件,需要遍历每个选中的键,逐个解析后拼接成最终文本。

内容的提问来源于stack exchange,提问作者Sylvain C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:35:29