Sfoglia il codice sorgente

导入中文语言包

hy 6 anni fa
parent
commit
6e78eceeb8
100 ha cambiato i file con 1604 aggiunte e 119 eliminazioni
  1. 4 1
      app.json
  2. 95 87
      app/Application.scss
  3. 91 22
      app/view/plugins/gridHeaderFilter/field/date/DateTypePicker.js
  4. 42 9
      app/view/plugins/gridHeaderFilter/field/date/ResetDateField.js
  5. 1 0
      ext/packages/modern-locale/.gitignore
  6. 32 0
      ext/packages/modern-locale/README.md
  7. 141 0
      ext/packages/modern-locale/build.xml
  8. 2 0
      ext/packages/modern-locale/index.js
  9. 4 0
      ext/packages/modern-locale/overrides/de_DE/Component.js
  10. 49 0
      ext/packages/modern-locale/overrides/de_DE/Panel.js
  11. 14 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/Bound.js
  12. 9 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/CIDRv4.js
  13. 9 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/CIDRv6.js
  14. 10 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/Currency.js
  15. 9 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/DateTime.js
  16. 9 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/Email.js
  17. 9 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/Exclusion.js
  18. 11 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/Format.js
  19. 9 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/IPAddress.js
  20. 9 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/Inclusion.js
  21. 11 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/Length.js
  22. 11 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/Number.js
  23. 9 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/Phone.js
  24. 11 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/Presence.js
  25. 14 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/Range.js
  26. 9 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/Time.js
  27. 9 0
      ext/packages/modern-locale/overrides/de_DE/data/validator/Url.js
  28. 11 0
      ext/packages/modern-locale/overrides/de_DE/dataview/Abstract.js
  29. 11 0
      ext/packages/modern-locale/overrides/de_DE/dataview/EmptyText.js
  30. 11 0
      ext/packages/modern-locale/overrides/de_DE/dataview/List.js
  31. 12 0
      ext/packages/modern-locale/overrides/de_DE/dataview/plugin/ListPaging.js
  32. 47 0
      ext/packages/modern-locale/overrides/de_DE/ext-locale-de_DE.js
  33. 10 0
      ext/packages/modern-locale/overrides/de_DE/field/Date.js
  34. 12 0
      ext/packages/modern-locale/overrides/de_DE/field/Field.js
  35. 14 0
      ext/packages/modern-locale/overrides/de_DE/field/Number.js
  36. 13 0
      ext/packages/modern-locale/overrides/de_DE/field/Text.js
  37. 12 0
      ext/packages/modern-locale/overrides/de_DE/panel/Collapser.js
  38. 12 0
      ext/packages/modern-locale/overrides/de_DE/panel/Date.js
  39. 14 0
      ext/packages/modern-locale/overrides/de_DE/picker/Date.js
  40. 12 0
      ext/packages/modern-locale/overrides/de_DE/picker/Picker.js
  41. 4 0
      ext/packages/modern-locale/overrides/es_AR/Component.js
  42. 49 0
      ext/packages/modern-locale/overrides/es_AR/Panel.js
  43. 14 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/Bound.js
  44. 9 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/CIDRv4.js
  45. 9 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/CIDRv6.js
  46. 10 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/Currency.js
  47. 9 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/DateTime.js
  48. 9 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/Email.js
  49. 9 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/Exclusion.js
  50. 11 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/Format.js
  51. 9 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/IPAddress.js
  52. 9 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/Inclusion.js
  53. 11 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/Length.js
  54. 11 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/Number.js
  55. 9 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/Phone.js
  56. 11 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/Presence.js
  57. 14 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/Range.js
  58. 9 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/Time.js
  59. 9 0
      ext/packages/modern-locale/overrides/es_AR/data/validator/Url.js
  60. 11 0
      ext/packages/modern-locale/overrides/es_AR/dataview/Abstract.js
  61. 11 0
      ext/packages/modern-locale/overrides/es_AR/dataview/EmptyText.js
  62. 11 0
      ext/packages/modern-locale/overrides/es_AR/dataview/List.js
  63. 12 0
      ext/packages/modern-locale/overrides/es_AR/dataview/plugin/ListPaging.js
  64. 47 0
      ext/packages/modern-locale/overrides/es_AR/ext-locale-es_AR.js
  65. 10 0
      ext/packages/modern-locale/overrides/es_AR/field/Date.js
  66. 12 0
      ext/packages/modern-locale/overrides/es_AR/field/Field.js
  67. 14 0
      ext/packages/modern-locale/overrides/es_AR/field/Number.js
  68. 13 0
      ext/packages/modern-locale/overrides/es_AR/field/Text.js
  69. 12 0
      ext/packages/modern-locale/overrides/es_AR/panel/Collapser.js
  70. 12 0
      ext/packages/modern-locale/overrides/es_AR/panel/Date.js
  71. 14 0
      ext/packages/modern-locale/overrides/es_AR/picker/Date.js
  72. 12 0
      ext/packages/modern-locale/overrides/es_AR/picker/Picker.js
  73. 4 0
      ext/packages/modern-locale/overrides/hu_HU/Component.js
  74. 49 0
      ext/packages/modern-locale/overrides/hu_HU/Panel.js
  75. 14 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Bound.js
  76. 10 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/CIDRv4.js
  77. 9 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/CIDRv6.js
  78. 10 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Currency.js
  79. 9 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Date.js
  80. 9 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/DateTime.js
  81. 9 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Email.js
  82. 9 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Exclusion.js
  83. 11 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Format.js
  84. 9 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/IPAddress.js
  85. 9 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Inclusion.js
  86. 11 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Length.js
  87. 11 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Number.js
  88. 9 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Phone.js
  89. 11 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Presence.js
  90. 14 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Range.js
  91. 9 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Time.js
  92. 9 0
      ext/packages/modern-locale/overrides/hu_HU/data/validator/Url.js
  93. 11 0
      ext/packages/modern-locale/overrides/hu_HU/dataview/Abstract.js
  94. 11 0
      ext/packages/modern-locale/overrides/hu_HU/dataview/EmptyText.js
  95. 11 0
      ext/packages/modern-locale/overrides/hu_HU/dataview/List.js
  96. 12 0
      ext/packages/modern-locale/overrides/hu_HU/dataview/plugin/ListPaging.js
  97. 49 0
      ext/packages/modern-locale/overrides/hu_HU/ext-locale-hu_HU.js
  98. 10 0
      ext/packages/modern-locale/overrides/hu_HU/field/Date.js
  99. 12 0
      ext/packages/modern-locale/overrides/hu_HU/field/Field.js
  100. 13 0
      ext/packages/modern-locale/overrides/hu_HU/field/Number.js

+ 4 - 1
app.json

@@ -16,8 +16,11 @@
      *      ]
      */
     "requires": [
-        "font-awesome"
+        "font-awesome",
+        "ux",
+        "modern-locale"
     ],
