发布 ext.js 7.2 本地化的现代项目

Publishing ext.js 7.2 Modern project with localization

我用 Ext JS 7.2 Modern 构建了一个小示例应用程序,它只包含一个带按钮的面板。在按钮的点击处理程序中,创建了一个对话框并显示了两个按钮“确定”和“取消”:

    Ext.define('EmpDir.view.MyPanel', {
    extend: 'Ext.Panel',
    alias: 'widget.mypanel',

    requires: [
        'EmpDir.view.MyPanelViewModel',
        'Ext.Button'
    ],

    viewModel: {
        type: 'mypanel'
    },
    title: 'My Panel',

    items: [
        {
            xtype: 'button',
            handler: function(button, e) {
                var dialog = Ext.create('Ext.Dialog', {
                    title: 'Dialog',
                    closable: true,
                    defaultFocus: '#ok',
                    maximizable: true,
                    bodyPadding: 30,
                    maxWidth: 300,
                    html: 'This is a dialog, which extends from Panel and adds some extra features.',
                    buttons: {
                        ok: {
                            handler: function() {
                                // Do something
                                this.up('dialog').hide();
                            }
                        },
                        cancel: {
                            handler: function() {
                                // Do something
                                this.up('dialog').hide();
                            }
                        }
                    }
                });

                dialog.show();
            },
            text: 'MyButton2'
        }
    ]
});

如果我随后发布项目(不是构建,而是发布,制作一个发布版本发送给客户可以这么说), 两个按钮的文本是 'Ok' 和 'Cancel', 因为默认的 "en" 本地化.

现在我想将这两个按钮本地化,例如,将其本地化为德语。预期结果应该是 'Ok' 和 'Abbrechen'.

所以我遵循了 Sencha 文档中的指南 here and here

我尝试的第一件事是在 app.json 中插入以下代码。

"requires": [
      "ext-locale"
],
"locale": "de",

但是那没有任何作用。按钮的文字仍然是英文。

然后我尝试了另一个建议

   "requires": [
      "ext-locale"
   ],
   "locales": [
      "de",
      "fr"
   ],

同样,它没有用。

我第一次使用 Sencha Architect 进行发布,所以我想,也许它适用于 Sencha cmd。

但不,它没有。它始终保持英语。我检查了发布文件夹,但在其中找不到任何语言环境-xx.js 文件。

但是,当我预览项目时,它每次都有效。

所以毕竟这是一个错误。 在支持人员的帮助下,我不得不评论 ext-locale-de.js 文件的最后一部分,可以在这里找到:ext\modern\locale\overrides\de

/* Ext.define("Ext.locale.de.grid.filters.menu.Base", {
    override: "Ext.grid.filters.menu.Base",

    config: {
        text: "Filter"
    }
});

Ext.define('Ext.locale.de.grid.locked.Grid', {
    override: 'Ext.grid.locked.Grid',

    config: {
        columnMenu: {
            items: {
                region: {
                    text: 'Region'
                }
            }
        },
        regions: {
            left: {
                menuLabel: 'Verschlossen (Links)'
            },
            center: {
                menuLabel: 'Freigeschaltet'
            },
            right: {
                menuLabel: 'Verschlossen (Recht)'
            }
        }
    }
});

Ext.define("Ext.locale.de.grid.plugin.RowDragDrop", {
    override: "Ext.grid.plugin.RowDragDrop",
    dragText: "{0} Zeile(n) ausgewählt"
});
 */