Browse Source

#787: Add Thai lang pack; Thailand phone/id validator, thanks to @figgaro

Phuoc Nguyen 11 years ago
parent
commit
3cb898a046
61 changed files with 551 additions and 17 deletions
  1. 2 0
      CHANGELOG.md
  2. 1 0
      CONTRIBUTORS.md
  3. 1 1
      dist/css/bootstrapValidator.min.css
  4. 34 4
      dist/js/bootstrapValidator.js
  5. 3 3
      dist/js/bootstrapValidator.min.js
  6. 2 0
      dist/js/language/ar_MA.js
  7. 2 0
      dist/js/language/be_FR.js
  8. 2 0
      dist/js/language/be_NL.js
  9. 2 0
      dist/js/language/bg_BG.js
  10. 2 0
      dist/js/language/cs_CZ.js
  11. 2 0
      dist/js/language/da_DK.js
  12. 2 0
      dist/js/language/de_DE.js
  13. 2 0
      dist/js/language/en_US.js
  14. 2 0
      dist/js/language/es_CL.js
  15. 2 0
      dist/js/language/es_ES.js
  16. 2 0
      dist/js/language/fa_IR.js
  17. 2 0
      dist/js/language/fr_FR.js
  18. 2 0
      dist/js/language/gr_EL.js
  19. 2 0
      dist/js/language/hu_HU.js
  20. 2 0
      dist/js/language/it_IT.js
  21. 2 0
      dist/js/language/ja_JP.js
  22. 2 0
      dist/js/language/nl_NL.js
  23. 2 0
      dist/js/language/pl_PL.js
  24. 2 0
      dist/js/language/pt_BR.js
  25. 2 0
      dist/js/language/ro_RO.js
  26. 2 0
      dist/js/language/sv_SE.js
  27. 349 0
      dist/js/language/th_TH.js
  28. 2 0
      dist/js/language/tr_TR.js
  29. 2 0
      dist/js/language/vi_VN.js
  30. 2 0
      dist/js/language/zh_CN.js
  31. 3 1
      dist/js/language/zh_TW.js
  32. 2 0
      src/js/language/ar_MA.js
  33. 2 0
      src/js/language/be_FR.js
  34. 2 0
      src/js/language/be_NL.js
  35. 2 0
      src/js/language/bg_BG.js
  36. 2 0
      src/js/language/cs_CZ.js
  37. 2 0
      src/js/language/da_DK.js
  38. 2 0
      src/js/language/de_DE.js
  39. 2 0
      src/js/language/en_US.js
  40. 2 0
      src/js/language/es_CL.js
  41. 2 0
      src/js/language/es_ES.js
  42. 2 0
      src/js/language/fa_IR.js
  43. 2 0
      src/js/language/fr_FR.js
  44. 2 0
      src/js/language/gr_EL.js
  45. 2 0
      src/js/language/hu_HU.js
  46. 2 0
      src/js/language/it_IT.js
  47. 2 0
      src/js/language/ja_JP.js
  48. 2 0
      src/js/language/nl_NL.js
  49. 2 0
      src/js/language/pl_PL.js
  50. 2 0
      src/js/language/pt_BR.js
  51. 2 0
      src/js/language/ro_RO.js
  52. 2 0
      src/js/language/sv_SE.js
  53. 3 1
      src/js/language/th_TH.js
  54. 2 0
      src/js/language/tr_TR.js
  55. 2 0
      src/js/language/vi_VN.js
  56. 2 0
      src/js/language/zh_CN.js
  57. 3 1
      src/js/language/zh_TW.js
  58. 9 5
      src/js/validator/id.js
  59. 1 1
      src/js/validator/phone.js
  60. 23 0
      test/spec.js
  61. 23 0
      test/spec/validator/id.js

+ 2 - 0
CHANGELOG.md