+    "locale":"zh_CN",
 
     /**
      * The relative path to the application's markup file (html, jsp, asp, etc.).

+ 95 - 87
app/Application.scss

@@ -7,90 +7,98 @@ $enable-font-awesome: dynamic(true);
 
 /**date-picker*/
 .x-datepicker-month .x-btn-inner {
-    font-size: 12px;
-  }
-  
-  .x-datepicker {
-    width: 212px;
-  }
-
-  .x-datepicker-cell{
-    border:none !important;
-  }
-  
-  .x-datepicker-column-header {
-    width: 30px;
-  }
-  
-  .x-datepicker-column-header-inner {
-    line-height: 25px;
-    padding: 0 9px 0 0;
-  }
-  
-  .x-datepicker-cell {
-    text-align: right;
-    border: 1px solid #fff;
-  }
-  
-  .x-datepicker-date {
-    padding: 0 7px 0 0;
-    cursor: pointer;
-    line-height: 23px;
-  }
-  
-  .x-datepicker-footer,
-  .x-monthpicker-buttons {
-    padding: 3px 0;
-    text-align: center;
-  }
-  
-  .x-monthpicker {
-    width: 212px;
-    border-width: 1px;
-  }
-  
-  .x-monthpicker-months {
-    width: 105px;
-  }
-  
-  .x-monthpicker-item-inner {
-    margin: 0 5px 0 5px;
-    line-height: 22px;
-  }
-  
-  .x-monthpicker-months .x-monthpicker-item {
-    width: 52px;
-  }
-  
-  .x-monthpicker-years {
-    width: 105px;
-  }
-  
-  .x-monthpicker-years .x-monthpicker-item {
-    width: 52px;
-  }
-  
-  .x-monthpicker-yearnav {
-    height: 34px;
-  }
-  
-  .x-monthpicker-yearnav-button-ct {
-    width: 52px;
-  }
-  
-  .x-monthpicker-yearnav-button {
-    height: 12px;
-    width: 12px;
-    cursor: pointer;
-    margin-top: 11px;
-  }
-  
-  .x-datepicker-footer .x-btn-default-toolbar-small {
-    padding: 2px 2px 2px 2px;
-    min-width: 56px;
-  }
-  
-  .x-monthpicker-buttons .x-btn-default-toolbar-small {
-    padding: 2px 2px 2px 2px;
-    min-width: 56px;
-  }
+  font-size: 12px;
+}
+
+.x-datepicker {
+  width: 212px;
+}
+
+.x-datepicker-cell{
+  border:none !important;
+}
+
+.x-datepicker-column-header {
+  width: 30px;
+}
+
+.x-datepicker-column-header-inner {
+  line-height: 25px;
+  padding: 0 9px 0 0;
+}
+
+.x-datepicker-cell {
+  text-align: right;
+  border: 1px solid #fff;
+}
+
+.x-datepicker-date {
+  padding: 0 7px 0 0;
+  cursor: pointer;
+  line-height: 23px;
+}
+
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  padding: 3px 0;
+  text-align: center;
+}
+
+.x-monthpicker {
+  width: 212px;
+  border-width: 1px;
+}
+
+.x-monthpicker-months {
+  width: 105px;
+}
+
+.x-monthpicker-item-inner {
+  margin: 0 5px 0 5px;
+  line-height: 22px;
+}
+
+.x-monthpicker-months .x-monthpicker-item {
+  width: 52px;
+}
+
+.x-monthpicker-years {
+  width: 105px;
+}
+
+.x-monthpicker-years .x-monthpicker-item {
+  width: 52px;
+}
+
+.x-monthpicker-yearnav {
+  height: 34px;
+}
+
+.x-monthpicker-yearnav-button-ct {
+  width: 52px;
+}
+
+.x-monthpicker-yearnav-button {
+  height: 12px;
+  width: 12px;
+  cursor: pointer;
+  margin-top: 11px;
+}
+
+.x-datepicker-footer .x-btn-default-toolbar-small {
+  padding: 2px 2px 2px 2px;
+  min-width: 56px;
+}
+
+.x-monthpicker-buttons .x-btn-default-toolbar-small {
+  padding: 2px 2px 2px 2px;
+  min-width: 56px;
+}
+
+.x-datepicker-month .x-btn {
+  padding: 9px;
+}
+
+.x-datepicker-arrow {
+  height: 32px;
+}

+ 91 - 22
app/view/plugins/gridHeaderFilter/field/date/DateTypePicker.js

@@ -2,7 +2,7 @@
  * @Description: 日期筛选头-日期选择组件
  * @Author: hy
  * @Date: 2019-08-12 18:37:09
- * @LastEditTime: 2019-08-13 17:54:46
+ * @LastEditTime: 2019-08-14 11:50:28
  */
 Ext.define('uas.view.plugins.gridHeaderFilter.field.date.DateTypePicker', {
     extend: 'Ext.picker.Date',
@@ -196,6 +196,27 @@ Ext.define('uas.view.plugins.gridHeaderFilter.field.date.DateTypePicker', {
             });
         }
     },
