0 0

关于ext4.0的国际化10

首先要说明下,这个本来是提问贴的,但我在提问那里操作了半天,老是出错,根本提问不了,所以,很抱歉,放在论坛来了,请版主帮忙转到提问那里去吧。 本来之前也提了个类似的问题的了,但由于没说明清楚,那个问题补充也补充不了,非常郁闷,所以,再详细的提一次,这次,有带上代码的。 代码如下: <link rel="stylesheet" type="text/css" href="ext4/resources/css/ext-all.css"> <script type="text/javascript" src="ext4/ext-all.js"></script><script type="text/javascript" src="ext4/locale/ext-lang-zh_CN.js"></script><script type="text/javascript"> Ext.onReady(function(){ Ext.Msg.alert("提示","按钮还是OK?"); }); </script> jsp的页面,我一打开,那个提示按钮老是为英文的OK,而不是中文的,说明国际化无效,不知道,怎么改? 3.0版本,我就这样写,没问题,但4.0却不行,很怪的。
2011年6月17日 18:16

2个答案 按时间排序 按投票排序

0 0

采纳的答案

囧。。。果然还是有问题
事不过三,这次我测试好了的,同样引入原版语言文件,以下代码放置在语言文件后、页面逻辑前:

Ext.onReady(function(){
	var msgBox = Ext.MessageBox;
	Ext.each(msgBox.msgButtons, function(btn, index){
		btn.setText(msgBox.buttonText[msgBox.buttonIds[index]]);
	});
});


彻底是Ext4.0的bug,只有暴力修改了。

P.S. 如果以上还不生效。。。将语言文件按上面说的修改一下(去掉onReady)

2011年6月18日 08:49
0 0

抱歉哦。。之前的问题好像是我回答的,我对3.x比较熟,4.0只是简单的看了一下语言文件的源码就轻率回复了……

刚才再看了一下MessageBox的源码,发现它是定义后就立即创建了实例(属于特殊的全局单例对象),所以是在语言文件之前定义完按钮文本的。

试试修改语言文件吧,把Ext.onReady去掉,让它直接运行。对于你这样的一次性全部引入的方式应该是不会出错的。

//Ext.onReady(function(){
    if(Ext.Updater){
    ...
//});

或者保守点,只将MessageBox的那块移出
    if(Ext.MessageBox){
       Ext.MessageBox.buttonText = {
          ok     : "确定",
          cancel : "取消",
          yes    : "是",
          no     : "否"
       };
    }
Ext.onReady(function(){
   ...


这个应该算Ext4.0的bug

2011年6月17日 18:47

相关推荐

Global site tag (gtag.js) - Google Analytics