@@ -11,6 +11,7 @@ __New Features__
 * [#760](https://github.com/nghuuphuoc/bootstrapvalidator/pull/760): Add Romania phone number validator, thanks to [@adrian-dks](https://github.com/adrian-dks)
 * [#761](https://github.com/nghuuphuoc/bootstrapvalidator/pull/761): Add Romania postal code validator, thanks to [@adrian-dks](https://github.com/adrian-dks)
 * [#785](https://github.com/nghuuphuoc/bootstrapvalidator/pull/785): Add Denmark phone number validator, thanks to [@emilchristensen](https://github.com/emilchristensen)
+* [#787](https://github.com/nghuuphuoc/bootstrapvalidator/pull/787): Add Thailand phone number and ID validator, thanks to [@emilchristensen](https://github.com/emilchristensen)
 
 __Changes__
 * [#753](https://github.com/nghuuphuoc/bootstrapvalidator/issues/753): Change the default type of [remote](http://bootstrapvalidator.com/validators/remote/) validator to GET
@@ -43,6 +44,7 @@ __Language Packages__
 * [#729](https://github.com/nghuuphuoc/bootstrapvalidator/pull/729): Persian (Farsi) language package, thanks to [@i0](https://github.com/i0)
 * [#779](https://github.com/nghuuphuoc/bootstrapvalidator/pull/779): Romanian language package, thanks to [@filipac](https://github.com/filipac)
 * [#788](https://github.com/nghuuphuoc/bootstrapvalidator/pull/788): Fully re-translated Simplified Chinese language package, thanks to [@shamiao](https://github.com/shamiao)
+* [#787](https://github.com/nghuuphuoc/bootstrapvalidator/pull/787): Thai language package, thanks to [@figgaro](https://github.com/figgaro)
 
 ## v0.5.1 (2014-08-22)
 

+ 1 - 0
CONTRIBUTORS.md

@@ -26,6 +26,7 @@ I would like to give big thanks to the following contributors:
 * [@etorres](https://github.com/etorres)
 * [@evilchili](https://github.com/evilchili)
 * [@fhferreira](https://github.com/fhferreira)
+* [@figgaro](https://github.com/figgaro)
 * [@filipac](https://github.com/filipac)
 * [@Francismori7](https://github.com/Francismori7)
 * [@gercheq](https://github.com/gercheq)

+ 1 - 1
dist/css/bootstrapValidator.min.css

@@ -2,7 +2,7 @@
  * BootstrapValidator (http://bootstrapvalidator.com)
  * The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3
  *
- * @version     v0.5.2-dev, built on 2014-09-06 8:17:17 AM
+ * @version     v0.5.2-dev, built on 2014-09-06 8:59:12 AM
  * @author      https://twitter.com/nghuuphuoc
  * @copyright   (c) 2013 - 2014 Nguyen Huu Phuoc
  * @license     MIT

+ 34 - 4
dist/js/bootstrapValidator.js

@@ -2,7 +2,7 @@
  * BootstrapValidator (http://bootstrapvalidator.com)
  * The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3
  *
- * @version     v0.5.2-dev, built on 2014-09-06 8:17:17 AM
+ * @version     v0.5.2-dev, built on 2014-09-06 8:59:12 AM
  * @author      https://twitter.com/nghuuphuoc
  * @copyright   (c) 2013 - 2014 Nguyen Huu Phuoc
  * @license     MIT
@@ -3232,6 +3232,7 @@
             SI: 'Slovenia',
             SK: 'Slovakia',
             SM: 'San Marino',
+            TH: 'Thailand',
             ZA: 'South Africa'
         }
     });
@@ -3245,7 +3246,7 @@
         // Supported country codes
         COUNTRY_CODES: [
             'BA', 'BG', 'BR', 'CH', 'CL', 'CZ', 'DK', 'EE', 'ES', 'FI', 'HR', 'IE', 'IS', 'LT', 'LV', 'ME', 'MK', 'NL',
-            'RO', 'RS', 'SE', 'SI', 'SK', 'SM', 'ZA'
+            'RO', 'RS', 'SE', 'SI', 'SK', 'SM', 'TH', 'ZA'
         ],
 
         /**
@@ -3989,6 +3990,29 @@
         },
 
         /**
+         * Validate Thailand citizen number
+         * Examples:
+         * - Valid: 7145620509547, 3688699975685, 2368719339716
+         * - Invalid: 1100800092310
+         *
+         * @see http://en.wikipedia.org/wiki/National_identification_number#Thailand
+         * @param {String} value The ID
+         * @returns {Boolean}
+         */
+        _th: function(value) {
+            if (value.length !== 13) {
+                return false;
+            }
+
+            var sum = 0;
+            for (var i = 0; i < 12; i++) {
+                sum += parseInt(value.charAt(i), 10) * (13 - i);
+            }
+
+            return (11 - sum % 11) % 10 === parseInt(value.charAt(12), 10);
+        },
+
+        /**
          * Validate South African ID
          * Example:
          * - Valid: 8001015009087
@@ -4756,6 +4780,7 @@
             MA: 'Morocco',
             PK: 'Pakistan',
             RO: 'Romania',
+            TH: 'Thailand',
             US: 'USA'
         }
     });
@@ -4767,7 +4792,7 @@
         },
 
         // The supported countries
-        COUNTRY_CODES: ['BR', 'CN', 'DK', 'ES', 'FR', 'GB', 'MA', 'PK', 'RO', 'US'],
+        COUNTRY_CODES: ['BR', 'CN', 'DK', 'ES', 'FR', 'GB', 'MA', 'PK', 'RO', 'TH', 'US'],
 
         /**
          * Return true if the input value contains a valid phone number for the country
@@ -4862,7 +4887,12 @@
         		case 'RO':
         		    // All mobile network and land line
         		    isValid = (/^(\+4|)?(07[0-8]{1}[0-9]{1}|02[0-9]{2}|03[0-9]{2}){1}?(\s|\.|\-)?([0-9]{3}(\s|\.|\-|)){2}$/g).test(value);
-                    break;
+        		    break;
+        		    
+                case 'TH':
+        		    // http://regex101.com/r/vM5mZ4/2
+        		    isValid = (/^0\(?([6|8-9]{2})*-([0-9]{3})*-([0-9]{4})$/).test(value);
+        		    break;
 
                 case 'US':
                 /* falls through */

File diff suppressed because it is too large
+ 3 - 3
dist/js/bootstrapValidator.min.js


+ 2 - 0
dist/js/language/ar_MA.js

@@ -175,6 +175,7 @@
                 SI: 'سلوفينيا',
                 SK: 'سلوفاكيا',
                 SM: 'سان مارينو',
+                TH: 'تايلاند',
                 ZA: 'جنوب أفريقيا'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'المغرب',
                 PK: 'باكستان',
                 RO: 'رومانيا',
+                TH: 'تايلاند',
                 US: 'الولايات المتحدة'
             }
         },

+ 2 - 0
dist/js/language/be_FR.js

@@ -175,6 +175,7 @@
                 SI: 'Slovénie',
                 SK: 'Slovaquie',
                 SM: 'Saint-Marin',
+                TH: 'Thaïlande',
                 ZA: 'Afrique du Sud'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Maroc',
                 PK: 'Pakistan',
                 RO: 'Roumanie',
+                TH: 'Thaïlande',
                 US: 'USA'
             }
         },

+ 2 - 0
dist/js/language/be_NL.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenië',
                 SK: 'Slowakije',
                 SM: 'San Marino',
+                TH: 'Thailand',
                 ZA: 'Zuid-Afrika'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marokko',
                 PK: 'Pakistan',
                 RO: 'Roemenië',
+                TH: 'Thailand',
                 US: 'VS'
             }
         },

+ 2 - 0
dist/js/language/bg_BG.js

@@ -175,6 +175,7 @@
                 SI: 'Словения',
                 SK: 'Словакия',
                 SM: 'San Marino',
+                TH: 'Тайланд',
                 ZA: 'Южна Африка'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Мароко',
                 PK: 'Пакистан',
                 RO: 'Румъния',
+                TH: 'Тайланд',
                 US: 'САЩ'
             }
         },

+ 2 - 0
dist/js/language/cs_CZ.js

@@ -175,6 +175,7 @@
                 SI: 'Slovinsko',
                 SK: 'Slovensko',
                 SM: 'San Marino',
+                TH: 'Thajsko',
                 ZA: 'Jižní Afriku'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Maroko',
                 PK: 'Pákistán',
                 RO: 'Rumunsko',
+                TH: 'Thajsko',
                 US: 'Spojené Státy Americké'
             }
         },

+ 2 - 0
dist/js/language/da_DK.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenien',
                 SK: 'Slovakiet',
                 SM: 'San Marino',
+                TH: 'Thailand',
                 ZA: 'Sydafrika'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marokko',
                 PK: 'Pakistan',
                 RO: 'Rumænien',
+                TH: 'Thailand',
                 US: 'USA'
             }
         },

+ 2 - 0
dist/js/language/de_DE.js

@@ -175,6 +175,7 @@
                 SI: 'Slowenien',
                 SK: 'Slowakei',
                 SM: 'San Marino',
+                TH: 'Thailand',
                 ZA: 'Südafrika'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marokko',
                 PK: 'Pakistan',
                 RO: 'Rumänien',
+                TH: 'Thailand',
                 US: 'Vereinigte Staaten von Amerika'
             }
         },

+ 2 - 0
dist/js/language/en_US.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenia',
                 SK: 'Slovakia',
                 SM: 'San Marino',
+                TH: 'Thailand',
                 ZA: 'South Africa'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Morocco',
                 PK: 'Pakistan',
                 RO: 'Romania',
+                TH: 'Thailand',
                 US: 'USA'
             }
         },

