This commit is contained in:
yumoqing 2025-12-28 13:35:58 +08:00
parent 08a8e143dc
commit c67593298f
4 changed files with 72 additions and 24 deletions

View File

@ -40,7 +40,7 @@ bricks.ChartBar = class extends bricks.EchartsExt {
trigger:'axis'
},
legend:{
data:n_data
data:this.valueFields
},
xAxis:{
type:'category',

View File

@ -701,7 +701,10 @@ bricks.App = class extends bricks.Layout {
let params = {'lang':this.lang};
var jc = new bricks.HttpJson();
d = await jc.httpcall(desc.url, {
"method":desc.method||'GET', params:params});
"method":desc.method||'GET',
params:params
}
);
this.i18n.setup_dict(d);
}
async build(){

View File

@ -1,53 +1,81 @@
var bricks = window.bricks || {};
bricks.I18n = class {
constructor(url, default_lang){
/*
opts={
i18n
lang
}
*/
constructor(opts){
/*
{
url:
method:
default_lang
lang:
i18n_path:
}
*/
this.url = opts.url;
this.default_lang = opts.default_lang||'en';
this.url = opts.url || '/i18n'
htis.i18n_path = opts.i18n_path;
this.lang = opts.lang;
this.method = opts.method || 'GET';
this.lang_msgs = {};
this.msgs = {};
this.uni18n = {};
}
_(txt, obj){
if (this.msgs.hasOwnProperty(txt)){
itxt = this.msgs[txt];
var outt, mt;
var msgs = this.lang_msgs[this.lang].msgs;
if (msgs.hasOwnProperty(txt)){
mt = msgs[txt] || txt;
}
if (obj instanceof Object){
return obj_fmtstr(obj, itxt);
outt = obj_fmtstr(obj, mt);
} else {
outt = mt;
}
if (mt == txt) {
this.uni18n(txt);
}
return txt;
}
uni18n(txt){
var d = this.lang_msgs[this.lang].unmsgs;
if (! d[txt]){
d[txt] = 1;
}
}
is_loaded(lang){
if (objget(this.lang_msgs, lang)) return true;
return false;
}
setup_dict(dic, lang){
this.cur_lang = lang;
bricks.extend(this.lang_msgs, {lang:dic});
this.msgs = dic;
this.lang = lang;
this.lang_msgs[lang] = {
msgs:dic,
unmsgs:{}
}
}
async get_lang_dic(lang){
let params = {
lang:lang,
i18n: this.i18n_path
};
var jc = new bricks.HttpJson();
d = await jc.httpcall(this.url, {
"method":this.method || 'GET',
params:params
});
this.setup_dict(d, lang);
}
async change_lang(lang){
if (objget(this.lang_msgs, lang)){
this.msgs = objget(this.lang_msgs, lang);
if (this.lang_msgs[lang]){
return;
}
if (! this.url) return;
let params = {'lang':lang};
var jc = new bricks.HttpJson();
d = await jc.httpcall(desc.url, {
"method":this.method || 'GET',
params:params
});
this.setup_dict(d, lang);
await this.get_lang_dic(lang);
}
}

View File

@ -101,3 +101,20 @@ binds数组定义用户交互行为每个绑定bind描述符包含以下结
| `params` | Object | 携带的数据 |
---
### bricks 控件注册机制
bricks使用控件注册机制来实现识别源码中widgettype的值对应bricks的哪个控件。
注册实现
bricks.Factory.register(控件名, bricks实现的控件对象)完成注册
### bricks的已实现控件清单
已实现的[控件清单](widgets.md)
### 控件扩展要求
* javascript class类
* 继承自JsWidget或其子类
* 为控件命名,并注册此控件