多语言代码效果规则编辑器

multilingual codeeffects rule editor

如何以不同的语言(比如阿拉伯语)呈现 CodeEffects 规则编辑器。

我正在使用自定义 class 作为规则模型的源对象,并将其在 viewbag 中传递给视图,我正在使用它呈现规则编辑器。我没有明确调用任何来源 xml 或帮助 xml 文档。规则编辑器正在选择默认的英文版本。

@{ 
Html.CodeEffects().RuleEditor() 
.Id("ruleEditor") 
.SaveAction("SaveGroup", "Campaign") 
.DeleteAction("DeleteGroup", "Campaign") 
.LoadAction("LoadGroup", "Campaign") 
.Mode(RuleType.Evaluation) 
.ToolBarRules(ViewBag.ToolBarRules) 
.Rule(ViewBag.Rule)
.Render(); 
}

到目前为止,我在 CodeEffects 官方文档中遇到过这个 Help XML and Multilingual Support in Code Effects 但我无法正确理解它

如何使用 razor 语法从 cshtml 页面加载自定义帮助 xml 和源 xml 文件

如有任何帮助,我们将不胜感激。

一般来说,您只需用您的语言创建自己的帮助版本 XML,然后在编辑器初始化期间使用编辑器的 HelpXmlFile 属性 将其传递给服务器上的编辑器。

如果您希望字段、in-rule 方法和规则操作以您的语言显示,您还需要拥有自己版本的源 XML,所有显示名称都翻译成您的语言在客户端上。您可以使用其 SourceXmlFile 属性.

将该源 xml 传递给编辑器

调用editor.GetHelpXml()方法获取待翻译帮助XML的默认版本;调用 editor.GetSourceXML() 获取要翻译的源对象的 Source XML(当然,在调用该方法之前,先将源 class 传递给编辑器。)

编辑:

正如我之前所说,您需要使用您自己的自定义版本的帮助 XML,它设置所有静态 UI 元素的 language-specific 标签,例如按钮、帮助字符串、等等。为此,创建 RuleEditor class 的默认实例并调用其 GetHelpXml() 方法。这为您提供了默认英文 xml 文档的字符串。将其所有节点值翻译成您的语言,保存并使用其 Help() 扩展方法的重载之一将新的 xml 传递给编辑器。详情可见here.

我假设您还需要以您的语言显示所有属性、in-rule 方法和规则操作。您在这里有两个选择:

  1. 如果您的项目只使用一种语言,那么只需使用 FieldAttribute、MethodAttribute and/or ActionAttribute 将它们的 DisplayName 属性设置为您的语言的值。详情为 here, here, and here.

  2. 如果您的项目使用多种语言,则创建 RuleEditor 的实例 class,将其 SourceType 属性 设置为您的源类型 class 并调用它的 GetSourceXml() 方法 returns XML 文档的一个字符串代表你的来源 class。为项目使用的每种语言创建该文档的副本,将 "displayName" 属性的所有值翻译成相应的语言,保存这些文件并将所需的文件传递给 RuleModel.Create() 方法在服务器上初始化编辑器。详情为 here.