如何使用其他语言呈现CodeEffects规则编辑器(让我们说阿拉伯语)。
我使用自定义类作为规则模型的源对象,并将其在viewbag中传递给视图,我在那里渲染规则编辑器。我没有明确地调用任何源xml或帮助xml doc。规则编辑器正在选择默认的英文版本。
@{
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文件
任何帮助都将不胜感激。
答案 0 :(得分:0)
通常,您只需使用您的语言创建自己的帮助XML版本,并在编辑器初始化期间使用编辑器的HelpXmlFile属性将其传递给服务器上的编辑器。
如果您希望在客户端上以您的语言显示字段,规则内方法和规则操作,则还需要拥有自己的Source XML版本,并使用您的语言翻译所有显示名称。您可以使用其SourceXmlFile属性将该源xml传递给编辑器。
调用editor.GetHelpXml()方法获取要翻译的Help XML的默认版本;调用editor.GetSourceXML()来获取要翻译的源对象的Source XML(当然,在调用该方法之前先将源类传递给编辑器。)
修改强>
正如我之前所说,您需要使用自己的自定义版本的Help XML,它可以设置所有静态UI元素的特定于语言的标签,例如按钮,帮助字符串等。为此,请创建一个默认实例。 RuleEditor类并调用其GetHelpXml()方法。这给你一个默认的英文xml文档的字符串。将其所有节点值转换为您的语言,保存它并使用其Help()扩展方法的重载之一将新的xml传递给编辑器。可以找到详细信息here。
我假设您还需要以您的语言显示所有属性,规则内方法和规则操作。你有两个选择:
如果您的项目仅使用一种语言,则只需使用FieldAttribute,MethodAttribute和/或ActionAttribute将其DisplayName属性设置为您的语言中的值。详细信息包括here,here和here。
如果您的项目使用多种语言,则创建RuleEditor类的实例,将其SourceType属性设置为源类的类型,并调用其GetSourceXml()方法,该方法返回表示您的XML文档的字符串源类。为项目使用的每种语言创建该doc的副本,翻译相应语言中“displayName”属性的所有值,保存这些文件并在初始化编辑器时将所需文件传递给RuleModel.Create()方法服务器。详细信息为here。