+    onOkClick: function(picker, value) {
+        var me = this,
+            month = value[0],
+            year = value[1],
+            date = new Date(year, month, me.getActive().getDate());
+ 
+        if (date.getMonth() !== month) {
+            // 'fix' the JS rolling date conversion if needed 
+            date = Ext.Date.getLastDateOfMonth(new Date(year, month, 1));
+        }
+        me.setValue(date);
+        me.hideMonthPicker();
+        me.pickerField.onFocus();
+        me.pickerField.focusEl.focus();
+    },
+    onCancelClick: function() {
+        this.selectedUpdate(this.activeDate);
+        this.hideMonthPicker();
+        this.pickerField.onFocus();
+        this.pickerField.focusEl.focus();
+    },
     showMonthPicker: function(animate) {
         var me = this,
             el = me.el,
@@ -228,31 +249,64 @@ Ext.define('uas.view.plugins.gridHeaderFilter.field.date.DateTypePicker', {
         }
         return me;
     },
-    changeType:function(btn,e){
+    changeType:function(btn,e,renderDate){
         const datePicker = btn.ownerCt,
               { pickerField,begin,end,equal,between } = datePicker,
               { datePicker2 } = pickerField,
+              value = pickerField.getValue(),
               filterContainer = pickerField.ownerCt,
               { operator } = filterContainer,
               XY = pickerField.getAlignToXY(pickerField.inputEl),
               selectCls = 'x-datepicker-tbar-active';
-        if(!btn.hasCls(selectCls)){
-            //移除样式
-            begin.removeCls(selectCls);
-            end.removeCls(selectCls);
-            equal.removeCls(selectCls);
-            between.removeCls(selectCls);
-            //添加选中样式
-            btn.addCls(selectCls);
-            if(btn.text==='介于'){
-                datePicker2.showAt(XY[0],XY[1]+238)
-                pickerField.onFocus();
-                pickerField.focusEl.focus();
+        //移除样式
+        begin.removeCls(selectCls);
+        end.removeCls(selectCls);
+        equal.removeCls(selectCls);
+        between.removeCls(selectCls);
+        //添加选中样式
+        btn.addCls(selectCls);
+        if(btn.text==='介于'){
+            datePicker2.showAt(XY[0],XY[1]+228)
+            pickerField.onFocus();
+            pickerField.focusEl.focus();
+        }else{
+            datePicker2.hide();
+        }
+        operator.operateText = btn.text;
+        operator.operate = btn.name;
+        if(!renderDate){
+            //切换类型时 将旧类型的时间转成新类型时间
+            if(value){
+                //获取旧类型时间
+                let begin;
+                if(value.indexOf('=')===0){
+                    begin = value.substr(1);
+                }else if(value.indexOf('>=')===0||value.indexOf('<=')===0){
+                    begin = value.substr(2);
+                }else{
+                    begin = value.split('~')[0];
+                }
+                //转为新类型时间
+                if(operator.operate!=='between'){
+                    datePicker.setValue(new Date(begin));
+                    datePicker.setMaxDate(null);
+                }else{
+                    datePicker.setValue(new Date(begin));
+                    datePicker.setMaxDate(null);
+                    datePicker2.setValue(null);
+                    datePicker2.setMinDate(new Date(begin));
+                }
             }else{
-                datePicker2.hide();
+                if(operator.operate!=='between'){
+                    datePicker.setValue(new Date());
+                    datePicker.setMaxDate(null);
+                }else{
+                    datePicker.setValue(new Date());
+                    datePicker.setMaxDate(null);
+                    datePicker2.setValue(new Date());
+                    datePicker2.setMinDate(new Date());
+                }
             }
-            operator.operateText = btn.text;
-            operator.operate = btn.name;
         }
     },
     listeners:{
@@ -272,19 +326,34 @@ Ext.define('uas.view.plugins.gridHeaderFilter.field.date.DateTypePicker', {
             if(operator.operate==='equal'){
                 value = Ext.Date.format(date,format);
                 pickerField.setValue('='+value);
-                me.hide();
+                pickerField.blur();
             }else if(operator.operate==='begin'){
                 value = Ext.Date.format(date,format);
                 pickerField.setValue('>='+value);
-                me.hide();
+                pickerField.blur();
             }else if(operator.operate==='end'){
                 value = Ext.Date.format(date,format);
                 pickerField.setValue('<='+value);
-                me.hide();
+                pickerField.blur();
             }else if(operator.operate==='between'){
-
+                //判断是pick1还是pick2
+                const isFirstPicker = (me.cls!=='x-datepicker2');
+                let begin = isFirstPicker?me:pickerField.datePicker;
+                let end = isFirstPicker?pickerField.datePicker2:me;
+                if(!me.hasChoose){
+                    me.hasChoose = true;
+                }
+                isFirstPicker?end.setMinDate(date):begin.setMaxDate(date);
+                if(begin.hasChoose&&end.hasChoose){
+                    value1 = Ext.Date.format(begin.getValue(),format);
+                    value2 = Ext.Date.format(end.getValue(),format);
+                    pickerField.setValue(value1+'~'+value2);
+                    begin.hasChoose = end.hasChoose = false;
+                    begin.hide();
+                    end.hide();
+                    pickerField.blur();
+                }
             }
-            pickerField.blur();
         },
     }
 });

+ 42 - 9
app/view/plugins/gridHeaderFilter/field/date/ResetDateField.js

@@ -2,7 +2,7 @@
  * @Description: 日期筛选头输入框
  * @Author: hy
  * @Date: 2019-08-12 18:37:09
- * @LastEditTime: 2019-08-13 17:35:24
+ * @LastEditTime: 2019-08-14 11:46:41
  */
 Ext.define('uas.view.plugins.gridHeaderFilter.field.date.ResetDateField', {
     extend: 'Ext.form.field.Text',
@@ -24,7 +24,8 @@ Ext.define('uas.view.plugins.gridHeaderFilter.field.date.ResetDateField', {
                 scope: 'this',
                 handler:function(me,picker,e){
                     const grid = me.up().up().up().up();
-                    me.setValue([]);
+                    me.setValue(null);
+                    me.blur();
                     grid.getHeaderFilter();
                 }
             }
@@ -41,8 +42,10 @@ Ext.define('uas.view.plugins.gridHeaderFilter.field.date.ResetDateField', {
     listeners:{
         focus: function() {
             const me = this;
-            if(!me.datePicker || me.datePicker.hidden){
-                me.showDatePicker()
+            if(me.getTriggers().picker.el.dom.classList.toString().indexOf('x-form-trigger-click')<0){
+                if(!me.datePicker || me.datePicker.hidden){
+                    me.showDatePicker()
+                }
             }
         },
         blur:function(){
@@ -51,6 +54,15 @@ Ext.define('uas.view.plugins.gridHeaderFilter.field.date.ResetDateField', {
                 me.datePicker&&me.datePicker.hide();
                 me.datePicker2&&me.datePicker2.hide();
             }
+        },
+        change:function(f,newValue,oldValue){
+            if(newValue!==oldValue){
+                if(newValue&&newValue!=''){
+                    f.getTriggers().picker.show();
+                }else{
+                    f.getTriggers().picker.hide();
+                }
+            }
         }
     },
     showDatePicker: function () {
@@ -67,12 +79,35 @@ Ext.define('uas.view.plugins.gridHeaderFilter.field.date.ResetDateField', {
         }
         //根据operate设置点击状态
         const operateBtn = me.datePicker[operator.operate];
-        operateBtn.handler(operateBtn);
+        operateBtn.handler(operateBtn,null,true);
         //根据value设置datePicker
+        me.setDatePickers(value,operator.operate);
+    },
+    setDatePickers:function(value,operate){
+        const me = this;
         if(value){
-
+            if(operate==='equal'){
+                me.datePicker.setValue(new Date(value.substr(1)));
+                me.datePicker.setMaxDate(null);
+            }else if(operate==='begin'||operate==='end'){
+                me.datePicker.setValue(new Date(value.substr(2)));
+                me.datePicker.setMaxDate(null);
+            }else{
+                me.datePicker.setValue(new Date(value.split('~')[0]));
+                me.datePicker.setMaxDate(new Date(value.split('~')[1]));
+                me.datePicker2.setValue(new Date(value.split('~')[1]));
+                me.datePicker2.setMinDate(new Date(value.split('~')[0]));
+            }
         }else{
-            
+            if(operate!=='between'){
+                me.datePicker.setValue(new Date());
+                me.datePicker.setMaxDate(null);
+            }else{
+                me.datePicker.setValue(new Date());
+                me.datePicker.setMaxDate(null);
+                me.datePicker2.setValue(new Date());
+                me.datePicker2.setMinDate(new Date());
+            }
         }
     },
     createDatePicker:function(){
@@ -81,7 +116,6 @@ Ext.define('uas.view.plugins.gridHeaderFilter.field.date.ResetDateField', {
             xtype:'dateTypePicker',
             pickerField: me,
             floating: true, 
-            startDay : 0,
             dataIndex:this.dataIndex,
             showToday : false,
             showTopButtons: true,//顶部逻辑按钮栏
@@ -96,7 +130,6 @@ Ext.define('uas.view.plugins.gridHeaderFilter.field.date.ResetDateField', {
             xtype:'dateTypePicker',
             pickerField: me,
             floating: true, 
-            startDay : 0,
             dataIndex:this.dataIndex,
             showToday : false
         });

+ 1 - 0
ext/packages/modern-locale/.gitignore

@@ -0,0 +1 @@
+/.idea

+ 32 - 0
ext/packages/modern-locale/README.md

@@ -0,0 +1,32 @@
+# modern-locale
+
+The missing locale package for Ext JS modern toolkit
+
+
+## Getting started
+
+- Put the modern-locale package dir inside the packages/local folder
+- add it in your app.json  requires config option and especify the app locale
+
+        "requires": [
+            "font-awesome",
+            "modern-locale"
+          ],
+        "locale": "pt_BR",
+
+- Refresh your app running this command
+
+        sencha app refresh
+
+### Authors and contributors
+
+* Wemerson Januario (wemerson.januario@gmail.com) (pt_BR)
+* Zoltan Lippai (zoli@lippai.net) (hu_HU)
+* Martín Panizzo (martin17@gmail.com) (es_AR)
+* lovelyelfpop (479858761@qq.com) (zh_CN)
+* Jens Pliester (de_DE)
+
+
+### Contribute
+
+Feel free and contribute to this project by adding more localization and improvements

+ 141 - 0
ext/packages/modern-locale/build.xml

@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project name="modern-locale" default=".help">
+    <!--
+    The build-impl.xml file imported here contains the guts of the build process. It is
+    a great idea to read that file to understand how the process works, but it is best to
+    limit your changes to this file.
+    -->
+    <script language="javascript">
+        <![CDATA[
+            var dir = project.getProperty("basedir"),
+                cmdDir = project.getProperty("cmd.dir"),
+                cmdLoaded = project.getReference("senchaloader");
+            
+            if (!cmdLoaded) {
+                function echo(message, file) {
+                    var e = project.createTask("echo");
+                    e.setMessage(message);
+                    if (file) {
+                        e.setFile(file);
+                    }
+                    e.execute();
+                };
+
+                if (!cmdDir) {
+                    
+                    function exec(args) {
+                        var process = java.lang.Runtime.getRuntime().exec(args),
+                            input = new java.io.BufferedReader(new java.io.InputStreamReader(process.getInputStream())),
+                            headerFound = false,
+                            line;
+
+                        while (line = input.readLine()) {
+                            line = line + '';
+                            java.lang.System.out.println(line);
+                            if (line.indexOf("Sencha Cmd") > -1) {
+                                headerFound = true;
+                            }
+                            else if (headerFound && !cmdDir) {
+                                cmdDir = line;
+                                project.setProperty("cmd.dir", cmdDir);
+                            }
+                        }
+                        process.waitFor();
+                        return !!cmdDir;
+                    }
+                    
+                    if (!exec(["sencha", "which"])) {
+                        var tmpFile = "tmp.sh";
+                        echo("source ~/.bash_profile; sencha " + whichArgs.join(" "), tmpFile);
+                        exec(["/bin/sh", tmpFile]);
+                        new java.io.File(tmpFile)['delete'](); 
+                    }
+                }
+            }
+            
+            if (cmdDir && !project.getTargets().containsKey("init-cmd")) {
+                var importTask = project.createTask("import");
+                importTask.setOwningTarget(self.getOwningTarget());
+                importTask.setLocation(self.getLocation());
+                importTask.setFile(cmdDir + "/ant/build/package/build-impl.xml");
+                importTask.execute();
+            }
+        ]]>
+    </script>
+    <import file="${basedir}/.sencha/test/test-impl.xml"/>
+
+    <!--
+    The following targets can be provided to inject logic before and/or after key steps
+    of the build process:
+
+        The "init-local" target is used to initialize properties that may be personalized
+        for the local machine.
+
+            <target name="-before-init-local"/>
+            <target name="-after-init-local"/>
+
+        The "clean" target is used to clean build output from the build.dir.
+
+            <target name="-before-clean"/>
+            <target name="-after-clean"/>
+
+        The general "init" target is used to initialize all other properties, including
+        those provided by Sencha Cmd.
+
+            <target name="-before-init"/>
+            <target name="-after-init"/>
+        
+        The "build" target performs the call to Sencha Cmd to build the application.
+
+            <target name="-before-build"/>
+            <target name="-after-build"/>
+    -->
+
+    <target name="build" depends="init,build-all"/>
+
+    <target name="build-all" depends="init,-build-all,pkg"/>
+    
+    <target name="-build-all">
+        
+        <for param="build.locale.dir">
+            <dirset dir="${package.dir}/overrides" includes="*"/>
+            <sequential>
+                <local name="build.locale"/>
+                
+                <basename file="@{build.locale.dir}" 
+                          property="build.locale"/>
+                
+                <echo>Building locale ${build.locale}</echo>
+
+                <concat encoding="UTF-8" outputencoding="UTF-8" destfile="${build.dir}/${package.name}-${build.locale}-debug.js">
+                    <fileset dir="@{build.locale.dir}" includes="**/*.js"/>
+                    <filterchain>
+                        <deletecharacters chars="&#xFEFF;" />
+                    </filterchain>
+                </concat>
+
+                <x-compress-js srcfile="${build.dir}/${package.name}-${build.locale}-debug.js"
+                               outfile="${build.dir}/${package.name}-${build.locale}.js"/>
+
+                <!--
+                <ant antfile="${package.dir}/build.xml"
+                     inheritall="false"
+                     target="js"
+                     useNativeBasedir="true"
+                     inheritrefs="true">
+                    <property name="package.framework" value="ext"/>
+                    <property name="cmd.dir" value="${cmd.dir}"/>
+                    <property name="compiler.ref.id" 
+                              value="${compiler.ref.id}-${build.locale}"/>
+                    <property name="package.locale" value="${build.locale}"/>
+                    <property name="build.name.prefix" value="${package.name}-${build.locale}"/>
+                    <property name="build.name.css.prefix" value="${package.name}-${build.locale}"/>
+                </ant>
+                -->
+
+            </sequential>
+        </for>
+
+    </target>
+
+</project>

+ 2 - 0
ext/packages/modern-locale/index.js

@@ -0,0 +1,2 @@
+// This file was intentionally left blank.
+// This file is used by require.resolve to property locate this module.

+ 4 - 0
ext/packages/modern-locale/overrides/de_DE/Component.js

@@ -0,0 +1,4 @@
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.de_DE.Component", {
+    override: "Ext.Component"
+});

+ 49 - 0
ext/packages/modern-locale/overrides/de_DE/Panel.js

@@ -0,0 +1,49 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.Panel', {
+    override: 'Ext.Panel',
+
+    config: {
+        standardButtons: {
+            ok: {
+                text: 'OK'
+            },
+            abort: {
+                text: 'Abbrechen'
+            },
+            retry: {
+                text: 'Wiederholen'
+            },
+            ignore: {
+                text: 'Ignorieren'
+            },
+            yes: {
+                text: 'Ja'
+            },
+            no: {
+                text: 'Nein'
+            },
+            cancel: {
+                text: 'Abbrechen'
+            },
+            apply: {
+                text: 'Anwenden'
+            },
+            save: {
+                text: 'Speichern'
+            },
+            submit: {
+                text: 'Absenden'
+            },
+            help: {
+                text: 'Hilfe'
+            },
+            close: {
+                text: 'Schließen'
+            }
+        },
+        closeToolText: 'Schließen'
+    }
+});

+ 14 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/Bound.js

@@ -0,0 +1,14 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Bound', {
+    override: 'Ext.data.validator.Bound',
+
+    config: {
+        emptyMessage: 'Muss vorhanden sein',
+        minOnlyMessage: 'Wert muss größer sein als {0}',
+        maxOnlyMessage: 'Wert muss kleiner sein als {0}',
+        bothMessage: 'Wert muss zwischen {0} und {1} sein'
+    }
+});

+ 9 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/CIDRv4.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.CIDRv4', {
+    override: 'Ext.data.validator.CIDRv4',
+
+    message: 'Ist keine gültige CIDR Angabe'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/CIDRv6.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.CIDRv6', {
+    override: 'Ext.data.validator.CIDRv6',
+
+    message: 'Ist keine gültige CIDR Angabe'
+});

+ 10 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/Currency.js

@@ -0,0 +1,10 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Currency', {
+    override: 'Ext.data.validator.Currency',
+
+    message: 'Ist keine gültiger Währungsbetrag'
+
+});

+ 9 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/DateTime.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.DateTime', {
+    override: 'Ext.data.validator.DateTime',
+
+    message: 'Ist keine gültige Datum und Zeitangabe'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/Email.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Email', {
+    override: 'Ext.data.validator.Email',
+
+    message: 'Ist keine gültige E-Mail Adresse'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/Exclusion.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Exclusion', {
+    override: 'Ext.data.validator.Exclusion',
+
+    message: 'Ist ein Wert, der ausgeschlossen wurde'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/Format.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Format', {
+    override: 'Ext.data.validator.Format',
+
+    config:{
+        message: 'Ist in einem ungültigen Format'
+    }
+});

+ 9 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/IPAddress.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.IPAddress', {
+    override: 'Ext.data.validator.IPAddress',
+
+    message: 'Ist keine gültige IP Adresse'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/Inclusion.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Inclusion', {
+    override: 'Ext.data.validator.Inclusion',
+
+    message: 'Ist nicht in der Liste aktzeptierter Werte'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/Length.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Length', {
+    override: 'Ext.data.validator.Length',
+
+    minOnlyMessage: 'Länge muss mindestens {0} sein',
+    maxOnlyMessage: 'Länge darf nicht größer als {0} sein',
+    bothMessage: 'Länge muss zwischen {0} und {1} sein'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/Number.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Number', {
+    override: 'Ext.data.validator.Number',
+
+    config:{
+        message: 'Ist keine gültige Zahl'
+    }
+});

