25

Kendo UI 不附带本地化包。您只能选择一个只设置数字和日期格式的文化文件,而不是小部件中显示的实际文本(例如:寻呼机文本 - 每页项目、下一页等,过滤器菜单(等于等),网格部分(在此处拖动一列......)等)

要本地化一个小部件,必须在每个小部件的单独选项中传递一组消息,以覆盖 Kendo UI 默认使用的消息。像这样的东西:

 filterable: {
        messages: {
            info: "Título:", // sets the text on top of the filter menu
            filter: "Filtrar", // sets the text for the "Filter" button
            clear: "Limpar", // sets the text for the "Clear" button

            // when filtering boolean numbers
            isTrue: "é verdadeiro", // sets the text for "isTrue" radio button
            isFalse: "é falso", // sets the text for "isFalse" radio button

            //changes the text of the "And" and "Or" of the filter menu
            and: "E",
            or: "Ou"
        },
        operators: {
            //filter menu for "string" type columns
            string: {
                eq: "Igual a",
                neq: "Diferente de",
                startswith: "Começa com",
                contains: "Contém",
                endswith: "Termina em"
            },
            //filter menu for "number" type columns
            number: {
                eq: "Igual a",
                neq: "Diferente de",
                gte: "Maior que ou igual a",
                gt: "Mair que",
                lte: "Menor que ou igual a",
                lt: "Menor que"
            },
            //filter menu for "date" type columns
            date: {
                eq: "Igual a",
                neq: "Diferente de",
                gte: "Maior que ou igual a",
                gt: "Mair que",
                lte: "Menor que ou igual a",
                lt: "Menor que"
            }
        }
    },
  groupable: {
    messages: {
      empty: "Arraste colunas aqui para agrupar pelas mesmas"
    }
  }

当然,您可以在单个 JavaScript 变量中共享此选项,但是您将面临一个意想不到的问题:如果您将所有小部件的所有选项的消息收集在单个选项变量中,它将为所有网格打开所有这些选项。如果您想要一个没有分组的网格,则必须有一个单独的本地化选项变量而没有分组,否则,即使您不想要,该组也会显示,因为这groupable: { messages: { .... } }将使 Kendo 将其识别为已启用。

似乎没有任何方法可以通过仅包含一个额外的 JavaScript 来覆盖这些消息来本地化控件,这可以在Kendo UI 论坛上看到。

有没有其他方法可以做到这一点?

(请注意,我将回答我自己的问题,而且我没有患有躁郁症!这只是让社区参与剑道全球项目的一种方式!)

4

3 回答 3

29

github 上的 kendo-global 项目可以轻松地本地化所有 Kendo UI 小部件上的所有可本地化文本,只需包含所需的语言文件,如下所示:

<script src="http://cdn.kendostatic.com/2012.3.1114/js/kendo.all.min.js"></script>
<script src="/js/lang/kendo.pt-BR.js"></script>

它通过覆盖小部件原型上的默认选项来工作,因此它的工作方式就像这些小部件是以预期语言本地创建的一样。

由于它不会改变任何东西,也不会覆盖任何方法,因此如果您需要在单个小部件上使用特定消息(而不是“10 条“您可能想在网格的寻呼机中显示“10 个产品”...)

该项目目前只有几个语言包。翻译非常容易,每位译员都将获得满分。所以贡献者真的,真的很受欢迎。

该项目的页面可以在这里找到:https ://github.com/loudenvier/kendo-global

于 2012-12-06T15:13:48.353 回答
2

我正在使用 Telerik Controls Q1 2013 SP1。看起来您不能再覆盖许多 Kendo 网格标签或工具提示的消息。以下是我无法使用 kendo-global 语言文件覆盖的几条消息/工具提示的列表:

  • 每页项目
  • 第一的
  • 以前的
  • 下一个
  • 最后的

我对原始问题没有很好的答案。值得一提的是,出于我的目的,解决方案是使用 Fluent API

@(Html.Kendo().Grid<Whatever>()
    .Name("Grid")
    .Pageable(e => e           
        .Messages(p => p.ItemsPerPage("")
            .First("לדף הראשון")
            .Previous("לדף הקודם")
            .Next("לדף הבא")
            .Last("לדף האחרון")
            .Refresh("ריענון")
            .Display("מציג {0}-{1} מתוך {2} רשומות")
            .Page("דף")
            .Of("מתוך {0}")))
 ...
于 2013-11-26T00:49:57.903 回答
0

如果需要更动态的选项,我认为获取当前本地化并初始化小部件将是一个不错的选择。

 @{
    var culture = System.Threading.Thread.CurrentThread.CurrentCulture.ToString();
}

@section HeadContent {
    <script src="@Url.Content("~/Scripts/cultures/kendo.culture." + culture + ".min.js")"></script>
}

这是有关的更多文档

https://demos.telerik.com/aspnet-mvc/grid/globalization?culture=ru-RU&_ga=2.268933617.1296110429.1575874528-1040251397.1575554475

于 2019-12-09T13:50:57.537 回答