📅  最后修改于: 2023-12-03 14:41:05.381000             🧑  作者: Mango
本地化就是根据不同的语言、地域、习惯等因素,将软件、网站、APP等产品进行针对不同地区的定制,以适应当地用户的需求和习惯,包括语言、时间、货币等方面的差异。
Ext.js 是一个用于构建富客户端应用程序的 Web 框架,提供了强大的数据处理、容器管理和组件化的能力。在应用程序的本地化方面,Ext.js 提供了完善的支持。
Ext.js 提供了语言本地化的能力。在 Ext.js 中,本地化文件使用 .js 文件来定义,可以根据需要定义多个本地化文件。
在代码中,可以使用以下方法来启用本地化:
Ext.onReady(function() {
Ext.Loader.setConfig({
enabled: true,
paths: {
'Ext.ux.ajax': './ux/ajax'
}
});
Ext.require([
'Ext.grid.*',
'Ext.data.*',
'Ext.ux.ajax.JsonSimlet',
'Ext.ux.ajax.SimManager'
]);
Ext.application({
name: 'HelloExt',
launch: function() {
Ext.create('Ext.grid.Panel', {
renderTo: Ext.getBody(),
store: Ext.create('Ext.data.Store', {
fields: ['name', 'email', 'phone'],
data: [
{ name: 'Lisa', email: 'lisa@simpsons.com', phone: '555-111-1224' },
{ name: 'Bart', email: 'bart@simpsons.com', phone: '555-222-1234' },
{ name: 'Homer', email: 'home@simpsons.com', phone: '555-222-1244' },
{ name: 'Marge', email: 'marge@simpsons.com', phone: '555-222-1254' }
]
}),
columns: [
{ text: _('Name'), dataIndex: 'name', width: 100 },
{ text: _('Email'), dataIndex: 'email', width: 100 },
{ text: _('Phone'), dataIndex: 'phone', width: 100 }
],
height: 200,
width: 400,
title: _('My Grid Panel')
});
}
});
});
在时间本地化方面,Ext.js 提供了格式化和解析时间的功能。可以使用以下代码来启用时间本地化:
Ext.setLocale('zh-cn');
Ext.util.Format.dateRenderer = function(format) {
return function(v) {
return Ext.util.Format.date(v, format || Ext.Date.defaultFormat);
};
};
Ext.application({
name : 'MyApp',
launch : function() {
Ext.create('Ext.form.Panel', {
bodyPadding: 5,
width: 350,
// Fields will be arranged vertically, stretched to full width
layout: 'anchor',
defaults: {
anchor: '100%'
},
// The fields
defaultType: 'textfield',
items: [
{
fieldLabel: _('Date of Birth'),
name: 'dob',
xtype: 'datefield',
allowBlank: false,
format: _('Y-m-d')
}, {
fieldLabel: _('Last Login'),
name: 'lastlogindate',
xtype: 'datefield',
format: _('Y-m-d')
}
],
// Reset and Submit buttons
buttons: [{
text: 'Reset',
handler: function() {
this.up('form').getForm().reset();
}
}, {
text: 'Submit',
formBind: true, //only enabled once the form is valid
disabled: true,
handler: function() {
var form = this.up('form').getForm();
if (form.isValid()) {
form.submit({
success: function(form, action) {
Ext.Msg.alert('Success', action.result.msg);
},
failure: function(form, action) {
Ext.Msg.alert('Failed', action.result.msg);
}
});
}
}
}],
renderTo: Ext.getBody()
});
}
});
在货币本地化方面,Ext.js 提供了格式化和解析货币的功能。可以使用以下代码来启用货币本地化:
Ext.application({
name: 'MyApp',
launch: function() {
Ext.create('Ext.window.Window', {
title: _('Currency Test'),
height: 150,
width: 300,
layout: 'fit',
items: [
{
xtype: 'form',
items: [
{
xtype: 'numberfield',
fieldLabel: _('Price'),
name: 'price',
submittedValue: false,
allowBlank: false,
listeners: {
change: function() {
var form = this.up('form').getForm();
form.findField('total').setValue(form.findField('price').getValue() * 1.0);
}
}
},
{
xtype: 'displayfield',
fieldLabel: _('Total'),
name: 'total',
renderer: function(value) {
return Ext.util.Format.currency(value, _('CNY'), 2);
}
}
]
}
],
renderTo: Ext.getBody()
});
}
});
Ext.js 的本地化支持非常完善,可以根据不同的时间、货币和语言等因素进行定制化开发,以满足不同地区用户的需求和习惯。对于多语言、多地区开发的应用程序来说,Ext.js 可谓是一个非常好的选择。