+ 2 - 0
dist/js/language/es_CL.js

@@ -175,6 +175,7 @@
                 SI: 'Eslovenia',
                 SK: 'Eslovaquia',
                 SM: 'San Marino',
+                TH: 'Tailandia',
                 ZA: 'Sudáfrica'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marruecos',
                 PK: 'Pakistán',
                 RO: 'Rumania',
+                TH: 'Tailandia',
                 US: 'Estados Unidos'
             }
         },

+ 2 - 0
dist/js/language/es_ES.js

@@ -175,6 +175,7 @@
                 SI: 'Eslovenia',
                 SK: 'Eslovaquia',
                 SM: 'San Marino',
+                TH: 'Tailandia',
                 ZA: 'Sudáfrica'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marruecos',
                 PK: 'Pakistán',
                 RO: 'Rumania',
+                TH: 'Tailandia',
                 US: 'Estados Unidos'
             }
         },

+ 2 - 0
dist/js/language/fa_IR.js

@@ -175,6 +175,7 @@
                 SI: 'اسلوونی',
                 SK: 'اسلواکی',
                 SM: 'سان مارینو',
+                TH: 'تایلند',
                 ZA: 'آفریقای جنوبی'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'مراکش',
                 PK: 'پاکستان',
                 RO: 'رومانی',
+                TH: 'تایلند',
                 US: 'ایالات متحده آمریکا'
             }
         },

+ 2 - 0
dist/js/language/fr_FR.js

@@ -175,6 +175,7 @@
                 SI: 'Slovénie',
                 SK: 'Slovaquie',
                 SM: 'Saint-Marin',
+                TH: 'Thaïlande',
                 ZA: 'Afrique du Sud'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Maroc',
                 PK: 'Pakistan',
                 RO: 'Roumanie',
+                TH: 'Thaïlande',
                 US: 'USA'
             }
         },

+ 2 - 0
dist/js/language/gr_EL.js

@@ -175,6 +175,7 @@
                 SI: 'Σλοβενία',
                 SK: 'Σλοβακία',
                 SM: 'Σαν Μαρίνο',
+                TH: 'Ταϊλάνδη',
                 ZA: 'Νότια Αφρική'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Μαρόκο',
                 PK: 'Πακιστάν',
                 RO: 'Ρουμανία',
+                TH: 'Ταϊλάνδη',
                 US: 'ΗΠΑ'
             }
         },

+ 2 - 0
dist/js/language/hu_HU.js

@@ -175,6 +175,7 @@
                 SI: 'szlovén',
                 SK: 'szlovák',
                 SM: 'San Marino beli',
+                TH: 'thaiföld',
                 ZA: 'dél afrikai'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marokkó',
                 PK: 'Pakisztán',
                 RO: 'Románia',
+                TH: 'thaiföld',
                 US: 'Egyesült Államok beli'
             }
         },

+ 2 - 0
dist/js/language/it_IT.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenia',
                 SK: 'Slovacchia',
                 SM: 'San Marino',
+                TH: 'Thailandia',
                 ZA: 'Sudafrica'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marocco',
                 PK: 'Pakistan',
                 RO: 'Romania',
+                TH: 'Thailandia',
                 US: 'Stati Uniti d\'America'
             }
         },

+ 2 - 0
dist/js/language/ja_JP.js

@@ -175,6 +175,7 @@
                 SI: 'スロベニア',
                 SK: 'スロバキア',
                 SM: 'サン·マリノ',
+                TH: 'タイ国',
                 ZA: '南アフリカ'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'モロッコ',
                 PK: 'パキスタン',
                 RO: 'ルーマニア',
+                TH: 'タイ国',
                 US: 'アメリカ'
             }
         },

+ 2 - 0
dist/js/language/nl_NL.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenië',
                 SK: 'Slowakije',
                 SM: 'San Marino',
+                TH: 'Thailand',
                 ZA: 'Zuid-Afrika'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marokko',
                 PK: 'Pakistan',
                 RO: 'Roemenië',
+                TH: 'Thailand',
                 US: 'VS'
             }
         },

+ 2 - 0
dist/js/language/pl_PL.js

@@ -175,6 +175,7 @@
                 SI: 'Słowenia',
                 SK: 'Słowacja',
                 SM: 'San Marino',
+                TH: 'Tajlandia',
                 ZA: 'Republika Południowej Afryki'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Maroko',
                 PK: 'Pakistan',
                 RO: 'Rumunia',
+                TH: 'Tajlandia',
                 US: 'USA'
             }
         },

+ 2 - 0
dist/js/language/pt_BR.js

@@ -175,6 +175,7 @@
                 SI: 'Eslovênia',
                 SK: 'Eslováquia',
                 SM: 'San Marino',
+                TH: 'Tailândia',
                 ZA: 'África do Sul'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marrocos',
                 PK: 'Paquistão',
                 RO: 'Roménia',
+                TH: 'Tailândia',
                 US: 'EUA'
             }
         },

+ 2 - 0
dist/js/language/ro_RO.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenia',
                 SK: 'Slovacia',
                 SM: 'San Marino',
+                TH: 'Thailanda',
                 ZA: 'Africa de Sud'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Maroc',
                 PK: 'Pakistan',
                 RO: 'Romania',
+                TH: 'Thailanda',
                 US: 'SUA'
             }
         },

+ 2 - 0
dist/js/language/sv_SE.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenien',
                 SK: 'Slovakien',
                 SM: 'San Marino',
+                TH: 'Thailand',
                 ZA: 'Sydafrika'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marocko',
                 PK: 'Pakistan',
                 RO: 'Rumänien',
+                TH: 'Thailand',
                 US: 'USA'
             }
         },

+ 349 - 0
dist/js/language/th_TH.js