+ 9 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/Phone.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Phone', {
+    override: 'Ext.data.validator.Phone',
+
+    message: 'Ist keine gültige Telefonnummer'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/Presence.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Presence', {
+    override: 'Ext.data.validator.Presence',
+
+    config: {
+        message: 'Muss vorhanden sein'
+    }
+});

+ 14 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/Range.js

@@ -0,0 +1,14 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Range', {
+    override: 'Ext.data.validator.Range',
+
+    minOnlyMessage: 'Muss mindestens {0} sein',
+    maxOnlyMessage: 'Darf nicht größer als {0} sein',
+    bothMessage: 'Muss zwischen {0} und {1} sein',
+    config: {
+        nanMessage: 'Muss numerisch sein'
+    }
+});

+ 9 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/Time.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Time', {
+    override: 'Ext.data.validator.Time',
+
+    message: 'Ist keine gültige Zeitangabe'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/de_DE/data/validator/Url.js

@@ -0,0 +1,9 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.data.validator.Url', {
+    override: 'Ext.data.validator.Url',
+
+    message: 'Ist keine gültige URL'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/de_DE/dataview/Abstract.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.dataview.Abstract', {
+    override: 'Ext.dataview.Abstract',
+
+    config: {
+        loadingText: 'Wird geladen...'
+    }
+});

