Kendo UI全球化/语言包

时间:2012-12-06 15:13:48

标签: kendo-ui

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将它识别为启用。

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

还有其他办法吗?

(注意我将回答我自己的问题,而且我没有遭受双相情感障碍!这只是让社区参与剑道全球项目的一种方式!)

3 个答案:

答案 0 :(得分:28)

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 itens”你可能想在网格的寻呼机中显示“10个产品”......)

该项目目前只有几个语言包。翻译非常简单,每个翻译人员都将获得全额学分。所以贡献者真的非常欢迎。

项目页面可在此处找到:https://github.com/loudenvier/kendo-global

答案 1 :(得分:1)

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

  • ItemsPerPage
  • 第一
  • 下一步
  • 最后

我对原始问题没有好的答案。 值得一提的是,就我的目的而言,解决方案是使用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}")))
 ...

答案 2 :(得分: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