@@ -0,0 +1,349 @@
+(function($) {
+    /**
+     * Default English package. It's included in the dist, so you do NOT need to include it to your head tag
+     * The only reason I put it here is that you can clone it, and translate it into your language
+     */
+    $.fn.bootstrapValidator.i18n = $.extend(true, $.fn.bootstrapValidator.i18n, {
+        base64: {
+            'default': 'กรุณาระบุ base 64 encoded ให้ถูกต้อง'
+        },
+        between: {
+            'default': 'กรุณาระบุค่าระหว่าง %s และ %s',
+            notInclusive: 'กรุณาระบุค่าระหว่าง %s และ %s เท่านั้น'
+        },
+        callback: {
+            'default': 'กรุณาระบุค่าให้ถูก'
+        },
+        choice: {
+            'default': 'กรุณาระบุค่าให้ถูกต้อง',
+            less: 'โปรดเลือกตัวเลือก %s ที่ต่ำสุด',
+            more: 'โปรดเลือกตัวเลือก %s ที่สูงสุด',
+            between: 'กรุณาเลือก %s - %s ที่มีอยู่'
+        },
+        creditCard: {
+            'default': 'กรุณาระบุเลขที่บัตรเครดิตให้ถูกต้อง'
+        },
+        cusip: {
+            'default': 'กรุณาระบุหมายเลข CUSIP ให้ถูกต้อง'
+        },
+        cvv: {
+            'default': 'กรุณาระบุ CVV ให้ถูกต้อง'
+        },
+        date: {
+            'default': 'กรุณาระบุวันที่ให้ถูกต้อง'
+        },
+        different: {
+            'default': 'กรุณาระบุค่าอื่นที่แตกต่าง'
+        },
+        digits: {
+             'default': 'กรุณาระบุตัวเลขเท่านั้น'
+        },
+        ean: {
+            'default': 'กรุณาระบุหมายเลข EAN ให้ถูกต้อง'
+        },
+        emailAddress: {
+            'default': 'กรุณาระบุอีเมล์ให้ถูกต้อง'
+        },
+        file: {
+            'default': 'กรุณาเลือกไฟล์'
+        },
+        greaterThan: {
+            'default': 'กรุณาระบุค่ามากกว่าหรือเท่ากับ %s',
+            notInclusive: 'กรุณาระบุค่ามากกว่า %s'
+        },
+        grid: {
+            'default': 'กรุณาระบุหมายลข GRId ให้ถูกต้อง'
+        },
+        hex: {
+            'default': 'กรุณาระบุเลขฐานสิบหกให้ถูกต้อง'
+        },
+        hexColor: {
+            'default': 'กรุณาระบุค่าสี hex color ให้ถูกต้อง'
+        },
+        iban: {
+            'default': 'กรุณาระบุหมายเลข IBAN ให้ถูกต้อง',
+            countryNotSupported: 'ประเทศ %s ไม่รองรับ',
+            country: 'กรุณาระบุหมายเลข IBAN ใน %s',
+            countries: {
+                AD: 'อันดอร์รา',
+                AE: 'สหรัฐอาหรับเอมิเรตส์',
+                AL: 'แอลเบเนีย',
+                AO: 'แองโกลา',
+                AT: 'ออสเตรีย',
+                AZ: 'อาเซอร์ไบจาน',
+                BA: 'บอสเนียและเฮอร์เซโก',
+                BE: 'ประเทศเบลเยียม',
+                BF: 'บูร์กินาฟาโซ',
+                BG: 'บัลแกเรีย',
+                BH: 'บาห์เรน',
+                BI: 'บุรุนดี',
+                BJ: 'เบนิน',
+                BR: 'บราซิล',
+                CH: 'สวิตเซอร์แลนด์',
+                CI: 'ไอวอรี่โคสต์',
+                CM: 'แคเมอรูน',
+                CR: 'คอสตาริกา',
+                CV: 'เคปเวิร์ด',
+                CY: 'ไซปรัส',
+                CZ: 'สาธารณรัฐเชค',
+                DE: 'เยอรมนี',
+                DK: 'เดนมาร์ก',
+                DO: 'โดมินิกา',
+                DZ: 'แอลจีเรีย',
+                EE: 'เอสโตเนีย',
+                ES: 'สเปน',
+                FI: 'ฟินแลนด์',
+                FO: 'หมู่เกาะแฟโร',
+                FR: 'ฝรั่งเศส',
+                GB: 'สหราชอาณาจักร',
+                GE: 'จอร์เจีย',
+                GI: 'ยิบรอลตา',
+                GL: 'กรีนแลนด์',
+                GR: 'กรีซ',
+                GT: 'กัวเตมาลา',
+                HR: 'โครเอเชีย',
+                HU: 'ฮังการี',
+                IE: 'ไอร์แลนด์',
+                IL: 'อิสราเอล',
+                IR: 'อิหร่าน',
+                IS: 'ไอซ์',
+                IT: 'อิตาลี',
+                JO: 'จอร์แดน',
+                KW: 'คูเวต',
+                KZ: 'คาซัคสถาน',
+                LB: 'เลบานอน',
+                LI: 'Liechtenstein',
+                LT: 'ลิทัวเนีย',
+                LU: 'ลักเซมเบิร์ก',
+                LV: 'ลัตเวีย',
+                MC: 'โมนาโก',
+                MD: 'มอลโดวา',
+                ME: 'มอนเตเนโก',
+                MG: 'มาดากัสการ์',
+                MK: 'มาซิโดเนีย',
+                ML: 'มาลี',
+                MR: 'มอริเตเนีย',
+                MT: 'มอลตา',
+                MU: 'มอริเชียส',
+                MZ: 'โมซัมบิก',
+                NL: 'เนเธอร์แลนด์',
+                NO: 'นอร์เวย์',
+                PK: 'ปากีสถาน',
+                PL: 'โปแลนด์',
+                PS: 'ปาเลสไตน์',
+                PT: 'โปรตุเกส',
+                QA: 'กาตาร์',
+                RO: 'โรมาเนีย',
+                RS: 'เซอร์เบีย',
+                SA: 'ซาอุดิอารเบีย',
+                SE: 'สวีเดน',
+                SI: 'สโลวีเนีย',
+                SK: 'สโลวาเกีย',
+                SM: 'ซานมาริโน',
+                SN: 'เซเนกัล',
+                TN: 'ตูนิเซีย',
+                TR: 'ตุรกี',
+                VG: 'หมู่เกาะบริติชเวอร์จิน'
+            }
+        },
+        id: {
+            'default': 'โปรดระบุเลขบัตรประจำตัวประชาชนให้ถูกต้อง',
+            countryNotSupported: 'ประเทศ %s ไม่รองรับ',
+            country: 'โปรดระบุเลขบัตรประจำตัวประชาชนใน %s ให้ถูกต้อง',
+            countries: {
+                BA: 'บอสเนียและเฮอร์เซโก',
+                BG: 'บัลแกเรีย',
+                BR: 'บราซิล',
+                CH: 'วิตเซอร์แลนด์',
+                CL: 'ชิลี',
+                CZ: 'เช็ก',
+                DK: 'เดนมาร์ก',
+                EE: 'เอสโตเนีย',
+                ES: 'สเปน',
+                FI: 'ฟินแลนด์',
+                HR: 'โครเอเชีย',
+                IE: 'ไอร์แลนด์',
+                IS: 'ไอซ์',
+                LT: 'ลิทัวเนีย',
+                LV: 'ลัตเวีย',
+                ME: 'มอนเตเนโก',
+                MK: 'มาซิโดเนีย',
+                NL: 'เนเธอร์แลนด์',
+                RO: 'โรมาเนีย',
+                RS: 'เซอร์เบีย',
+                SE: 'สวีเดน',
+                SI: 'สโลวีเนีย',
+                SK: 'สโลวาเกีย',
+                SM: 'ซานมาริโน',
+                TH: 'ไทย',
+                ZA: 'แอฟริกาใต้'
+            }
+        },
+        identical: {
+            'default': 'โปรดระบุค่าให้ตรง'
+        },
+        imei: {
+            'default': 'โปรดระบุหมายเลข IMEI ให้ถูกต้อง'
+        },
+        imo: {
+            'default': 'โปรดระบุหมายเลข IMO ให้ถูกต้อง'
+        },
+        integer: {
+            'default': 'โปรดระบุตัวเลขให้ถูกต้อง'
+        },
+        ip: {
+            'default': 'โปรดระบุ IP address ให้ถูกต้อง',
+            ipv4: 'โปรดระบุ IPv4 address ให้ถูกต้อง',
+            ipv6: 'โปรดระบุ IPv6 address ให้ถูกต้อง'
+        },
+        isbn: {
+            'default': 'โปรดระบุหมายเลข ISBN ให้ถูกต้อง'
+        },
+        isin: {
+            'default': 'โปรดระบุหมายเลข ISIN ให้ถูกต้อง'
+        },
+        ismn: {
+            'default': 'โปรดระบุหมายเลข ISMN ให้ถูกต้อง'
+        },
+        issn: {
+            'default': 'โปรดระบุหมายเลข ISSN ให้ถูกต้อง'
+        },
+        lessThan: {
+            'default': 'โปรดระบุค่าน้อยกว่าหรือเท่ากับ %s',
+            notInclusive: 'โปรดระบุค่าน้อยกว่า %s'
+        },
+        mac: {
+            'default': 'โปรดระบุหมายเลข MAC address ให้ถูกต้อง'
+        },
+        meid: {
+            'default': 'โปรดระบุหมายเลข MEID ให้ถูกต้อง'
+        },
+        notEmpty: {
+            'default': 'โปรดระบุค่า'
+        },
+        numeric: {
+            'default': 'โปรดระบุเลขหน่วยหรือจำนวนทศนิยม ให้ถูกต้อง'
+        },
+        phone: {
+            'default': 'โปรดระบุหมายเลขโทรศัพท์ให้ถูกต้อง',
+            countryNotSupported: 'ประเทศ %s ไม่รองรับ',
+            country: 'โปรดระบุหมายเลขโทรศัพท์ใน %s ให้ถูกต้อง',
+            countries: {
+                BR: 'บราซิล',
+                CN: 'จีน',
+                DK: 'เดนมาร์ก',
+                ES: 'สเปน',
+                FR: 'ฝรั่งเศส',
+                GB: 'สหราชอาณาจักร',
+                MA: 'โมร็อกโก',
+                PK: 'ปากีสถาน',
+                RO: 'โรมาเนีย',
+                TH: 'ไทย',
+                US: 'สหรัฐอเมริกา'
+            }
+        },
+        regexp: {
+            'default': 'โปรดระบุค่าให้ตรงกับรูปแบบที่กำหนด'
+        },
+        remote: {
+            'default': 'โปรดระบุค่าให้ถูกต้อง'
+        },
+        rtn: {
+            'default': 'โปรดระบุหมายเลข RTN ให้ถูกต้อง'
+        },
+        sedol: {
+            'default': 'โปรดระบุหมายเลข SEDOL ให้ถูกต้อง'
+        },
+        siren: {
+            'default': 'โปรดระบุหมายเลข SIREN ให้ถูกต้อง'
+        },
+        siret: {
+            'default': 'โปรดระบุหมายเลข SIRET ให้ถูกต้อง'
+        },
+        step: {
+            'default': 'โปรดระบุลำดับของ %s'
+        },
+        stringCase: {
+            'default': 'โปรดระบุตัวอักษรพิมพ์เล็กเท่านั้น',
+            upper: 'โปรดระบุตัวอักษรพิมพ์ใหญ่เท่านั้น'
+        },
+        stringLength: {
+            'default': 'ค่าที่ระบุยังไม่ครบตามจำนวนที่กำหนด',
+            less: 'โปรดระบุค่าตัวอักษรน้อยกว่า %s ตัว',
+            more: 'โปรดระบุค่าตัวอักษรมากกว่า %s ตัว',
+            between: 'โปรดระบุค่าตัวอักษรระหว่าง %s ถึง %s ตัวอักษร'
+        },
+        uri: {
+            'default': 'โปรดระบุค่า URI ให้ถูกต้อง'
+        },
+        uuid: {
+            'default': 'โปรดระบุหมายเลข UUID ให้ถูกต้อง',
+            version: 'โปรดระบุหมายเลข UUID ในเวอร์ชั่น %s'
+        },
+        vat: {
+            'default': 'โปรดระบุจำนวนภาษีมูลค่าเพิ่ม',
+            countryNotSupported: 'ประเทศ %s ไม่รองรับ',
+            country: 'โปรดระบุจำนวนภาษีมูลค่าเพิ่มใน %s',
+            countries: {
+                AT: 'ออสเตรีย',
+                BE : 'เบลเยี่ยม',
+                BG: 'บัลแกเรีย',
+                BR: 'บราซิล',
+                CH: 'วิตเซอร์แลนด์',
+                CY: 'ไซปรัส',
+                CZ: 'เช็ก',
+                DE: 'เยอรมัน',
+                DK: 'เดนมาร์ก',
+                EE: 'เอสโตเนีย',
+                ES: 'สเปน',
+                FI: 'ฟินแลนด์',
+                FR: 'ฝรั่งเศส',
+                GB: 'สหราชอาณาจักร',
+                GR: 'กรีซ',
+                EL: 'กรีซ',
+                HU: 'ฮังการี',
+                HR: 'โครเอเชีย',
+                IE: 'ไอร์แลนด์',
+                IS: 'ไอซ์',
+                IT: 'อิตาลี',
+                LT: 'ลิทัวเนีย',
+                LU: 'ลักเซมเบิร์ก',
+                LV: 'ลัตเวีย',
+                MT: 'มอลตา',
+                NL: 'เนเธอร์แลนด์',
+                NO: 'นอร์เวย์',
+                PL: 'โปแลนด์',
+                PT: 'โปรตุเกส',
+                RO: 'โรมาเนีย',
+                RU: 'รัสเซีย',
+                RS: 'เซอร์เบีย',
+                SE: 'สวีเดน',
+                SI: 'สโลวีเนีย',
+                SK: 'สโลวาเกีย',
+                VE: 'เวเนซูเอลา',
+                ZA: 'แอฟริกาใต้'
+            }
+        },
+        vin: {
+            'default': 'โปรดระบุหมายเลข VIN ให้ถูกต้อง'
+        },
+        zipCode: {
+            'default': 'โปรดระบุรหัสไปรษณีย์ให้ถูกต้อง',
+            countryNotSupported: 'ประเทศ %s ไม่รองรับ',
+            country: 'โปรดระบุรหัสไปรษณีย์ให้ถูกต้องใน %s',
+            countries: {
+                BR: 'บราซิล',
+                CA: 'แคนาดา',
+                DK: 'เดนมาร์ก',
+                GB: 'สหราชอาณาจักร',
+                IT: 'อิตาลี',
+                MA: 'โมร็อกโก',
+                NL: 'เนเธอร์แลนด์',
+                RO: 'โรมาเนีย',
+                SE: 'สวีเดน',
+                SG: 'สิงคโปร์',
+                US: 'สหรัฐอเมริกา'
+            }
+        }
+    });
+}(window.jQuery));