+ 11 - 0
ext/packages/modern-locale/overrides/de_DE/dataview/EmptyText.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.dataview.EmptyText', {
+    override: 'Ext.dataview.EmptyText',
+
+    config: {
+        html: 'Keine Daten zum Anzeigen'
+    }
+});

+ 11 - 0
ext/packages/modern-locale/overrides/de_DE/dataview/List.js

@@ -0,0 +1,11 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.dataview.List', {
+    override: 'Ext.dataview.List',
+
+    config: {
+        loadingText: 'Wird geladen...'
+    }
+});

+ 12 - 0
ext/packages/modern-locale/overrides/de_DE/dataview/plugin/ListPaging.js

@@ -0,0 +1,12 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.dataview.plugin.ListPaging', {
+    override: 'Ext.dataview.plugin.ListPaging',
+
+    config: {
+        loadMoreText: 'Mehr laden...',
+        noMoreRecordsText: 'Keine weiteren Datensätze'
+    }
+});

+ 47 - 0
ext/packages/modern-locale/overrides/de_DE/ext-locale-de_DE.js

@@ -0,0 +1,47 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
+
+        Ext.Date.getShortMonthName = function(month) {
+            return Ext.Date.monthNames[month].substring(0, 3);
+        };
+
+        Ext.Date.monthNumbers = {
+            "Jan": 0,
+            "Feb": 1,
+            "Mär": 2,
+            "Apr": 3,
+            "Mai": 4,
+            "Jun": 5,
+            "Jul": 6,
+            "Aug": 7,
+            "Sep": 8,
+            "Okt": 9,
+            "Nov": 10,
+            "Dez": 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: '.',
+            decimalSeparator: ',',
+            currencySign: '€', // euro
+            currencySpacer: ' ',
+            currentcyAtEnd: true,
+            dateFormat: 'd. m. Y'
+        });
+        Ext.util.Format.deMoney = Ext.util.Format.currency;
+    }
+});

+ 10 - 0
ext/packages/modern-locale/overrides/de_DE/field/Date.js

@@ -0,0 +1,10 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.field.Date', {
+    override: 'Ext.field.Date',
+
+    minDateMessage: 'Das Datum in diesem Feld muss gleich oder nach {0} sein',
+    maxDateMessage: 'Das Datum in diesem Feld muss gleich oder vor {0} sein'
+});

+ 12 - 0
ext/packages/modern-locale/overrides/de_DE/field/Field.js

@@ -0,0 +1,12 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.field.Field', {
+    override: 'Ext.field.Field',
+
+    config: {
+        requiredMessage: 'Dieses Feld ist eine Pflichtangabe',
+        validationMessage: 'Ist im falschen Format'
+    }
+});

+ 14 - 0
ext/packages/modern-locale/overrides/de_DE/field/Number.js

@@ -0,0 +1,14 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.field.Number', {
+    override: 'Ext.field.Number',
+
+    config: {
+        decimalsText: 'Die maximalen Nachkommastellen sind {0}'
+    },
+    minValueText: 'Der Minimalwert für dieses Feld ist {0}',
+    maxValueText: 'Der Maximalwert für dieses Feld ist {0}',
+    badFormatMessage: 'Wert passt nicht zum benötigten Format'
+});

+ 13 - 0
ext/packages/modern-locale/overrides/de_DE/field/Text.js

