如何定义kendo网格可过滤运算符但继续使用其默认字符串

时间:2017-10-09 23:36:55

标签: kendo-ui kendo-grid

我有以下情况,一个剑道网格,我想选择哪些过滤器运算符,这很好用:

var filters_op = {
  operators: {
    string: {
      eq: "Is equal to",
      neq: "Is not equal to",
      contains: "Contains"
    }
  }
}

element.kendoGrid({
  dataSource: dataSource,
  filterable: filters_op,
  columns: ...
  ...
});

然而,我的应用程序是多语言的,之前我有属性filterable: true(或错误),供应商kendo global完成翻译工作并带来自己的可过滤操作符。

另一方面,来自Kendo Global的默认操作符包含一些过滤器,如“开始于”,“之后是”,“等于或等于”......我的应用程序尚不支持,以及何时我覆盖它们,我失去了K.Global的翻译支持

是否可以同时选择我想要的和K.Glbl的翻译?

1 个答案:

答案 0 :(得分:2)

您无法选择在kendo global功能的filterable参数中翻译哪个kendoGrid运算符。剑道不允许这样做。

但是,您可以自己(或第三方库)翻译运算符,并在filters_op上提供。这将覆盖kendo默认filters并翻译它们。

我建议您使用i18nI18n.t翻译方法来执行此操作。您的代码将如下所示,例如:

var filtersOp = {
  operators: {
    string: {
      eq: I18n.t('kendo.grid.filterable.operators.string.eq'),
      neq: I18n.t('kendo.grid.filterable.operators.string.neq'),
      contains: I18n.t('kendo.grid.filterable.operators.string.contains')
    },
    date: {
      eq: I18n.t('kendo.grid.filterable.operators.date.eq'),
      neq: I18n.t('kendo.grid.filterable.operators.date.neq')
    },
    enums: {
      eq: I18n.t('kendo.grid.filterable.operators.enums.eq'),
      neq: I18n.t('kendo.grid.filterable.operators.enums.neq')
    }
  }
}

...

element.kendoGrid({
   ...
   filterable: filtersOp,
   columns: ...
   ...
})

如您所见,I18n库将处理此转换过程。