+ 2 - 0
dist/js/language/tr_TR.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenya',
                 SK: 'Slovakya',
                 SM: 'San Marino',
+                TH: 'Tayland',
                 ZA: 'Güney Afrika'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Fas',
                 PK: 'Pakistan',
                 RO: 'Romanya',
+                TH: 'Tayland',
                 US: 'Amerika'
             }
         },

+ 2 - 0
dist/js/language/vi_VN.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenia',
                 SK: 'Slovakia',
                 SM: 'San Marino',
+                TH: 'Thái Lan',
                 ZA: 'Nam Phi'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Maroc',
                 PK: 'Pakistan',
                 RO: 'Romania',
+                TH: 'Thái Lan',
                 US: 'Mỹ'
             }
         },

+ 2 - 0
dist/js/language/zh_CN.js

@@ -175,6 +175,7 @@
                 SI: '斯洛文尼亚',
                 SK: '斯洛伐克',
                 SM: '圣马力诺',
+                TH: '泰国',
                 ZA: '南非'
             }
         },
@@ -237,6 +238,7 @@
                 MA: '摩洛哥',
                 PK: '巴基斯坦',
                 RO: '罗马尼亚',
+                TH: '泰国',
                 US: '美国'
             }
         },

+ 3 - 1
dist/js/language/zh_TW.js