@@ -0,0 +1,13 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.field.Text', {
+    override: 'Ext.field.Text',
+
+    config: {
+        badFormatMessage: 'Wert passt nicht zum benötigten Format',
+        requiredMessage: 'Dieses Feld ist eine Pflichtangabe',
+        validationMessage: 'Ist im falschen Format'
+    }
+});

+ 12 - 0
ext/packages/modern-locale/overrides/de_DE/panel/Collapser.js

@@ -0,0 +1,12 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.panel.Collapser', {
+    override: 'Ext.panel.Collapser',
+
+    config:{
+        collapseToolText: "Ansicht einklappen",
+        expandToolText: "Ansicht ausklappen"
+    }
+});

+ 12 - 0
ext/packages/modern-locale/overrides/de_DE/panel/Date.js

@@ -0,0 +1,12 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.panel.Date', {
+    override: 'Ext.panel.Date',
+
+    config: {
+        nextText: 'Nächster Monat (STRG+Rechts)',
+        prevText: 'Vorheriger Monat (STRG+Links)'
+    }
+});

+ 14 - 0
ext/packages/modern-locale/overrides/de_DE/picker/Date.js

@@ -0,0 +1,14 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.picker.Date', {
+    override: 'Ext.picker.Date',
+
+    config: {
+        doneButton: 'Fertig',
+        monthText: 'Monat',
+        dayText: 'Tag',
+        yearText: 'Jahr'
+    }
+});

+ 12 - 0
ext/packages/modern-locale/overrides/de_DE/picker/Picker.js

@@ -0,0 +1,12 @@
+/**
+ * German/Germany Translation by Jens Pliester <jens.pliester@eyeworkers.de>
+ * 19 December 2017
+ */
+Ext.define('Ext.locale.de_DE.picker.Picker', {
+    override: 'Ext.picker.Picker',
+
+    config: {
+        doneButton: 'Fertig',
+        cancelButton: 'Abbrechen'
+    }
+});

+ 4 - 0
ext/packages/modern-locale/overrides/es_AR/Component.js

@@ -0,0 +1,4 @@
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.es_AR.Component", {
+    override: "Ext.Component"
+});

+ 49 - 0
ext/packages/modern-locale/overrides/es_AR/Panel.js

@@ -0,0 +1,49 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.Panel', {
+    override: 'Ext.Panel',
+
+    config: {
+        standardButtons: {
+            ok: {
+                text: 'OK'
+            },
+            abort: {
+                text: 'Abortar'
+            },
+            retry: {
+                text: 'Repetir'
+            },
+            ignore: {
+                text: 'Ignorar'
+            },
+            yes: {
+                text: 'Si'
+            },
+            no: {
+                text: 'No'
+            },
+            cancel: {
+                text: 'Cancelar'
+            },
+            apply: {
+                text: 'Aplicar'
+            },
+            save: {
+                text: 'Guardar'
+            },
+            submit: {
+                text: 'Enviar'
+            },
+            help: {
+                text: 'Ayuda'
+            },
+            close: {
+                text: 'Cerrar'
+            }
+        },
+        closeToolText: 'Cerrar panel'
+    }
+});

+ 14 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/Bound.js

@@ -0,0 +1,14 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Bound', {
+    override: 'Ext.data.validator.Bound',
+
+    config: {
+        emptyMessage: 'Debe estar presente',
+        minOnlyMessage: 'El valor debe ser mayor a {0}',
+        maxOnlyMessage: 'El valor debe ser menor a {0}',
+        bothMessage: 'El valor debe estar entre {0} y {1}'
+    }
+});

+ 9 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/CIDRv4.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.CIDRv4', {
+    override: 'Ext.data.validator.CIDRv4',
+
+    message: 'No es un bloque CIDR válido'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/CIDRv6.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.CIDRv6', {
+    override: 'Ext.data.validator.CIDRv6',
+
+    message: 'No es un bloque CIDR válido'
+});

+ 10 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/Currency.js

@@ -0,0 +1,10 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Currency', {
+    override: 'Ext.data.validator.Currency',
+
+    message: 'No es un valor de moneda válido'
+
+});

+ 9 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/DateTime.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.DateTime', {
+    override: 'Ext.data.validator.DateTime',
+
+    message: 'No es una fecha y hora válida'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/Email.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Email', {
+    override: 'Ext.data.validator.Email',
+
+    message: 'No es una dirección de e-mail válida'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/Exclusion.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Exclusion', {
+    override: 'Ext.data.validator.Exclusion',
+
+    message: 'Es un valor que ha sido excluido'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/Format.js

@@ -0,0 +1,11 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Format', {
+    override: 'Ext.data.validator.Format',
+
+    config:{
+        message: 'Está en el formato incorrecto'
+    }
+});

+ 9 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/IPAddress.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.IPAddress', {
+    override: 'Ext.data.validator.IPAddress',
+
+    message: 'No es una dirección IP válida'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/Inclusion.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Inclusion', {
+    override: 'Ext.data.validator.Inclusion',
+
+    message: 'No está en ka lista de valores aceptables'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/Length.js

@@ -0,0 +1,11 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Length', {
+    override: 'Ext.data.validator.Length',
+
+    minOnlyMessage: 'La longitud debe ser al menos {0}',
+    maxOnlyMessage: 'La longitud no debe ser mayor que {0}',
+    bothMessage: 'La longitud no debe estar entre {0} y {1}'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/Number.js

@@ -0,0 +1,11 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Number', {
+    override: 'Ext.data.validator.Number',
+
+    config:{
+        message: 'No es un número válido'
+    }
+});

+ 9 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/Phone.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Phone', {
+    override: 'Ext.data.validator.Phone',
+
+    message: 'No es un número de teléfono válido'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/Presence.js

@@ -0,0 +1,11 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Presence', {
+    override: 'Ext.data.validator.Presence',
+
+    config: {
+        message: 'Debe estar presente'
+    }
+});

+ 14 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/Range.js

@@ -0,0 +1,14 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Range', {
+    override: 'Ext.data.validator.Range',
+
+    minOnlyMessage: 'El valor debe ser mayor a {0}',
+    maxOnlyMessage: 'El valor debe ser menor a {0}',
+    bothMessage: 'El valor debe estar entre {0} y {1}',
+    config: {
+        nanMessage: 'Debe ser numérico'
+    }
+});

+ 9 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/Time.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Time', {
+    override: 'Ext.data.validator.Time',
+
+    message: 'No es una hora válida'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/es_AR/data/validator/Url.js

@@ -0,0 +1,9 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.data.validator.Url', {
+    override: 'Ext.data.validator.Url',
+
+    message: 'No es una URL válida'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/es_AR/dataview/Abstract.js

@@ -0,0 +1,11 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.dataview.Abstract', {
+    override: 'Ext.dataview.Abstract',
+
+    config:{
+        loadingText: 'Cargando...'
+    }
+});

+ 11 - 0
ext/packages/modern-locale/overrides/es_AR/dataview/EmptyText.js

@@ -0,0 +1,11 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.dataview.EmptyText', {
+    override: 'Ext.dataview.EmptyText',
+
+    config: {
+        html: 'No hay datos para mostrar'
+    }
+});

+ 11 - 0
ext/packages/modern-locale/overrides/es_AR/dataview/List.js

