发布 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"
});
*/
我用 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"
});
*/