@@ -1,6 +1,6 @@
 (function($) {
     /**
-     * Simplified Chinese language package
+     * Traditional Chinese language package
      * Translated by @tureki
      */
     $.fn.bootstrapValidator.i18n = $.extend(true, $.fn.bootstrapValidator.i18n, {
@@ -175,6 +175,7 @@
                 SI: '斯洛文尼亞',
                 SK: '斯洛伐克',
                 SM: '聖馬力諾',
+                TH: '泰國',
                 ZA: '南非'
             }
         },
@@ -237,6 +238,7 @@
                 MA: '摩洛哥',
                 PK: '巴基斯坦',
                 RO: '罗马尼亚',
+                TH: '泰國',
                 US: '美國'
             }
         },

+ 2 - 0
src/js/language/ar_MA.js

@@ -175,6 +175,7 @@
                 SI: 'سلوفينيا',
                 SK: 'سلوفاكيا',
                 SM: 'سان مارينو',
+                TH: 'تايلاند',
                 ZA: 'جنوب أفريقيا'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'المغرب',
                 PK: 'باكستان',
                 RO: 'رومانيا',
+                TH: 'تايلاند',
                 US: 'الولايات المتحدة'
             }
         },

+ 2 - 0
src/js/language/be_FR.js

@@ -175,6 +175,7 @@
                 SI: 'Slovénie',
                 SK: 'Slovaquie',
                 SM: 'Saint-Marin',
+                TH: 'Thaïlande',
                 ZA: 'Afrique du Sud'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Maroc',
                 PK: 'Pakistan',
                 RO: 'Roumanie',
+                TH: 'Thaïlande',
                 US: 'USA'
             }
         },

+ 2 - 0
src/js/language/be_NL.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenië',
                 SK: 'Slowakije',
                 SM: 'San Marino',
+                TH: 'Thailand',
                 ZA: 'Zuid-Afrika'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marokko',
                 PK: 'Pakistan',
                 RO: 'Roemenië',
+                TH: 'Thailand',
                 US: 'VS'
             }
         },

+ 2 - 0
src/js/language/bg_BG.js

@@ -175,6 +175,7 @@
                 SI: 'Словения',
                 SK: 'Словакия',
                 SM: 'San Marino',
+                TH: 'Тайланд',
                 ZA: 'Южна Африка'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Мароко',
                 PK: 'Пакистан',
                 RO: 'Румъния',
+                TH: 'Тайланд',
                 US: 'САЩ'
             }
         },

+ 2 - 0
src/js/language/cs_CZ.js

@@ -175,6 +175,7 @@
                 SI: 'Slovinsko',
                 SK: 'Slovensko',
                 SM: 'San Marino',
+                TH: 'Thajsko',
                 ZA: 'Jižní Afriku'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Maroko',
                 PK: 'Pákistán',
                 RO: 'Rumunsko',
+                TH: 'Thajsko',
                 US: 'Spojené Státy Americké'
             }
         },

+ 2 - 0
src/js/language/da_DK.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenien',
                 SK: 'Slovakiet',
                 SM: 'San Marino',
+                TH: 'Thailand',
                 ZA: 'Sydafrika'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marokko',
                 PK: 'Pakistan',
                 RO: 'Rumænien',
+                TH: 'Thailand',
                 US: 'USA'
             }
         },

+ 2 - 0
src/js/language/de_DE.js

@@ -175,6 +175,7 @@
                 SI: 'Slowenien',
                 SK: 'Slowakei',
                 SM: 'San Marino',
+                TH: 'Thailand',
                 ZA: 'Südafrika'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marokko',
                 PK: 'Pakistan',
                 RO: 'Rumänien',
+                TH: 'Thailand',
                 US: 'Vereinigte Staaten von Amerika'
             }
         },

+ 2 - 0
src/js/language/en_US.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenia',
                 SK: 'Slovakia',
                 SM: 'San Marino',