@@ -0,0 +1,11 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.dataview.List', {
+    override: 'Ext.dataview.List',
+
+    config:{
+        loadingText: 'Cargando...'
+    }
+});

+ 12 - 0
ext/packages/modern-locale/overrides/es_AR/dataview/plugin/ListPaging.js

@@ -0,0 +1,12 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.dataview.plugin.ListPaging', {
+    override: 'Ext.dataview.plugin.ListPaging',
+
+    config: {
+        loadMoreText: 'Cargar mas',
+        noMoreRecordsText: 'No hay mas registros'
+    }
+});

+ 47 - 0
ext/packages/modern-locale/overrides/es_AR/ext-locale-es_AR.js

@@ -0,0 +1,47 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Ouctubre", "Noviembre", "Diciembre"];
+
+        Ext.Date.getShortMonthName = function(month) {
+            return Ext.Date.monthNames[month].substring(0, 3);
+        };
+
+        Ext.Date.monthNumbers = {
+            Ene: 0,
+            Feb: 1,
+            Mar: 2,
+            Abr: 3,
+            May: 4,
+            Jun: 5,
+            Jul: 6,
+            Ago: 7,
+            Sep: 8,
+            Oct: 9,
+            Nov: 10,
+            Dic: 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"];
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: '.',
+            decimalSeparator: ',',
+            currencySign: '$',
+            // Peso Argentino
+            dateFormat: 'd/m/Y'
+        });
+        Ext.util.Format.arMoney = Ext.util.Format.currency;
+    }
+});
+

+ 10 - 0
ext/packages/modern-locale/overrides/es_AR/field/Date.js

@@ -0,0 +1,10 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.field.Date', {
+    override: 'Ext.field.Date',
+
+    minDateMessage: 'La fecha de este campo debe ser igual o posterior a {0}',
+    maxDateMessage: 'La fecha de este campo debe ser igual o anterior a {0}'
+});

+ 12 - 0
ext/packages/modern-locale/overrides/es_AR/field/Field.js

@@ -0,0 +1,12 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.field.Field', {
+    override: 'Ext.field.Field',
+
+    config: {
+        requiredMessage: 'Este campo es obligatorio',
+        validationMessage: 'Está en el formato incorrecto'
+    }
+});

+ 14 - 0
ext/packages/modern-locale/overrides/es_AR/field/Number.js

@@ -0,0 +1,14 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.field.Number', {
+    override: 'Ext.field.Number',
+
+    config: {
+        decimalsText: 'El número máximo de decimales es  {0}'
+    },
+    minValueText: 'El valor mínimo para este campo es {0}',
+    maxValueText: 'El valor máximo para este campo es {0}',
+    badFormatMessage: 'El valor no es un número válido'
+});

+ 13 - 0
ext/packages/modern-locale/overrides/es_AR/field/Text.js

@@ -0,0 +1,13 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.field.Text', {
+    override: 'Ext.field.Text',
+
+    config: {
+        badFormatMessage: 'El valor no coincide con el formato requerido',
+        requiredMessage: 'El campo es obligatorio',
+        validationMessage: 'Está en el formato incorrecto'
+    }
+});

+ 12 - 0
ext/packages/modern-locale/overrides/es_AR/panel/Collapser.js

@@ -0,0 +1,12 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.panel.Collapser', {
+    override: 'Ext.panel.Collapser',
+
+    config:{
+        collapseToolText: "Colapsar panel",
+        expandToolText: "Expandir panel"
+    }
+});

+ 12 - 0
ext/packages/modern-locale/overrides/es_AR/panel/Date.js

@@ -0,0 +1,12 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.panel.Date', {
+    override: 'Ext.panel.Date',
+
+    config: {
+        nextText: 'Mes Siguiente (Control+Derecha)',
+        prevText: 'Mes Anterior (Control+Izquierda)'
+    }
+});

+ 14 - 0
ext/packages/modern-locale/overrides/es_AR/picker/Date.js

@@ -0,0 +1,14 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.picker.Date', {
+    override: 'Ext.picker.Date',
+
+    config: {
+        doneButton: 'Listo',
+        monthText: 'Mes',
+        dayText: 'Día',
+        yearText: 'Año'
+    }
+});

+ 12 - 0
ext/packages/modern-locale/overrides/es_AR/picker/Picker.js

