日本語用Datepickerを見つかりましたが、Extjs Version3.1用しかなかった。
それを4.1.xに変換する方法が教えてもらえますか?
お願いします。




http://www.sencha.com/forum/showthre...81%84%E3%81%A6

Code:
<html>
  <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <title>Ext.WarekiFieldサンプル</title>
    <link rel="stylesheet" type="text/css" href="http://extjs.cachefly.net/ext-3.1.1/resources/css/ext-all.css" />
    <script type="text/javascript" src="http://extjs.cachefly.net/ext-3.1.1/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="http://extjs.cachefly.net/ext-3.1.1/ext-all.js"> </script>
    <script type="text/javascript" src="http://extjs.cachefly.net/ext-3.1.1/src/locale/ext-lang-ja.js"> </script>

    <script type="text/javascript"><!--

      // ext-lang-jaの修正
      Date.getShortMonthName = function(month) {
        return Date.monthNames[month];
      };

      // 西暦年を和暦年に変換。prefix_type = trueで元号をアルファベット1文字に省略
      Date.toJapaneseYearString = function(year, prefix_type){
        if(!year) return;
        year = parseInt(year);

        var wareki = [ 
          {start: 1868, short_name: 'M', long_name: '明治'  },
          {start: 1912, short_name: 'T', long_name: '大正'  },
          {start: 1926, short_name: 'S', long_name: '昭和'  },
          {start: 1989, short_name: 'H', long_name: '平成'  }
        ];

        var prefix = prefix_type === true ? 'short_name' : 'long_name';

        if(year < wareki[0].start) return year;
        if(year < wareki[1].start) return wareki[0][prefix] + (year - wareki[0].start + 1); 
        if(year < wareki[2].start) return wareki[1][prefix] + (year - wareki[1].start + 1); 
        if(year < wareki[3].start) return wareki[2][prefix] + (year - wareki[2].start + 1);
        return wareki[3][prefix] + (year - wareki[3].start + 1);
      };

      /*
       * Ext.form.DateFieldは、Ext.DatePickerおよびExt.menu.DateMenuで構成されているため、
       * この3つのクラスを継承したもので、再構築
       */

      // Ext.DatePickerを継承したExt.WarekiPicker
      Ext.WarekiPicker = Ext.extend(Ext.DatePicker,{

        // 年月を選択する画面の修正
        updateMPYear : function(y){
            this.mpyear = y;
            var ys = this.mpYears.elements;
            for(var i = 1; i <= 10; i++){
                var td = ys[i-1], y2;
                if((i%2) === 0){
                    y2 = y + Math.round(i * 0.5);
                    td.firstChild.innerHTML = Date.toJapaneseYearString(y2, true); // 修正箇所
                    td.xyear = y2;
                }else{
                    y2 = y - (5-Math.round(i * 0.5));
                    td.firstChild.innerHTML = Date.toJapaneseYearString(y2,true); // 修正箇所
                    td.xyear = y2;
                }
                this.mpYears.item(i-1)[y2 == this.mpSelYear ? 'addClass' : 'removeClass']('x-date-mp-sel');
            }
        },

        // カレンダー画面のヘッダー部分が「月・年」になっているのを「年・月」の順に変更
        update : function(date, forceRefresh){
          Ext.WarekiPicker.superclass.update.apply(this,arguments);

          if(this.rendered){
            this.mbtn.setText(Date.toJapaneseYearString(date.getFullYear()) + '年' + this.monthNames[date.getMonth()]);
          }
        }

      });

      // Ext.menu.DateMenuを継承したExt.WarekiMenu
      Ext.WarekiMenu = Ext.extend(Ext.menu.DateMenu, {
        initComponent: function(){
          Ext.WarekiMenu.superclass.initComponent.call(this);

          /*
           * Ext.menu.DateMenu.initComponent内においてDatePickerのインスタンスが直接
           * が生成されているため、superclassメソッドを読んだ後にここで一旦削除して
           * WarekiPickerを改めて生成・追加
           */


          // DatePicker関連のイベント解除、削除
          this.un('show', this.picker.focus, this.picker);
          this.picker.purgeListeners();
          this.remove(this.picker);

          // WarekiPickerの生成・イベント設定、追加
          this.picker = new Ext.WarekiPicker({
            internalRender: this.strict || !Ext.isIE,
            ctCls: 'x-menu-date-item',
            id: this.pickerId
          }, this.initialConfig);
          this.picker.purgeListeners();

          this.relayEvents(this.picker, ['select']);
          this.on('show', this.picker.focus, this.picker);

          this.add(this.picker);
        }
      });

      // Ext.form.DateFieldを継承したExt.WarekiField。WarekiMenuを内包
      Ext.WarekiField = Ext.extend(Ext.form.DateField,{
        menu: new Ext.WarekiMenu({
          hideOnClick: false,
          focusOnSelect: false
        })
      });

      Ext.reg('warekifield', Ext.WarekiField);

      Ext.BLANK_IMAGE_URL = "http://extjs.cachefly.net/ext-3.1.1/resources/images/default/s.gif";
      Ext.onReady(function(){
        new Ext.WarekiField({
          renderTo: Ext.getBody(),
          width: 200
        });
      });
    // --></script>
  </head>
  <body>
    <h1>Ext.WarekiFieldサンプル</h1>
  </body>
</html>