+                TH: 'Thailand',
                 ZA: 'South Africa'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Morocco',
                 PK: 'Pakistan',
                 RO: 'Romania',
+                TH: 'Thailand',
                 US: 'USA'
             }
         },

+ 2 - 0
src/js/language/es_CL.js

@@ -175,6 +175,7 @@
                 SI: 'Eslovenia',
                 SK: 'Eslovaquia',
                 SM: 'San Marino',
+                TH: 'Tailandia',
                 ZA: 'Sudáfrica'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marruecos',
                 PK: 'Pakistán',
                 RO: 'Rumania',
+                TH: 'Tailandia',
                 US: 'Estados Unidos'
             }
         },

+ 2 - 0
src/js/language/es_ES.js

@@ -175,6 +175,7 @@
                 SI: 'Eslovenia',
                 SK: 'Eslovaquia',
                 SM: 'San Marino',
+                TH: 'Tailandia',
                 ZA: 'Sudáfrica'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marruecos',
                 PK: 'Pakistán',
                 RO: 'Rumania',
+                TH: 'Tailandia',
                 US: 'Estados Unidos'
             }
         },

+ 2 - 0
src/js/language/fa_IR.js

@@ -175,6 +175,7 @@
                 SI: 'اسلوونی',
                 SK: 'اسلواکی',
                 SM: 'سان مارینو',
+                TH: 'تایلند',
                 ZA: 'آفریقای جنوبی'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'مراکش',
                 PK: 'پاکستان',
                 RO: 'رومانی',
+                TH: 'تایلند',
                 US: 'ایالات متحده آمریکا'
             }
         },

+ 2 - 0
src/js/language/fr_FR.js

@@ -175,6 +175,7 @@
                 SI: 'Slovénie',
                 SK: 'Slovaquie',
                 SM: 'Saint-Marin',
+                TH: 'Thaïlande',
                 ZA: 'Afrique du Sud'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Maroc',
                 PK: 'Pakistan',
                 RO: 'Roumanie',
+                TH: 'Thaïlande',
                 US: 'USA'
             }
         },

+ 2 - 0
src/js/language/gr_EL.js

@@ -175,6 +175,7 @@
                 SI: 'Σλοβενία',
                 SK: 'Σλοβακία',
                 SM: 'Σαν Μαρίνο',
+                TH: 'Ταϊλάνδη',
                 ZA: 'Νότια Αφρική'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Μαρόκο',
                 PK: 'Πακιστάν',
                 RO: 'Ρουμανία',
+                TH: 'Ταϊλάνδη',
                 US: 'ΗΠΑ'
             }
         },

+ 2 - 0
src/js/language/hu_HU.js

@@ -175,6 +175,7 @@
                 SI: 'szlovén',
                 SK: 'szlovák',
                 SM: 'San Marino beli',
+                TH: 'thaiföld',
                 ZA: 'dél afrikai'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marokkó',
                 PK: 'Pakisztán',
                 RO: 'Románia',
+                TH: 'thaiföld',
                 US: 'Egyesült Államok beli'
             }
         },

+ 2 - 0
src/js/language/it_IT.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenia',
                 SK: 'Slovacchia',
                 SM: 'San Marino',
+                TH: 'Thailandia',
                 ZA: 'Sudafrica'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marocco',
                 PK: 'Pakistan',
                 RO: 'Romania',
+                TH: 'Thailandia',
                 US: 'Stati Uniti d\'America'
             }
         },

+ 2 - 0
src/js/language/ja_JP.js

@@ -175,6 +175,7 @@
                 SI: 'スロベニア',
                 SK: 'スロバキア',
                 SM: 'サン·マリノ',
+                TH: 'タイ国',
                 ZA: '南アフリカ'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'モロッコ',
                 PK: 'パキスタン',
                 RO: 'ルーマニア',
+                TH: 'タイ国',
                 US: 'アメリカ'
             }
         },

+ 2 - 0
src/js/language/nl_NL.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenië',
                 SK: 'Slowakije',
                 SM: 'San Marino',
+                TH: 'Thailand',
                 ZA: 'Zuid-Afrika'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marokko',
                 PK: 'Pakistan',
                 RO: 'Roemenië',
+                TH: 'Thailand',
                 US: 'VS'
             }
         },

+ 2 - 0
src/js/language/pl_PL.js

@@ -175,6 +175,7 @@
                 SI: 'Słowenia',
                 SK: 'Słowacja',
                 SM: 'San Marino',
+                TH: 'Tajlandia',
                 ZA: 'Republika Południowej Afryki'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Maroko',
                 PK: 'Pakistan',
                 RO: 'Rumunia',
+                TH: 'Tajlandia',
                 US: 'USA'
             }
         },

+ 2 - 0
src/js/language/pt_BR.js

@@ -175,6 +175,7 @@
                 SI: 'Eslovênia',
                 SK: 'Eslováquia',
                 SM: 'San Marino',
+                TH: 'Tailândia',
                 ZA: 'África do Sul'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marrocos',
                 PK: 'Paquistão',
                 RO: 'Roménia',
+                TH: 'Tailândia',
                 US: 'EUA'
             }
         },

+ 2 - 0
src/js/language/ro_RO.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenia',
                 SK: 'Slovacia',
                 SM: 'San Marino',
+                TH: 'Thailanda',
                 ZA: 'Africa de Sud'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Maroc',
                 PK: 'Pakistan',
                 RO: 'Romania',
+                TH: 'Thailanda',
                 US: 'SUA'
             }
         },

+ 2 - 0
src/js/language/sv_SE.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenien',
                 SK: 'Slovakien',
                 SM: 'San Marino',
+                TH: 'Thailand',
                 ZA: 'Sydafrika'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Marocko',
                 PK: 'Pakistan',
                 RO: 'Rumänien',
+                TH: 'Thailand',
                 US: 'USA'
             }
         },

+ 3 - 1
src/js/language/th_TH.js

@@ -141,7 +141,6 @@
                 SK: 'สโลวาเกีย',
                 SM: 'ซานมาริโน',
                 SN: 'เซเนกัล',
-                TH: 'ไทย',
                 TN: 'ตูนิเซีย',
                 TR: 'ตุรกี',
                 VG: 'หมู่เกาะบริติชเวอร์จิน'
@@ -176,6 +175,7 @@
                 SI: 'สโลวีเนีย',
                 SK: 'สโลวาเกีย',
                 SM: 'ซานมาริโน',
+                TH: 'ไทย',
                 ZA: 'แอฟริกาใต้'
             }
         },