@@ -0,0 +1,12 @@
+/**
+ * Español/Argentina Translation by Martín Panizzo <martin17@gmail.com>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.es_AR.picker.Picker', {
+    override: 'Ext.picker.Picker',
+
+    config: {
+        doneButton: 'Listo',
+        cancelButton: 'Cancelar'
+    }
+});

+ 4 - 0
ext/packages/modern-locale/overrides/hu_HU/Component.js

@@ -0,0 +1,4 @@
+// This is needed until we can refactor all of the locales into individual files
+Ext.define("Ext.locale.hu_HU.Component", {
+    override: "Ext.Component"
+});

+ 49 - 0
ext/packages/modern-locale/overrides/hu_HU/Panel.js

@@ -0,0 +1,49 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.Panel', {
+    override: 'Ext.Panel',
+
+    config: {
+        standardButtons: {
+            ok: {
+                text: 'OK'
+            },
+            abort: {
+                text: 'Megszakít'
+            },
+            retry: {
+                text: 'Újra'
+            },
+            ignore: {
+                text: 'Kihagy'
+            },
+            yes: {
+                text: 'Igen'
+            },
+            no: {
+                text: 'Nem'
+            },
+            cancel: {
+                text: 'Mégsem'
+            },
+            apply: {
+                text: 'Alkalmaz'
+            },
+            save: {
+                text: 'Mentés'
+            },
+            submit: {
+                text: 'Beküldés'
+            },
+            help: {
+                text: 'Súgó'
+            },
+            close: {
+                text: 'Bezár'
+            }
+        },
+        closeToolText: 'Panel bezárása'
+    }
+});

+ 14 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Bound.js

@@ -0,0 +1,14 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Bound', {
+    override: 'Ext.data.validator.Bound',
+
+    config: {
+        emptyMessage: 'Meg kell adni',
+        minOnlyMessage: 'Minimális érték: {0}',
+        maxOnlyMessage: 'Maximális érték: {0}',
+        bothMessage: 'Az értéknek {0} és {1} közöttinek kell lennie'
+    }
+});

+ 10 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/CIDRv4.js

@@ -0,0 +1,10 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.
+define('Ext.locale.hu_HU.data.validator.CIDRv4', {
+    override: 'Ext.data.validator.CIDRv4',
+
+    message: 'Érvénytelen CIDR blokk'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/CIDRv6.js

@@ -0,0 +1,9 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.CIDRv6', {
+    override: 'Ext.data.validator.CIDRv6',
+
+    message: 'Érvénytelen CIDR blokk'
+});

+ 10 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Currency.js

@@ -0,0 +1,10 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Currency', {
+    override: 'Ext.data.validator.Currency',
+
+    message: 'Érvénytelen pénzmennyiség'
+
+});

+ 9 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Date.js

@@ -0,0 +1,9 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Date', {
+    override: 'Ext.data.validator.Date',
+
+    message: 'Érvénytelen formátumú dátum'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/DateTime.js

@@ -0,0 +1,9 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.DateTime', {
+    override: 'Ext.data.validator.DateTime',
+
+    message: 'Érvénytelen formátumú dátum/idő'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Email.js

@@ -0,0 +1,9 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Email', {
+    override: 'Ext.data.validator.Email',
+
+    message: 'Érvénytelen formátumú e-mail cím'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Exclusion.js

@@ -0,0 +1,9 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Exclusion', {
+    override: 'Ext.data.validator.Exclusion',
+
+    message: 'A megadott érték ki van zárva'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Format.js

@@ -0,0 +1,11 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Format', {
+    override: 'Ext.data.validator.Format',
+
+    config:{
+        message: 'Érvénytelen formátum'
+    }
+});

+ 9 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/IPAddress.js

@@ -0,0 +1,9 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.IPAddress', {
+    override: 'Ext.data.validator.IPAddress',
+
+    message: 'Érvénytelen formátumú IP cím'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Inclusion.js

@@ -0,0 +1,9 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Inclusion', {
+    override: 'Ext.data.validator.Inclusion',
+
+    message: 'Az érték nincs az elfogadható értékek listáján'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Length.js

@@ -0,0 +1,11 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Length', {
+    override: 'Ext.data.validator.Length',
+
+    minOnlyMessage: 'Minimum {0} hosszú értéket kell megadnod',
+    maxOnlyMessage: 'Az érték maximum {0} hosszú lehet',
+    bothMessage: 'Az érték hosszának {0} és {1} között kell lennie'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Number.js

@@ -0,0 +1,11 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Number', {
+    override: 'Ext.data.validator.Number',
+
+    config:{
+        message: 'Érvénytelen szám'
+    }
+});

+ 9 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Phone.js

@@ -0,0 +1,9 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Phone', {
+    override: 'Ext.data.validator.Phone',
+
+    message: 'Érvénytelen formátumú telefonszám'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Presence.js

@@ -0,0 +1,11 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Presence', {
+    override: 'Ext.data.validator.Presence',
+
+    config: {
+        message: 'Meg kell adni'
+    }
+});

+ 14 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Range.js

@@ -0,0 +1,14 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Range', {
+    override: 'Ext.data.validator.Range',
+
+    minOnlyMessage: 'Minimum érték: {0}',
+    maxOnlyMessage: 'Maximum érték {0}',
+    bothMessage: 'Az értéknek {0} és {1} között kell lennie',
+    config: {
+        nanMessage: 'Számot kell megadni'
+    }
+});

+ 9 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Time.js

@@ -0,0 +1,9 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Time', {
+    override: 'Ext.data.validator.Time',
+
+    message: 'Érvénytelen formátumú idő'
+});

+ 9 - 0
ext/packages/modern-locale/overrides/hu_HU/data/validator/Url.js

@@ -0,0 +1,9 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.data.validator.Url', {
+    override: 'Ext.data.validator.Url',
+
+    message: 'Érvénytelen formátumú URL'
+});

+ 11 - 0
ext/packages/modern-locale/overrides/hu_HU/dataview/Abstract.js

@@ -0,0 +1,11 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.pt_BR.dataview.Abstract', {
+    override: 'Ext.dataview.Abstract',
+
+    config:{
+        loadingText: 'Betöltés...'
+    }
+});

+ 11 - 0
ext/packages/modern-locale/overrides/hu_HU/dataview/EmptyText.js

@@ -0,0 +1,11 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.dataview.EmptyText', {
+    override: 'Ext.dataview.EmptyText',
+
+    config: {
+        html: 'Nincs megjeleníthető adat'
+    }
+});

+ 11 - 0
ext/packages/modern-locale/overrides/hu_HU/dataview/List.js

@@ -0,0 +1,11 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.dataview.List', {
+    override: 'Ext.dataview.List',
+
+    config:{
+        loadingText: 'Betöltés...'
+    }
+});

+ 12 - 0
ext/packages/modern-locale/overrides/hu_HU/dataview/plugin/ListPaging.js

@@ -0,0 +1,12 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.dataview.plugin.ListPaging', {
+    override: 'Ext.dataview.plugin.ListPaging',
+
+    config: {
+        loadMoreText: 'Továbbiak betöltése...',
+        noMoreRecordsText: 'Nincs több adat'
+    }
+});

+ 49 - 0
ext/packages/modern-locale/overrides/hu_HU/ext-locale-hu_HU.js

@@ -0,0 +1,49 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.onReady(function() {
+
+    if (Ext.Date) {
+        Ext.Date.monthNames = ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"];
+
+        Ext.Date.getShortMonthName = function(month) {
+            return Ext.Date.monthNames[month].substring(0, 3);
+        };
+
+        Ext.Date.monthNumbers = {
+            "Jan": 0,
+            "Feb": 1,
+            "Már": 2,
+            "Ápr": 3,
+            "Máj": 4,
+            "Jún": 5,
+            "Júl": 6,
+            "Aug": 7,
+            "Szep": 8,
+            "Okt": 9,
+            "Nov": 10,
+            "Dec": 11
+        };
+
+        Ext.Date.getMonthNumber = function(name) {
+            return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
+        };
+
+        Ext.Date.dayNames = ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"];
+    }
+
+    if (Ext.util && Ext.util.Format) {
+        Ext.apply(Ext.util.Format, {
+            thousandSeparator: ' ',
+            decimalSeparator: ',',
+            currencySign: 'Ft',
+            currencySpacer: ' ',
+            currentcyAtEnd: true,
+            // Hungarian Forint
+            dateFormat: 'Y. m. d.'
+        });
+        Ext.util.Format.huMoney = Ext.util.Format.currency;
+    }
+});
+

+ 10 - 0
ext/packages/modern-locale/overrides/hu_HU/field/Date.js

@@ -0,0 +1,10 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.field.Date', {
+    override: 'Ext.field.Date',
+
+    minDateMessage: 'A megadott dátumnak {0} vagy ez utáninak kell lennie',
+    maxDateMessage: 'A megadott dátumnak {0} vagy ez elöttinek kell lennie'
+});

+ 12 - 0
ext/packages/modern-locale/overrides/hu_HU/field/Field.js

@@ -0,0 +1,12 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.field.Field', {
+    override: 'Ext.field.Field',
+
+    config: {
+        requiredMessage: 'Ezt a mezőt kötelező kitölteni',
+        validationMessage: 'Érvénytelen formátumú a megadott érték'
+    }
+});

+ 13 - 0
ext/packages/modern-locale/overrides/hu_HU/field/Number.js

@@ -0,0 +1,13 @@
+/**
+ * Hungarian Translation by Zoltan Lippai <zoli@lippai.net>
+ * 11 October 2017
+ */
+Ext.define('Ext.locale.hu_HU.field.Number', {
+    override: 'Ext.field.Number',
+
+    config: {
+        decimalsText: 'Maximálisan megadható tizedesjegyek száma: {0}'
+    },
+    minValueText: 'A mező értéke minimum {0} kell hogy legyen',
+    maxValueText: 'A mező értéke maximum {0} lehet'
+});

Some files were not shown because too many files changed in this diff