@@ -231,12 +231,14 @@
             countries: {
                 BR: 'บราซิล',
                 CN: 'จีน',
+                DK: 'เดนมาร์ก',
                 ES: 'สเปน',
                 FR: 'ฝรั่งเศส',
                 GB: 'สหราชอาณาจักร',
                 MA: 'โมร็อกโก',
                 PK: 'ปากีสถาน',
                 RO: 'โรมาเนีย',
+                TH: 'ไทย',
                 US: 'สหรัฐอเมริกา'
             }
         },

+ 2 - 0
src/js/language/tr_TR.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenya',
                 SK: 'Slovakya',
                 SM: 'San Marino',
+                TH: 'Tayland',
                 ZA: 'Güney Afrika'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Fas',
                 PK: 'Pakistan',
                 RO: 'Romanya',
+                TH: 'Tayland',
                 US: 'Amerika'
             }
         },

+ 2 - 0
src/js/language/vi_VN.js

@@ -175,6 +175,7 @@
                 SI: 'Slovenia',
                 SK: 'Slovakia',
                 SM: 'San Marino',
+                TH: 'Thái Lan',
                 ZA: 'Nam Phi'
             }
         },
@@ -237,6 +238,7 @@
                 MA: 'Maroc',
                 PK: 'Pakistan',
                 RO: 'Romania',
+                TH: 'Thái Lan',
                 US: 'Mỹ'
             }
         },

+ 2 - 0
src/js/language/zh_CN.js

@@ -175,6 +175,7 @@
                 SI: '斯洛文尼亚',
                 SK: '斯洛伐克',
                 SM: '圣马力诺',
+                TH: '泰国',
                 ZA: '南非'
             }
         },
@@ -237,6 +238,7 @@
                 MA: '摩洛哥',
                 PK: '巴基斯坦',
                 RO: '罗马尼亚',
+                TH: '泰国',
                 US: '美国'
             }
         },

+ 3 - 1
src/js/language/zh_TW.js

@@ -1,6 +1,6 @@
 (function($) {
     /**
-     * Simplified Chinese language package
+     * Traditional Chinese language package
      * Translated by @tureki
      */
     $.fn.bootstrapValidator.i18n = $.extend(true, $.fn.bootstrapValidator.i18n, {
@@ -175,6 +175,7 @@
                 SI: '斯洛文尼亞',
                 SK: '斯洛伐克',
                 SM: '聖馬力諾',
+                TH: '泰國',
                 ZA: '南非'
             }
         },
@@ -237,6 +238,7 @@
                 MA: '摩洛哥',
                 PK: '巴基斯坦',
                 RO: '罗马尼亚',
+                TH: '泰國',
                 US: '美國'
             }
         },

+ 9 - 5
src/js/validator/id.js

@@ -28,6 +28,7 @@
             SI: 'Slovenia',
             SK: 'Slovakia',
             SM: 'San Marino',
+            TH: 'Thailand',
             ZA: 'South Africa'
         }
     });
@@ -794,14 +795,17 @@
          * @param {String} value The ID
          * @returns {Boolean}
          */
-        _th: function (value) {
-            if (value.length != 13) return false;
+        _th: function(value) {
+            if (value.length !== 13) {
+                return false;
+            }
 
-            for (i = 0, sum = 0; i < 12; i++) {
-                sum += parseInt(value.charAt(i)) * (13 - i);
+            var sum = 0;
+            for (var i = 0; i < 12; i++) {
+                sum += parseInt(value.charAt(i), 10) * (13 - i);
             }
 
-            return !((11 - sum % 11) % 10 != parseInt(value.charAt(12)));
+            return (11 - sum % 11) % 10 === parseInt(value.charAt(12), 10);
         },
 
         /**

+ 1 - 1
src/js/validator/phone.js

@@ -124,7 +124,7 @@
         		    
                 case 'TH':
         		    // http://regex101.com/r/vM5mZ4/2
-        		    isValid = (/^0\(?([6|8-9]{2})*-([0-9]{3})*-([0-9]{4}))$/).test(value);
+        		    isValid = (/^0\(?([6|8-9]{2})*-([0-9]{3})*-([0-9]{4})$/).test(value);
         		    break;
 
                 case 'US':

+ 23 - 0
test/spec.js

@@ -3514,6 +3514,7 @@ describe('id', function() {
                         '<option value="SI">Slovenia</option>',
                         '<option value="SK">Slovakia</option>',
                         '<option value="SM">San Marino</option>',
+                        '<option value="TH">Thailand</option>',
                         '<option value="ZA">South Africa</option>',
                     '</select>',
                 '</div>',
@@ -3935,6 +3936,28 @@ describe('id', function() {
             expect(this.bv.isValid()).toEqual(false);
         }
     });
+
+    it('Thailand citizen number', function() {
+        this.bv.updateOption('id', 'id', 'country', 'TH');
+
+        // Valid samples
+        var validSamples = ['7145620509547', '3688699975685', '2368719339716'];
+        for (var i in validSamples) {
+            this.bv.resetForm();
+            this.$id.val(validSamples[i]);
+            this.bv.validate();
+            expect(this.bv.isValid()).toBeTruthy();
+        }
+
+        // Invalid samples
+        var invalidSamples = ['1100800092310'];
+        for (i in invalidSamples) {
+            this.bv.resetForm();
+            this.$id.val(invalidSamples[i]);
+            this.bv.validate();
+            expect(this.bv.isValid()).toEqual(false);
+        }
+    });
 });
 
 describe('imo', function() {

+ 23 - 0
test/spec/validator/id.js

@@ -28,6 +28,7 @@ describe('id', function() {
                         '<option value="SI">Slovenia</option>',
                         '<option value="SK">Slovakia</option>',
                         '<option value="SM">San Marino</option>',
+                        '<option value="TH">Thailand</option>',
                         '<option value="ZA">South Africa</option>',
                     '</select>',
                 '</div>',
@@ -449,4 +450,26 @@ describe('id', function() {
             expect(this.bv.isValid()).toEqual(false);
         }
     });
+
+    it('Thailand citizen number', function() {
+        this.bv.updateOption('id', 'id', 'country', 'TH');
+
+        // Valid samples
+        var validSamples = ['7145620509547', '3688699975685', '2368719339716'];
+        for (var i in validSamples) {
+            this.bv.resetForm();
+            this.$id.val(validSamples[i]);
+            this.bv.validate();
+            expect(this.bv.isValid()).toBeTruthy();
+        }
+
+        // Invalid samples
+        var invalidSamples = ['1100800092310'];
+        for (i in invalidSamples) {
+            this.bv.resetForm();
+            this.$id.val(invalidSamples[i]);
+            this.bv.validate();
+            expect(this.bv.isValid()).toEqual(false);
+        }
+    });
 });