Overview

Namespaces

  • None
  • Quform
    • Traduttore_Registry

Classes

  • Quform
  • Quform_Admin_InsertForm
  • Quform_Admin_Page
  • Quform_Admin_Page_Controller
  • Quform_Admin_Page_Dashboard
  • Quform_Admin_Page_Entries
  • Quform_Admin_Page_Entries_Edit
  • Quform_Admin_Page_Entries_List
  • Quform_Admin_Page_Entries_View
  • Quform_Admin_Page_Factory
  • Quform_Admin_Page_Forms_Add
  • Quform_Admin_Page_Forms_Edit
  • Quform_Admin_Page_Forms_List
  • Quform_Admin_Page_Help
  • Quform_Admin_Page_Preview
  • Quform_Admin_Page_Settings
  • Quform_Admin_Page_Tools
  • Quform_Admin_Page_Tools_ExportEntries
  • Quform_Admin_Page_Tools_ExportForm
  • Quform_Admin_Page_Tools_Home
  • Quform_Admin_Page_Tools_ImportForm
  • Quform_Admin_Page_Tools_Migrate
  • Quform_Admin_Page_Tools_Uninstall
  • Quform_Api
  • Quform_Block
  • Quform_Builder
  • Quform_Captcha
  • Quform_ClassLoader
  • Quform_Confirmation
  • Quform_Container
  • Quform_Dashboard_Widget
  • Quform_Dispatcher
  • Quform_Element
  • Quform_Element_Captcha
  • Quform_Element_Checkbox
  • Quform_Element_Column
  • Quform_Element_Container
  • Quform_Element_Container_Iterator
  • Quform_Element_Date
  • Quform_Element_Email
  • Quform_Element_Factory
  • Quform_Element_Field
  • Quform_Element_File
  • Quform_Element_Group
  • Quform_Element_Hidden
  • Quform_Element_Honeypot
  • Quform_Element_Html
  • Quform_Element_Multi
  • Quform_Element_Multiselect
  • Quform_Element_Name
  • Quform_Element_Page
  • Quform_Element_Password
  • Quform_Element_Radio
  • Quform_Element_Recaptcha
  • Quform_Element_Row
  • Quform_Element_Select
  • Quform_Element_Submit
  • Quform_Element_Text
  • Quform_Element_Textarea
  • Quform_Element_Time
  • Quform_Entry_Controller
  • Quform_Entry_Exporter
  • Quform_Entry_List_Settings
  • Quform_Entry_List_Table
  • Quform_Entry_Processor
  • Quform_Entry_UserSearcher
  • Quform_Filter_Abstract
  • Quform_Filter_Alpha
  • Quform_Filter_AlphaNumeric
  • Quform_Filter_Digits
  • Quform_Filter_Regex
  • Quform_Filter_Static
  • Quform_Filter_StripTags
  • Quform_Filter_Trim
  • Quform_Form
  • Quform_Form_Controller
  • Quform_Form_Exporter
  • Quform_Form_Factory
  • Quform_Form_Importer
  • Quform_Form_Iterator
  • Quform_Form_List_Settings
  • Quform_Form_List_Table
  • Quform_Form_Processor
  • Quform_License
  • Quform_Migrator
  • Quform_NonceRefresher
  • Quform_Notification
  • Quform_Notification_Resender
  • Quform_Options
  • Quform_Permissions
  • Quform_Repository
  • Quform_ScriptLoader
  • Quform_Session
  • Quform_Settings
  • Quform_Shortcode
  • Quform_Themes
  • Quform_TokenReplacer
  • Quform_Toolbar
  • Quform_Translations
  • Quform_Updater
  • Quform_Upgrader
  • Quform_Uploader
  • Quform_Validator_Abstract
  • Quform_Validator_Alpha
  • Quform_Validator_AlphaNumeric
  • Quform_Validator_Array
  • Quform_Validator_Captcha
  • Quform_Validator_Date
  • Quform_Validator_Digits
  • Quform_Validator_Duplicate
  • Quform_Validator_Email
  • Quform_Validator_FileUpload
  • Quform_Validator_GreaterThan
  • Quform_Validator_Honeypot
  • Quform_Validator_Identical
  • Quform_Validator_InArray
  • Quform_Validator_Length
  • Quform_Validator_LessThan
  • Quform_Validator_Recaptcha
  • Quform_Validator_Regex
  • Quform_Validator_Required
  • Quform_Validator_Static
  • Quform_Validator_Time
  • Quform_View
  • Quform_ViewFactory
  • Quform_Widget_Form
  • Quform_Widget_Popup

Interfaces

  • Quform_Attachable
  • Quform_Element_Editable
  • Quform_Filter_Interface
  • Quform_Validator_Interface

Constants

  • Quform\Traduttore_Registry\TRANSIENT_KEY_PLUGIN
  • Quform\Traduttore_Registry\TRANSIENT_KEY_THEME

Functions

  • Quform\Traduttore_Registry\add_project
  • Quform\Traduttore_Registry\clean_translations_cache
  • Quform\Traduttore_Registry\get_available_locales
  • Quform\Traduttore_Registry\get_installed_translations
  • Quform\Traduttore_Registry\get_translations
  • Quform\Traduttore_Registry\register_clean_translations_cache
  • Quform\Traduttore_Registry\sanitize_date
  • Overview
  • Namespace
  • Class
   1: <?php
   2: 
   3: /**
   4:  * @copyright Copyright (c) 2009-2022 ThemeCatcher (https://www.themecatcher.net)
   5:  */
   6: class Quform
   7: {
   8:     /**
   9:      * On plugin activation set the activated flag
  10:      */
  11:     public static function onActivation()
  12:     {
  13:         add_option('quform_activated', '1');
  14:     }
  15: 
  16:     /**
  17:      * Bootstrap the plugin
  18:      */
  19:     public static function bootstrap()
  20:     {
  21:         $GLOBALS['quform'] = new Quform_Dispatcher(new Quform_Container());
  22:         $GLOBALS['quform']->bootstrap();
  23:     }
  24: 
  25:     /**
  26:      * Get a service from the container
  27:      *
  28:      * @param   string  $name  The service name
  29:      * @return  mixed          The service instance
  30:      */
  31:     public static function getService($name)
  32:     {
  33:         return $GLOBALS['quform']->getService($name);
  34:     }
  35: 
  36:     /**
  37:      * Get the URL to the plugin folder
  38:      *
  39:      * @param   string  $path  Extra path to append to the URL
  40:      * @return  string
  41:      */
  42:     public static function url($path = '')
  43:     {
  44:         return Quform::pathExtra(plugins_url(QUFORM_NAME), $path);
  45:     }
  46: 
  47:     /**
  48:      * Get the URL to the plugin admin folder
  49:      *
  50:      * @param   string  $path  Extra path to append to the URL
  51:      * @return  string
  52:      */
  53:     public static function adminUrl($path = '')
  54:     {
  55:         return Quform::pathExtra(Quform::url('admin'), $path);
  56:     }
  57: 
  58:     /**
  59:      * Allow users to white-label the plugin name on Quform pages
  60:      *
  61:      * @return string The plugin name
  62:      */
  63:     public static function getPluginName()
  64:     {
  65:         return apply_filters('quform_plugin_name', 'Quform');
  66:     }
  67: 
  68:     /**
  69:      * Get the IP address of the visitor
  70:      *
  71:      * @return string
  72:      */
  73:     public static function getClientIp()
  74:     {
  75:         $ip = $_SERVER['REMOTE_ADDR'];
  76: 
  77:         if ( ! empty($_SERVER['HTTP_CLIENT_IP'])) {
  78:             $ip = $_SERVER['HTTP_CLIENT_IP'];
  79:         } elseif ( ! empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  80:             $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
  81:             $ip = trim($ips[0]);
  82:         }
  83: 
  84:         $ip = apply_filters('quform_get_client_ip', $ip);
  85: 
  86:         return (string) $ip;
  87:     }
  88: 
  89:     /**
  90:      * Get a timestamp with hash for tamper protection
  91:      *
  92:      * @return string Format: "timestamp|hash"
  93:      */
  94:     public static function getTimestampHash()
  95:     {
  96:         $value = time() . '|';
  97:         $value .= wp_hash($value);
  98:         return $value;
  99:     }
 100: 
 101:     /**
 102:      * Get the current URL
 103:      *
 104:      * @return string
 105:      */
 106:     public static function getCurrentUrl()
 107:     {
 108:         $url = '';
 109: 
 110:         if (isset($_SERVER['HTTP_HOST'], $_SERVER['REQUEST_URI'])) {
 111:             $url .= 'http';
 112: 
 113:             if (is_ssl()) {
 114:                 $url .= 's';
 115:             }
 116: 
 117:             $url .= '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
 118:         }
 119: 
 120:         return $url;
 121:     }
 122: 
 123:     /**
 124:      * Get the HTTP referer
 125:      *
 126:      * @return string
 127:      */
 128:     public static function getHttpReferer()
 129:     {
 130:         $referer = '';
 131: 
 132:         if (isset($_SERVER['HTTP_REFERER'])) {
 133:             $referer = $_SERVER['HTTP_REFERER'];
 134:         }
 135: 
 136:         return (string) $referer;
 137:     }
 138: 
 139:     /**
 140:      * Get the current post
 141:      *
 142:      * @return WP_Post|null
 143:      */
 144:     public static function getCurrentPost()
 145:     {
 146:         if (in_the_loop()) {
 147:             return get_post();
 148:         }
 149: 
 150:         $post = get_queried_object();
 151: 
 152:         if ($post instanceof WP_Post) {
 153:             return $post;
 154:         }
 155: 
 156:         return null;
 157:     }
 158: 
 159:     /**
 160:      * Get a property from the current post object
 161:      *
 162:      * @param   string    $property  Which property to get
 163:      * @param   int|null  $postId    The post ID or null to use the current post
 164:      * @return  string
 165:      */
 166:     public static function getPostProperty($property = 'ID', $postId = null)
 167:     {
 168:         $post = ! is_null($postId) ? get_post($postId) : Quform::getCurrentPost();
 169:         $value = '';
 170: 
 171:         $whitelist = array('ID', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title',
 172:             'post_excerpt', 'post_status', 'comment_status', 'ping_status', 'post_name', 'to_ping', 'pinged',
 173:             'post_modified', 'post_modified_gmt', 'post_content_filtered', 'post_parent', 'guid', 'menu_order',
 174:             'post_type', 'post_mime_type', 'comment_count'
 175:         );
 176: 
 177:         if (Quform::isNonEmptyString($property) &&
 178:             in_array($property, $whitelist) &&
 179:             $post instanceof WP_Post &&
 180:             isset($post->{$property})
 181:         ) {
 182:             $value = $post->{$property};
 183:         }
 184: 
 185:         return (string) $value;
 186:     }
 187: 
 188:     /**
 189:      * Get the post meta value with the given key from the given post ID or the current post
 190:      *
 191:      * @param   string        $key     The post meta key
 192:      * @param   int|null      $postId  The post ID, if null the current post will be used
 193:      * @return  mixed|string
 194:      */
 195:     public static function getPostMeta($key, $postId = null)
 196:     {
 197:         $post = ! is_null($postId) ? get_post($postId) : Quform::getCurrentPost();
 198:         $value = '';
 199: 
 200:         if (Quform::isNonEmptyString($key) && $post instanceof WP_Post) {
 201:             $value = get_post_meta($post->ID, $key, true);
 202:         }
 203: 
 204:         return $value;
 205:     }
 206: 
 207:     /**
 208:      * Get a property from the current user object
 209:      *
 210:      * @param   string  $property  Which property to get
 211:      * @return  string
 212:      */
 213:     public static function getUserProperty($property = 'ID')
 214:     {
 215:         $user = wp_get_current_user();
 216:         $value = '';
 217: 
 218:         // Ensure user_pass is never returned
 219:         $whitelist = array('ID', 'user_login', 'user_nicename', 'user_email', 'user_url', 'user_registered', 'display_name');
 220: 
 221:         if (Quform::isNonEmptyString($property) &&
 222:             in_array($property, $whitelist) &&
 223:             $user->ID > 0 &&
 224:             isset($user->{$property})
 225:         ) {
 226:             $value = $user->{$property};
 227:         }
 228: 
 229:         return (string) $value;
 230:     }
 231: 
 232:     /**
 233:      * Get the user meta value with the given key for the current user
 234:      *
 235:      * @param   string        $key  The user meta key
 236:      * @return  mixed|string
 237:      */
 238:     public static function getUserMeta($key)
 239:     {
 240:         $value = '';
 241: 
 242:         if (Quform::isNonEmptyString($key)) {
 243:             $value = get_user_meta(get_current_user_id(), $key, true);
 244:         }
 245: 
 246:         return $value;
 247:     }
 248: 
 249:     /**
 250:      * Convert the given string to studly case
 251:      *
 252:      * @param  string $value
 253:      * @return string
 254:      */
 255:     public static function studlyCase($value)
 256:     {
 257:         $value = ucwords(str_replace(array('-', '_'), ' ', $value));
 258: 
 259:         return str_replace(' ', '', $value);
 260:     }
 261: 
 262:     /**
 263:      * Is the current request a GET request?
 264:      *
 265:      * @return bool
 266:      */
 267:     public static function isGetRequest()
 268:     {
 269:         return isset($_SERVER['REQUEST_METHOD']) && strtoupper($_SERVER['REQUEST_METHOD']) === 'GET';
 270:     }
 271: 
 272:     /**
 273:      * Is the current request a POST request?
 274:      *
 275:      * @return bool
 276:      */
 277:     public static function isPostRequest()
 278:     {
 279:         return isset($_SERVER['REQUEST_METHOD']) && strtoupper($_SERVER['REQUEST_METHOD']) === 'POST';
 280:     }
 281: 
 282:     /**
 283:      * Escaping for strings in HTML
 284:      *
 285:      * Identical to esc_html but with double encoding true
 286:      *
 287:      * @param   string  $value
 288:      * @param   int     $flags
 289:      * @return  string
 290:      */
 291:     public static function escape($value, $flags = ENT_QUOTES)
 292:     {
 293:         $value = wp_check_invalid_utf8($value);
 294: 
 295:         return _wp_specialchars($value, $flags, false, true);
 296:     }
 297: 
 298:     /**
 299:      * Sanitize multiple classes
 300:      *
 301:      * @param   string|array  $classes  Classes to sanitize
 302:      * @return  string                  The sanitized classes
 303:      */
 304:     public static function sanitizeClass($classes)
 305:     {
 306:         if (is_array($classes)) {
 307:             $classes = join(' ', $classes);
 308:         }
 309: 
 310:         $classes = preg_split('/\s+/', trim($classes));
 311: 
 312:         $sanitizedClasses = array();
 313: 
 314:         foreach ($classes as $class) {
 315:             $sanitizedClass = sanitize_html_class($class);
 316: 
 317:             if ( ! empty($sanitizedClass)) {
 318:                 $sanitizedClasses[] = $sanitizedClass;
 319:             }
 320:         }
 321: 
 322:         return join(' ', $sanitizedClasses);
 323:     }
 324: 
 325:     /**
 326:      * Sanitizes a multiline string
 327:      *
 328:      * @param   string  $str
 329:      * @return  string
 330:      */
 331:     public static function sanitizeTextareaField($str)
 332:     {
 333:         if (function_exists('sanitize_textarea_field')) {
 334:             return sanitize_textarea_field($str);
 335:         }
 336: 
 337:         return join("\n", array_map('sanitize_text_field', explode("\n", $str)));
 338:     }
 339: 
 340:     /**
 341:      * Get a value from an array, allowing dot notation
 342:      *
 343:      * @param   array   $array
 344:      * @param   string  $key
 345:      * @param   mixed   $default
 346:      * @return  mixed
 347:      */
 348:     public static function get($array, $key = null, $default = null)
 349:     {
 350:         if (is_null($key)) {
 351:             return $array;
 352:         }
 353: 
 354:         if (isset($array[$key])) {
 355:             return $array[$key];
 356:         }
 357: 
 358:         foreach (explode('.', $key) as $segment) {
 359:             if ( ! is_array($array) || ! array_key_exists($segment, $array)) {
 360:                 return $default;
 361:             }
 362: 
 363:             $array = $array[$segment];
 364:         }
 365: 
 366:         return $array;
 367:     }
 368: 
 369:     /**
 370:      * Set an array item to a given value using "dot" notation.
 371:      *
 372:      * If no key is given to the method, the entire array will be replaced.
 373:      *
 374:      * @param  array   $array
 375:      * @param  string  $key
 376:      * @param  mixed   $value
 377:      * @return array
 378:      */
 379:     public static function set(&$array, $key, $value)
 380:     {
 381:         if (is_null($key)) return $array = $value;
 382: 
 383:         $keys = explode('.', $key);
 384: 
 385:         while (count($keys) > 1)
 386:         {
 387:             $key = array_shift($keys);
 388: 
 389:             // If the key doesn't exist at this depth, we will just create an empty array
 390:             // to hold the next value, allowing us to create the arrays to hold final
 391:             // values at the correct depth. Then we'll keep digging into the array.
 392:             if ( ! isset($array[$key]) || ! is_array($array[$key]))
 393:             {
 394:                 $array[$key] = array();
 395:             }
 396: 
 397:             $array =& $array[$key];
 398:         }
 399: 
 400:         $array[array_shift($keys)] = $value;
 401: 
 402:         return $array;
 403:     }
 404: 
 405:     /**
 406:      * Remove one or many array items from a given array using "dot" notation.
 407:      *
 408:      * @param  array  $array
 409:      * @param  array|string  $keys
 410:      * @return void
 411:      */
 412:     public static function forget(&$array, $keys)
 413:     {
 414:         $original =& $array;
 415: 
 416:         foreach ((array) $keys as $key)
 417:         {
 418:             $parts = explode('.', $key);
 419: 
 420:             while (count($parts) > 1)
 421:             {
 422:                 $part = array_shift($parts);
 423: 
 424:                 if (isset($array[$part]) && is_array($array[$part]))
 425:                 {
 426:                     $array =& $array[$part];
 427:                 }
 428:             }
 429: 
 430:             unset($array[array_shift($parts)]);
 431: 
 432:             // clean up after each pass
 433:             $array =& $original;
 434:         }
 435:     }
 436: 
 437:     /**
 438:      * Returns true if and only if the given value is a string with at least one character
 439:      *
 440:      * @param   mixed    $value
 441:      * @return  boolean
 442:      */
 443:     public static function isNonEmptyString($value)
 444:     {
 445:         return is_string($value) && $value !== '';
 446:     }
 447: 
 448:     /**
 449:      * Die and dump arguments, debugging helper method
 450:      */
 451:     public static function dd()
 452:     {
 453:         echo '<pre>';
 454:         foreach (func_get_args() as $arg) {
 455:             var_dump($arg);
 456:         }
 457:         echo '</pre>';
 458:         exit;
 459:     }
 460: 
 461:     /**
 462:      * Log arguments to the PHP error log
 463:      */
 464:     public static function log()
 465:     {
 466:         foreach (func_get_args() as $arg) {
 467:             ob_start();
 468:             var_dump($arg);
 469:             error_log(ob_get_clean());
 470:         }
 471:     }
 472: 
 473:     /**
 474:      * Log arguments to the PHP error log only if WP_DEBUG is enabled
 475:      */
 476:     public static function debug()
 477:     {
 478:         if (defined('WP_DEBUG') && WP_DEBUG) {
 479:             call_user_func_array(array('Quform', 'log'), func_get_args());
 480:         }
 481:     }
 482: 
 483:     /**
 484:      * Get the length of the given string (multibyte aware)
 485:      *
 486:      * @param   string  $string
 487:      * @return  int
 488:      */
 489:     public static function strlen($string)
 490:     {
 491:         return mb_strlen($string, get_bloginfo('charset'));
 492:     }
 493: 
 494:     /**
 495:      * Get part of the given string (multibyte aware)
 496:      *
 497:      * @param   string    $string
 498:      * @param   int       $start
 499:      * @param   int|null  $length
 500:      * @return  string
 501:      */
 502:     public static function substr($string, $start, $length = null)
 503:     {
 504:         return mb_substr($string, $start, $length, get_bloginfo('charset'));
 505:     }
 506: 
 507:     /**
 508:      * Generates an HTML tag
 509:      *
 510:      * @param   string  $tag         The HTML tag
 511:      * @param   array   $attributes  Attributes key => value list for the tag
 512:      * @param   string  $content     Content for non-void elements (not escaped)
 513:      * @return  string
 514:      */
 515:     public static function getHtmlTag($tag, array $attributes = array(), $content = '')
 516:     {
 517:         // https://www.w3.org/TR/html5/syntax.html#void-elements
 518:         $voidElements = array('area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr');
 519: 
 520:         $tag = Quform::escape(strtolower($tag));
 521: 
 522:         if (in_array($tag, $voidElements)) {
 523:             $output = sprintf('<%s%s />', $tag, self::parseHtmlAttributes($attributes));
 524:         } else {
 525:             $output = sprintf('<%1$s%2$s>%3$s</%1$s>', $tag, self::parseHtmlAttributes($attributes), $content);
 526:         }
 527: 
 528:         return $output;
 529:     }
 530: 
 531:     /**
 532:      * Parse an array of HTML attributes into an attribute string
 533:      *
 534:      * @param   array   $attributes  Attributes key => value list for the tag
 535:      * @return  string
 536:      */
 537:     public static function parseHtmlAttributes(array $attributes)
 538:     {
 539:         $escapedAttributes = array();
 540: 
 541:         foreach ($attributes as $key => $value) {
 542:             if ($value === true) {
 543:                 $escapedAttributes[] = $key;
 544:             } else {
 545:                 $escapedAttributes[] = sprintf('%s="%s"', $key, Quform::escape($value));
 546:             }
 547:         }
 548: 
 549:         $escapedAttributes = count($escapedAttributes) > 0 ? ' ' . implode(' ', $escapedAttributes) : '';
 550: 
 551:         return $escapedAttributes;
 552:     }
 553: 
 554:     /**
 555:      * Get random bytes with the given $length
 556:      *
 557:      * @param   int     $length
 558:      * @return  string
 559:      */
 560:     public static function randomBytes($length)
 561:     {
 562:         static $passwordHash;
 563: 
 564:         if ( ! isset($passwordHash)) {
 565:             if ( ! class_exists('PasswordHash')) {
 566:                 require_once ABSPATH . WPINC . '/class-phpass.php';
 567:             }
 568: 
 569:             $passwordHash = new PasswordHash(8, false);
 570:         }
 571: 
 572:         return $passwordHash->get_random_bytes($length);
 573:     }
 574: 
 575:     /**
 576:      * Generate a random string with the given $length
 577:      *
 578:      * @param   int     $length
 579:      * @return  string
 580:      */
 581:     public static function randomString($length)
 582:     {
 583:         $string = '';
 584: 
 585:         while (($len = strlen($string)) < $length) {
 586:             $size = $length - $len;
 587: 
 588:             $bytes = Quform::randomBytes($size);
 589: 
 590:             $string .= substr(str_replace(array('/', '+', '='), '', base64_encode($bytes)), 0, $size);
 591:         }
 592: 
 593:         return $string;
 594:     }
 595: 
 596:     /**
 597:      * Set a cookie
 598:      *
 599:      * @param  string  $name        The name of the cookie
 600:      * @param  string  $value       The value of the cookie
 601:      * @param  int     $expire      The time the cookie expires as Unix timestamp
 602:      * @param  bool    $secure      Send the cookie over HTTPS only
 603:      * @param  bool    $httpOnly    Make the cookie only accessible over the HTTP protocol
 604:      * @param  bool    $logFailure  Make a log entry if the cookie could not be created because headers already sent
 605:      */
 606:     public static function setCookie($name, $value, $expire, $secure = false, $httpOnly = false, $logFailure = false)
 607:     {
 608:         if ( ! headers_sent()) {
 609:             setcookie($name, $value, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure, $httpOnly);
 610:         } elseif ($logFailure && defined('WP_DEBUG') && WP_DEBUG) {
 611:             headers_sent($file, $line);
 612:             Quform::log("$name cookie cannot be set - headers already sent by $file on line $line");
 613:         }
 614:     }
 615: 
 616:     /**
 617:      * Set a cookie using a header
 618:      *
 619:      * @param  string  $name      The name of the cookie
 620:      * @param  string  $value     The value of the cookie
 621:      * @param  int     $expire    The time the cookie expires as Unix timestamp
 622:      * @param  bool    $secure    Whether the cookie should be sent over HTTPS only
 623:      * @param  bool    $httpOnly  Whether the cookie will be made accessible only through the HTTP protocol
 624:      * @param  bool    $sameSite  Whether the cookie will be available for cross-site requests
 625:      */
 626:     public static function setCookieHeader($name, $value, $expire, $secure = false, $httpOnly = false, $sameSite = 'Lax')
 627:     {
 628:         if (headers_sent()) {
 629:             return;
 630:         }
 631: 
 632:         $reserved_chars_from = array('=', ',', ';', ' ', "\t", "\r", "\n", "\v", "\f");
 633:         $reserved_chars_to = array('%3D', '%2C', '%3B', '%20', '%09', '%0D', '%0A', '%0B', '%0C');
 634: 
 635:         $str = str_replace($reserved_chars_from, $reserved_chars_to, $name);
 636: 
 637:         $str .= '=';
 638: 
 639:         if ((string) $value === '') {
 640:             $str .= 'deleted; expires=' . gmdate('D, d-M-Y H:i:s T', time() - 31536001) . '; Max-Age=0';
 641:         } else {
 642:             $str .= rawurlencode($value);
 643: 
 644:             if ($expire !== 0) {
 645:                 $maxAge = $expire - time();
 646:                 $maxAge = 0 >= $maxAge ? 0 : $maxAge;
 647:                 $str .= '; expires=' . gmdate('D, d-M-Y H:i:s T', $expire) . '; Max-Age=' . $maxAge;
 648:             }
 649:         }
 650: 
 651:         if (COOKIEPATH) {
 652:             $str .= '; path=' . COOKIEPATH;
 653:         }
 654: 
 655:         if (COOKIE_DOMAIN) {
 656:             $str .= '; domain=' . COOKIE_DOMAIN;
 657:         }
 658: 
 659:         if ($secure) {
 660:             $str .= '; secure';
 661:         }
 662: 
 663:         if ($httpOnly) {
 664:             $str .= '; httponly';
 665:         }
 666: 
 667:         if ($sameSite) {
 668:             $str .= '; samesite=' . $sameSite;
 669:         }
 670: 
 671:         header('Set-Cookie: ' . $str, false);
 672:     }
 673: 
 674:     /**
 675:      * Ensure the given number $x is between $min and $max inclusive
 676:      *
 677:      * @param   mixed  $x
 678:      * @param   mixed  $min
 679:      * @param   mixed  $max
 680:      * @return  mixed
 681:      */
 682:     public static function clamp($x, $min, $max)
 683:     {
 684:         return min(max($x, $min), $max);
 685:     }
 686: 
 687:     /**
 688:      * Get the given path with $extra appended
 689:      *
 690:      * @param   string  $path   The path
 691:      * @param   string  $extra  Extra path to append to the path
 692:      * @return  string          The combined path (no trailing slash is added)
 693:      */
 694:     public static function pathExtra($path, $extra = '')
 695:     {
 696:         if (Quform::isNonEmptyString($extra)) {
 697:             $path .= '/' . ltrim($extra, '/');
 698:         }
 699: 
 700:         return $path;
 701:     }
 702: 
 703:     /**
 704:      * Get a writable temporary directory
 705:      *
 706:      * @param   string  $extra  Extra path to append to the path
 707:      * @return  string          Path without trailing slash
 708:      */
 709:     public static function getTempDir($extra = '')
 710:     {
 711:         return Quform::pathExtra(untrailingslashit(Quform::wpGetTempDir()), $extra);
 712:     }
 713: 
 714:     /**
 715:      * Get a writable temporary directory
 716:      *
 717:      * This is a duplicate of the WP function get_temp_dir() because there was an issue with one
 718:      * popular plugin manually firing the wp_ajax_* hooks before WordPress does,
 719:      * causing this plugin to fatal error since this function was not available
 720:      * at that time. So we'll just use the function below in all cases instead of the
 721:      * WP function.
 722:      *
 723:      * @return string
 724:      */
 725:     private static function wpGetTempDir()
 726:     {
 727:         static $temp = '';
 728:         if ( defined('WP_TEMP_DIR') )
 729:             return trailingslashit(WP_TEMP_DIR);
 730: 
 731:         if ( $temp )
 732:             return trailingslashit( $temp );
 733: 
 734:         if ( function_exists('sys_get_temp_dir') ) {
 735:             $temp = sys_get_temp_dir();
 736:             if ( @is_dir( $temp ) && wp_is_writable( $temp ) )
 737:                 return trailingslashit( $temp );
 738:         }
 739: 
 740:         $temp = ini_get('upload_tmp_dir');
 741:         if ( @is_dir( $temp ) && wp_is_writable( $temp ) )
 742:             return trailingslashit( $temp );
 743: 
 744:         $temp = WP_CONTENT_DIR . '/';
 745:         if ( is_dir( $temp ) && wp_is_writable( $temp ) )
 746:             return $temp;
 747: 
 748:         $temp = '/tmp/'; // Bug fix for the WP version
 749: 
 750:         return $temp;
 751:     }
 752: 
 753:     /**
 754:      * Get the URL to the WP uploads directory
 755:      *
 756:      * @param   string  $extra  Extra path to append to the path
 757:      * @return  string
 758:      */
 759:     public static function getUploadsUrl($extra = '')
 760:     {
 761:         $uploads = wp_upload_dir();
 762: 
 763:         $url = Quform::pathExtra($uploads['baseurl'], $extra);
 764: 
 765:         $url = apply_filters('quform_uploads_url', $url, $extra);
 766: 
 767:         return $url;
 768:     }
 769: 
 770:     /**
 771:      * Get the absolute path to the WordPress upload directory. If the path is not writable it will return false.
 772:      *
 773:      * @param   string        $extra  Extra path to append to the path
 774:      * @return  string|false          The upload path or false on failure
 775:      */
 776:     public static function getUploadsDir($extra = '')
 777:     {
 778:         $uploads = wp_upload_dir();
 779: 
 780:         if ($uploads['error'] !== false) {
 781:             return false;
 782:         }
 783: 
 784:         $path = Quform::pathExtra($uploads['basedir'], $extra);
 785: 
 786:         $path = apply_filters('quform_uploads_dir', $path, $extra);
 787: 
 788:         return $path;
 789:     }
 790: 
 791:     /**
 792:      * Is PCRE compiled with Unicode support?
 793:      *
 794:      * @return bool
 795:      */
 796:     public static function hasPcreUnicodeSupport()
 797:     {
 798:         static $hasPcreUnicodeSupport;
 799: 
 800:         if ($hasPcreUnicodeSupport === null) {
 801:             $hasPcreUnicodeSupport = defined('PREG_BAD_UTF8_OFFSET_ERROR') && @preg_match('/\pL/u', 'a') == 1;
 802:         }
 803: 
 804:         return $hasPcreUnicodeSupport;
 805:     }
 806: 
 807:     /**
 808:      * Get the available locales for Kendo scripts
 809:      *
 810:      * @return array
 811:      */
 812:     public static function getLocales()
 813:     {
 814:         return array(
 815:             'aa' => array(
 816:                 'name' => 'Afar',
 817:                 'dateFormat' => 'd/m/Y',
 818:                 'timeFormat' => 'g:i A',
 819:                 'dateTimeFormat' => 'd/m/Y g:i A'
 820:             ),
 821:             'aa-DJ' => array(
 822:                 'name' => 'Afar (Djibouti)',
 823:                 'dateFormat' => 'd/m/Y',
 824:                 'timeFormat' => 'g:i A',
 825:                 'dateTimeFormat' => 'd/m/Y g:i A'
 826:             ),
 827:             'aa-ER' => array(
 828:                 'name' => 'Afar (Eritrea)',
 829:                 'dateFormat' => 'd/m/Y',
 830:                 'timeFormat' => 'g:i A',
 831:                 'dateTimeFormat' => 'd/m/Y g:i A'
 832:             ),
 833:             'aa-ET' => array(
 834:                 'name' => 'Afar (Ethiopia)',
 835:                 'dateFormat' => 'd/m/Y',
 836:                 'timeFormat' => 'g:i A',
 837:                 'dateTimeFormat' => 'd/m/Y g:i A'
 838:             ),
 839:             'af' => array(
 840:                 'name' => 'Afrikaans',
 841:                 'dateFormat' => 'Y-m-d',
 842:                 'timeFormat' => 'g:i a',
 843:                 'dateTimeFormat' => 'Y-m-d g:i a'
 844:             ),
 845:             'af-NA' => array(
 846:                 'name' => 'Afrikaans (Namibia)',
 847:                 'dateFormat' => 'Y-m-d',
 848:                 'timeFormat' => 'g:i a',
 849:                 'dateTimeFormat' => 'Y-m-d g:i a'
 850:             ),
 851:             'af-ZA' => array(
 852:                 'name' => 'Afrikaans (South Africa)',
 853:                 'dateFormat' => 'Y-m-d',
 854:                 'timeFormat' => 'g:i a',
 855:                 'dateTimeFormat' => 'Y-m-d g:i a'
 856:             ),
 857:             'agq' => array(
 858:                 'name' => 'Aghem',
 859:                 'dateFormat' => 'j/n/Y',
 860:                 'timeFormat' => 'H:i',
 861:                 'dateTimeFormat' => 'j/n/Y H:i'
 862:             ),
 863:             'agq-CM' => array(
 864:                 'name' => 'Aghem (Cameroon)',
 865:                 'dateFormat' => 'j/n/Y',
 866:                 'timeFormat' => 'H:i',
 867:                 'dateTimeFormat' => 'j/n/Y H:i'
 868:             ),
 869:             'ak' => array(
 870:                 'name' => 'Akan',
 871:                 'dateFormat' => 'Y/m/d',
 872:                 'timeFormat' => 'g:i A',
 873:                 'dateTimeFormat' => 'Y/m/d g:i A'
 874:             ),
 875:             'ak-GH' => array(
 876:                 'name' => 'Akan (Ghana)',
 877:                 'dateFormat' => 'Y/m/d',
 878:                 'timeFormat' => 'g:i A',
 879:                 'dateTimeFormat' => 'Y/m/d g:i A'
 880:             ),
 881:             'sq' => array(
 882:                 'name' => 'Albanian',
 883:                 'dateFormat' => 'j.n.Y',
 884:                 'timeFormat' => 'g:i a',
 885:                 'dateTimeFormat' => 'j.n.Y g:i a'
 886:             ),
 887:             'sq-AL' => array(
 888:                 'name' => 'Albanian (Albania)',
 889:                 'dateFormat' => 'j.n.Y',
 890:                 'timeFormat' => 'g:i a',
 891:                 'dateTimeFormat' => 'j.n.Y g:i a'
 892:             ),
 893:             'sq-MK' => array(
 894:                 'name' => 'Albanian (Former Yugoslav Republic of Macedonia)',
 895:                 'dateFormat' => 'j.n.Y',
 896:                 'timeFormat' => 'H:i',
 897:                 'dateTimeFormat' => 'j.n.Y H:i'
 898:             ),
 899:             'sq-XK' => array(
 900:                 'name' => 'Albanian (Kosovo)',
 901:                 'dateFormat' => 'j.n.Y',
 902:                 'timeFormat' => 'H:i',
 903:                 'dateTimeFormat' => 'j.n.Y H:i'
 904:             ),
 905:             'am' => array(
 906:                 'name' => 'Amharic',
 907:                 'dateFormat' => 'd/m/Y',
 908:                 'timeFormat' => 'g:i A',
 909:                 'dateTimeFormat' => 'd/m/Y g:i A'
 910:             ),
 911:             'am-ET' => array(
 912:                 'name' => 'Amharic (Ethiopia)',
 913:                 'dateFormat' => 'd/m/Y',
 914:                 'timeFormat' => 'g:i A',
 915:                 'dateTimeFormat' => 'd/m/Y g:i A'
 916:             ),
 917:             'ar' => array(
 918:                 'name' => 'Arabic',
 919:                 'dateFormat' => 'd/m/y',
 920:                 'timeFormat' => 'h:i A',
 921:                 'dateTimeFormat' => 'd/m/y h:i A'
 922:             ),
 923:             'ar-DZ' => array(
 924:                 'name' => 'Arabic (Algeria)',
 925:                 'dateFormat' => 'd-m-Y',
 926:                 'timeFormat' => 'G:i',
 927:                 'dateTimeFormat' => 'd-m-Y G:i'
 928:             ),
 929:             'ar-BH' => array(
 930:                 'name' => 'Arabic (Bahrain)',
 931:                 'dateFormat' => 'd/m/Y',
 932:                 'timeFormat' => 'h:i A',
 933:                 'dateTimeFormat' => 'd/m/Y h:i A'
 934:             ),
 935:             'ar-TD' => array(
 936:                 'name' => 'Arabic (Chad)',
 937:                 'dateFormat' => 'j/n/Y',
 938:                 'timeFormat' => 'g:i A',
 939:                 'dateTimeFormat' => 'j/n/Y g:i A'
 940:             ),
 941:             'ar-KM' => array(
 942:                 'name' => 'Arabic (Comoros)',
 943:                 'dateFormat' => 'j/n/Y',
 944:                 'timeFormat' => 'H:i',
 945:                 'dateTimeFormat' => 'j/n/Y H:i'
 946:             ),
 947:             'ar-DJ' => array(
 948:                 'name' => 'Arabic (Djibouti)',
 949:                 'dateFormat' => 'j/n/Y',
 950:                 'timeFormat' => 'g:i A',
 951:                 'dateTimeFormat' => 'j/n/Y g:i A'
 952:             ),
 953:             'ar-EG' => array(
 954:                 'name' => 'Arabic (Egypt)',
 955:                 'dateFormat' => 'd/m/Y',
 956:                 'timeFormat' => 'h:i A',
 957:                 'dateTimeFormat' => 'd/m/Y h:i A'
 958:             ),
 959:             'ar-ER' => array(
 960:                 'name' => 'Arabic (Eritrea)',
 961:                 'dateFormat' => 'j/n/Y',
 962:                 'timeFormat' => 'g:i A',
 963:                 'dateTimeFormat' => 'j/n/Y g:i A'
 964:             ),
 965:             'ar-IQ' => array(
 966:                 'name' => 'Arabic (Iraq)',
 967:                 'dateFormat' => 'd/m/Y',
 968:                 'timeFormat' => 'h:i A',
 969:                 'dateTimeFormat' => 'd/m/Y h:i A'
 970:             ),
 971:             'ar-IL' => array(
 972:                 'name' => 'Arabic (Israel)',
 973:                 'dateFormat' => 'j/n/Y',
 974:                 'timeFormat' => 'G:i',
 975:                 'dateTimeFormat' => 'j/n/Y G:i'
 976:             ),
 977:             'ar-JO' => array(
 978:                 'name' => 'Arabic (Jordan)',
 979:                 'dateFormat' => 'd/m/Y',
 980:                 'timeFormat' => 'h:i A',
 981:                 'dateTimeFormat' => 'd/m/Y h:i A'
 982:             ),
 983:             'ar-KW' => array(
 984:                 'name' => 'Arabic (Kuwait)',
 985:                 'dateFormat' => 'd/m/Y',
 986:                 'timeFormat' => 'h:i A',
 987:                 'dateTimeFormat' => 'd/m/Y h:i A'
 988:             ),
 989:             'ar-LB' => array(
 990:                 'name' => 'Arabic (Lebanon)',
 991:                 'dateFormat' => 'd/m/Y',
 992:                 'timeFormat' => 'h:i A',
 993:                 'dateTimeFormat' => 'd/m/Y h:i A'
 994:             ),
 995:             'ar-LY' => array(
 996:                 'name' => 'Arabic (Libya)',
 997:                 'dateFormat' => 'd/m/Y',
 998:                 'timeFormat' => 'h:i A',
 999:                 'dateTimeFormat' => 'd/m/Y h:i A'
1000:             ),
1001:             'ar-MR' => array(
1002:                 'name' => 'Arabic (Mauritania)',
1003:                 'dateFormat' => 'j/n/Y',
1004:                 'timeFormat' => 'g:i A',
1005:                 'dateTimeFormat' => 'j/n/Y g:i A'
1006:             ),
1007:             'ar-MA' => array(
1008:                 'name' => 'Arabic (Morocco)',
1009:                 'dateFormat' => 'd-m-Y',
1010:                 'timeFormat' => 'G:i',
1011:                 'dateTimeFormat' => 'd-m-Y G:i'
1012:             ),
1013:             'ar-OM' => array(
1014:                 'name' => 'Arabic (Oman)',
1015:                 'dateFormat' => 'd/m/Y',
1016:                 'timeFormat' => 'h:i A',
1017:                 'dateTimeFormat' => 'd/m/Y h:i A'
1018:             ),
1019:             'ar-PS' => array(
1020:                 'name' => 'Arabic (Palestinian Territories)',
1021:                 'dateFormat' => 'j/n/Y',
1022:                 'timeFormat' => 'g:i A',
1023:                 'dateTimeFormat' => 'j/n/Y g:i A'
1024:             ),
1025:             'ar-QA' => array(
1026:                 'name' => 'Arabic (Qatar)',
1027:                 'dateFormat' => 'd/m/Y',
1028:                 'timeFormat' => 'h:i A',
1029:                 'dateTimeFormat' => 'd/m/Y h:i A'
1030:             ),
1031:             'ar-SA' => array(
1032:                 'name' => 'Arabic (Saudi Arabia)',
1033:                 'dateFormat' => 'd/m/y',
1034:                 'timeFormat' => 'h:i A',
1035:                 'dateTimeFormat' => 'd/m/y h:i A'
1036:             ),
1037:             'ar-SO' => array(
1038:                 'name' => 'Arabic (Somalia)',
1039:                 'dateFormat' => 'j/n/Y',
1040:                 'timeFormat' => 'g:i A',
1041:                 'dateTimeFormat' => 'j/n/Y g:i A'
1042:             ),
1043:             'ar-SS' => array(
1044:                 'name' => 'Arabic (South Sudan)',
1045:                 'dateFormat' => 'j/n/Y',
1046:                 'timeFormat' => 'g:i A',
1047:                 'dateTimeFormat' => 'j/n/Y g:i A'
1048:             ),
1049:             'ar-SD' => array(
1050:                 'name' => 'Arabic (Sudan)',
1051:                 'dateFormat' => 'j/n/Y',
1052:                 'timeFormat' => 'g:i A',
1053:                 'dateTimeFormat' => 'j/n/Y g:i A'
1054:             ),
1055:             'ar-SY' => array(
1056:                 'name' => 'Arabic (Syria)',
1057:                 'dateFormat' => 'd/m/Y',
1058:                 'timeFormat' => 'h:i A',
1059:                 'dateTimeFormat' => 'd/m/Y h:i A'
1060:             ),
1061:             'ar-TN' => array(
1062:                 'name' => 'Arabic (Tunisia)',
1063:                 'dateFormat' => 'd-m-Y',
1064:                 'timeFormat' => 'G:i',
1065:                 'dateTimeFormat' => 'd-m-Y G:i'
1066:             ),
1067:             'ar-AE' => array(
1068:                 'name' => 'Arabic (U.A.E.)',
1069:                 'dateFormat' => 'd/m/Y',
1070:                 'timeFormat' => 'h:i A',
1071:                 'dateTimeFormat' => 'd/m/Y h:i A'
1072:             ),
1073:             'ar-001' => array(
1074:                 'name' => 'Arabic (World)',
1075:                 'dateFormat' => 'j/n/Y',
1076:                 'timeFormat' => 'g:i A',
1077:                 'dateTimeFormat' => 'j/n/Y g:i A'
1078:             ),
1079:             'ar-YE' => array(
1080:                 'name' => 'Arabic (Yemen)',
1081:                 'dateFormat' => 'd/m/Y',
1082:                 'timeFormat' => 'h:i A',
1083:                 'dateTimeFormat' => 'd/m/Y h:i A'
1084:             ),
1085:             'hy' => array(
1086:                 'name' => 'Armenian',
1087:                 'dateFormat' => 'd.m.Y',
1088:                 'timeFormat' => 'H:i',
1089:                 'dateTimeFormat' => 'd.m.Y H:i'
1090:             ),
1091:             'hy-AM' => array(
1092:                 'name' => 'Armenian (Armenia)',
1093:                 'dateFormat' => 'd.m.Y',
1094:                 'timeFormat' => 'H:i',
1095:                 'dateTimeFormat' => 'd.m.Y H:i'
1096:             ),
1097:             'as' => array(
1098:                 'name' => 'Assamese',
1099:                 'dateFormat' => 'd-m-Y',
1100:                 'timeFormat' => 'A g:i',
1101:                 'dateTimeFormat' => 'd-m-Y A g:i'
1102:             ),
1103:             'as-IN' => array(
1104:                 'name' => 'Assamese (India)',
1105:                 'dateFormat' => 'd-m-Y',
1106:                 'timeFormat' => 'A g:i',
1107:                 'dateTimeFormat' => 'd-m-Y A g:i'
1108:             ),
1109:             'asa' => array(
1110:                 'name' => 'Asu',
1111:                 'dateFormat' => 'd/m/Y',
1112:                 'timeFormat' => 'H:i',
1113:                 'dateTimeFormat' => 'd/m/Y H:i'
1114:             ),
1115:             'asa-TZ' => array(
1116:                 'name' => 'Asu (Tanzania)',
1117:                 'dateFormat' => 'd/m/Y',
1118:                 'timeFormat' => 'H:i',
1119:                 'dateTimeFormat' => 'd/m/Y H:i'
1120:             ),
1121:             'ast' => array(
1122:                 'name' => 'Asturian',
1123:                 'dateFormat' => 'j/n/Y',
1124:                 'timeFormat' => 'H:i',
1125:                 'dateTimeFormat' => 'j/n/Y H:i'
1126:             ),
1127:             'ast-ES' => array(
1128:                 'name' => 'Asturian (Spain)',
1129:                 'dateFormat' => 'j/n/Y',
1130:                 'timeFormat' => 'H:i',
1131:                 'dateTimeFormat' => 'j/n/Y H:i'
1132:             ),
1133:             'az' => array(
1134:                 'name' => 'Azeri',
1135:                 'dateFormat' => 'd.m.Y',
1136:                 'timeFormat' => 'H:i',
1137:                 'dateTimeFormat' => 'd.m.Y H:i'
1138:             ),
1139:             'az-Cyrl' => array(
1140:                 'name' => 'Azeri (Cyrillic)',
1141:                 'dateFormat' => 'd.m.Y',
1142:                 'timeFormat' => 'G:i',
1143:                 'dateTimeFormat' => 'd.m.Y G:i'
1144:             ),
1145:             'az-Cyrl-AZ' => array(
1146:                 'name' => 'Azeri (Cyrillic, Azerbaijan)',
1147:                 'dateFormat' => 'd.m.Y',
1148:                 'timeFormat' => 'G:i',
1149:                 'dateTimeFormat' => 'd.m.Y G:i'
1150:             ),
1151:             'az-Latn' => array(
1152:                 'name' => 'Azeri (Latin)',
1153:                 'dateFormat' => 'd.m.Y',
1154:                 'timeFormat' => 'H:i',
1155:                 'dateTimeFormat' => 'd.m.Y H:i'
1156:             ),
1157:             'az-Latn-AZ' => array(
1158:                 'name' => 'Azeri (Latin, Azerbaijan)',
1159:                 'dateFormat' => 'd.m.Y',
1160:                 'timeFormat' => 'H:i',
1161:                 'dateTimeFormat' => 'd.m.Y H:i'
1162:             ),
1163:             'ksf' => array(
1164:                 'name' => 'Bafia',
1165:                 'dateFormat' => 'j/n/Y',
1166:                 'timeFormat' => 'H:i',
1167:                 'dateTimeFormat' => 'j/n/Y H:i'
1168:             ),
1169:             'ksf-CM' => array(
1170:                 'name' => 'Bafia (Cameroon)',
1171:                 'dateFormat' => 'j/n/Y',
1172:                 'timeFormat' => 'H:i',
1173:                 'dateTimeFormat' => 'j/n/Y H:i'
1174:             ),
1175:             'bm' => array(
1176:                 'name' => 'Bambara',
1177:                 'dateFormat' => 'j/n/Y',
1178:                 'timeFormat' => 'H:i',
1179:                 'dateTimeFormat' => 'j/n/Y H:i'
1180:             ),
1181:             'bm-Latn' => array(
1182:                 'name' => 'Bambara (Latin)',
1183:                 'dateFormat' => 'j/n/Y',
1184:                 'timeFormat' => 'H:i',
1185:                 'dateTimeFormat' => 'j/n/Y H:i'
1186:             ),
1187:             'bm-Latn-ML' => array(
1188:                 'name' => 'Bambara (Latin, Mali)',
1189:                 'dateFormat' => 'j/n/Y',
1190:                 'timeFormat' => 'H:i',
1191:                 'dateTimeFormat' => 'j/n/Y H:i'
1192:             ),
1193:             'bas' => array(
1194:                 'name' => 'Basaa',
1195:                 'dateFormat' => 'j/n/Y',
1196:                 'timeFormat' => 'H:i',
1197:                 'dateTimeFormat' => 'j/n/Y H:i'
1198:             ),
1199:             'bas-CM' => array(
1200:                 'name' => 'Basaa (Cameroon)',
1201:                 'dateFormat' => 'j/n/Y',
1202:                 'timeFormat' => 'H:i',
1203:                 'dateTimeFormat' => 'j/n/Y H:i'
1204:             ),
1205:             'ba' => array(
1206:                 'name' => 'Bashkir',
1207:                 'dateFormat' => 'd.m.y',
1208:                 'timeFormat' => 'G:i',
1209:                 'dateTimeFormat' => 'd.m.y G:i'
1210:             ),
1211:             'ba-RU' => array(
1212:                 'name' => 'Bashkir (Russia)',
1213:                 'dateFormat' => 'd.m.y',
1214:                 'timeFormat' => 'G:i',
1215:                 'dateTimeFormat' => 'd.m.y G:i'
1216:             ),
1217:             'eu' => array(
1218:                 'name' => 'Basque',
1219:                 'dateFormat' => 'Y/m/d',
1220:                 'timeFormat' => 'H:i',
1221:                 'dateTimeFormat' => 'Y/m/d H:i'
1222:             ),
1223:             'eu-ES' => array(
1224:                 'name' => 'Basque (Spain)',
1225:                 'dateFormat' => 'Y/m/d',
1226:                 'timeFormat' => 'H:i',
1227:                 'dateTimeFormat' => 'Y/m/d H:i'
1228:             ),
1229:             'be' => array(
1230:                 'name' => 'Belarusian',
1231:                 'dateFormat' => 'd.m.y',
1232:                 'timeFormat' => 'H:i',
1233:                 'dateTimeFormat' => 'd.m.y H:i'
1234:             ),
1235:             'be-BY' => array(
1236:                 'name' => 'Belarusian (Belarus)',
1237:                 'dateFormat' => 'd.m.y',
1238:                 'timeFormat' => 'H:i',
1239:                 'dateTimeFormat' => 'd.m.y H:i'
1240:             ),
1241:             'bem' => array(
1242:                 'name' => 'Bemba',
1243:                 'dateFormat' => 'd/m/Y',
1244:                 'timeFormat' => 'g:i A',
1245:                 'dateTimeFormat' => 'd/m/Y g:i A'
1246:             ),
1247:             'bem-ZM' => array(
1248:                 'name' => 'Bemba (Zambia)',
1249:                 'dateFormat' => 'd/m/Y',
1250:                 'timeFormat' => 'g:i A',
1251:                 'dateTimeFormat' => 'd/m/Y g:i A'
1252:             ),
1253:             'bez' => array(
1254:                 'name' => 'Bena',
1255:                 'dateFormat' => 'd/m/Y',
1256:                 'timeFormat' => 'H:i',
1257:                 'dateTimeFormat' => 'd/m/Y H:i'
1258:             ),
1259:             'bez-TZ' => array(
1260:                 'name' => 'Bena (Tanzania)',
1261:                 'dateFormat' => 'd/m/Y',
1262:                 'timeFormat' => 'H:i',
1263:                 'dateTimeFormat' => 'd/m/Y H:i'
1264:             ),
1265:             'bn' => array(
1266:                 'name' => 'Bengali',
1267:                 'dateFormat' => 'd-m-y',
1268:                 'timeFormat' => 'H.i',
1269:                 'dateTimeFormat' => 'd-m-y H.i'
1270:             ),
1271:             'bn-BD' => array(
1272:                 'name' => 'Bengali (Bangladesh)',
1273:                 'dateFormat' => 'd-m-y',
1274:                 'timeFormat' => 'H.i',
1275:                 'dateTimeFormat' => 'd-m-y H.i'
1276:             ),
1277:             'bn-IN' => array(
1278:                 'name' => 'Bengali (India)',
1279:                 'dateFormat' => 'd-m-y',
1280:                 'timeFormat' => 'H.i',
1281:                 'dateTimeFormat' => 'd-m-y H.i'
1282:             ),
1283:             'byn' => array(
1284:                 'name' => 'Bilen',
1285:                 'dateFormat' => 'd/m/Y',
1286:                 'timeFormat' => 'g:i A',
1287:                 'dateTimeFormat' => 'd/m/Y g:i A'
1288:             ),
1289:             'byn-ER' => array(
1290:                 'name' => 'Bilen (Eritrea)',
1291:                 'dateFormat' => 'd/m/Y',
1292:                 'timeFormat' => 'g:i A',
1293:                 'dateTimeFormat' => 'd/m/Y g:i A'
1294:             ),
1295:             'bin' => array(
1296:                 'name' => 'Bini',
1297:                 'dateFormat' => 'j/n/Y',
1298:                 'timeFormat' => 'g:iA',
1299:                 'dateTimeFormat' => 'j/n/Y g:iA'
1300:             ),
1301:             'bin-NG' => array(
1302:                 'name' => 'Bini (Nigeria)',
1303:                 'dateFormat' => 'j/n/Y',
1304:                 'timeFormat' => 'g:iA',
1305:                 'dateTimeFormat' => 'j/n/Y g:iA'
1306:             ),
1307:             'brx' => array(
1308:                 'name' => 'Bodo',
1309:                 'dateFormat' => 'n/j/Y',
1310:                 'timeFormat' => 'g:i A',
1311:                 'dateTimeFormat' => 'n/j/Y g:i A'
1312:             ),
1313:             'brx-IN' => array(
1314:                 'name' => 'Bodo (India)',
1315:                 'dateFormat' => 'n/j/Y',
1316:                 'timeFormat' => 'g:i A',
1317:                 'dateTimeFormat' => 'n/j/Y g:i A'
1318:             ),
1319:             'bs' => array(
1320:                 'name' => 'Bosnian',
1321:                 'dateFormat' => 'd.m.Y.',
1322:                 'timeFormat' => 'H:i',
1323:                 'dateTimeFormat' => 'd.m.Y. H:i'
1324:             ),
1325:             'bs-Cyrl' => array(
1326:                 'name' => 'Bosnian (Cyrillic)',
1327:                 'dateFormat' => 'j.n.Y',
1328:                 'timeFormat' => 'G:i',
1329:                 'dateTimeFormat' => 'j.n.Y G:i'
1330:             ),
1331:             'bs-Cyrl-BA' => array(
1332:                 'name' => 'Bosnian (Cyrillic, Bosnia and Herzegovina)',
1333:                 'dateFormat' => 'j.n.Y',
1334:                 'timeFormat' => 'G:i',
1335:                 'dateTimeFormat' => 'j.n.Y G:i'
1336:             ),
1337:             'bs-Latn' => array(
1338:                 'name' => 'Bosnian (Latin)',
1339:                 'dateFormat' => 'd.m.Y.',
1340:                 'timeFormat' => 'H:i',
1341:                 'dateTimeFormat' => 'd.m.Y. H:i'
1342:             ),
1343:             'bs-Latn-BA' => array(
1344:                 'name' => 'Bosnian (Latin, Bosnia and Herzegovina)',
1345:                 'dateFormat' => 'd.m.Y.',
1346:                 'timeFormat' => 'H:i',
1347:                 'dateTimeFormat' => 'd.m.Y. H:i'
1348:             ),
1349:             'br' => array(
1350:                 'name' => 'Breton',
1351:                 'dateFormat' => 'Y-m-d',
1352:                 'timeFormat' => 'H:i',
1353:                 'dateTimeFormat' => 'Y-m-d H:i'
1354:             ),
1355:             'br-FR' => array(
1356:                 'name' => 'Breton (France)',
1357:                 'dateFormat' => 'Y-m-d',
1358:                 'timeFormat' => 'H:i',
1359:                 'dateTimeFormat' => 'Y-m-d H:i'
1360:             ),
1361:             'bg' => array(
1362:                 'name' => 'Bulgarian',
1363:                 'dateFormat' => 'j.n.Y г.',
1364:                 'timeFormat' => 'G:i',
1365:                 'dateTimeFormat' => 'j.n.Y г. G:i'
1366:             ),
1367:             'bg-BG' => array(
1368:                 'name' => 'Bulgarian (Bulgaria)',
1369:                 'dateFormat' => 'j.n.Y г.',
1370:                 'timeFormat' => 'G:i',
1371:                 'dateTimeFormat' => 'j.n.Y г. G:i'
1372:             ),
1373:             'my' => array(
1374:                 'name' => 'Burmese',
1375:                 'dateFormat' => 'd-m-Y',
1376:                 'timeFormat' => 'H:i',
1377:                 'dateTimeFormat' => 'd-m-Y H:i'
1378:             ),
1379:             'my-MM' => array(
1380:                 'name' => 'Burmese (Myanmar)',
1381:                 'dateFormat' => 'd-m-Y',
1382:                 'timeFormat' => 'H:i',
1383:                 'dateTimeFormat' => 'd-m-Y H:i'
1384:             ),
1385:             'ca' => array(
1386:                 'name' => 'Catalan',
1387:                 'dateFormat' => 'j/n/Y',
1388:                 'timeFormat' => 'G:i',
1389:                 'dateTimeFormat' => 'j/n/Y G:i'
1390:             ),
1391:             'ca-AD' => array(
1392:                 'name' => 'Catalan (Andorra)',
1393:                 'dateFormat' => 'j/n/Y',
1394:                 'timeFormat' => 'G:i',
1395:                 'dateTimeFormat' => 'j/n/Y G:i'
1396:             ),
1397:             'ca-FR' => array(
1398:                 'name' => 'Catalan (France)',
1399:                 'dateFormat' => 'j/n/Y',
1400:                 'timeFormat' => 'G:i',
1401:                 'dateTimeFormat' => 'j/n/Y G:i'
1402:             ),
1403:             'ca-IT' => array(
1404:                 'name' => 'Catalan (Italy)',
1405:                 'dateFormat' => 'j/n/Y',
1406:                 'timeFormat' => 'G:i',
1407:                 'dateTimeFormat' => 'j/n/Y G:i'
1408:             ),
1409:             'ca-ES' => array(
1410:                 'name' => 'Catalan (Spain)',
1411:                 'dateFormat' => 'j/n/Y',
1412:                 'timeFormat' => 'G:i',
1413:                 'dateTimeFormat' => 'j/n/Y G:i'
1414:             ),
1415:             'tzm' => array(
1416:                 'name' => 'Central Atlas Tamazight',
1417:                 'dateFormat' => 'd-m-Y',
1418:                 'timeFormat' => 'G:i',
1419:                 'dateTimeFormat' => 'd-m-Y G:i'
1420:             ),
1421:             'tzm-Arab' => array(
1422:                 'name' => 'Central Atlas Tamazight (Arabic)',
1423:                 'dateFormat' => 'j/n/Y',
1424:                 'timeFormat' => 'G:i',
1425:                 'dateTimeFormat' => 'j/n/Y G:i'
1426:             ),
1427:             'tzm-Arab-MA' => array(
1428:                 'name' => 'Central Atlas Tamazight (Arabic, Morocco)',
1429:                 'dateFormat' => 'j/n/Y',
1430:                 'timeFormat' => 'G:i',
1431:                 'dateTimeFormat' => 'j/n/Y G:i'
1432:             ),
1433:             'tzm-Latn' => array(
1434:                 'name' => 'Central Atlas Tamazight (Latin)',
1435:                 'dateFormat' => 'd-m-Y',
1436:                 'timeFormat' => 'G:i',
1437:                 'dateTimeFormat' => 'd-m-Y G:i'
1438:             ),
1439:             'tzm-Latn-DZ' => array(
1440:                 'name' => 'Central Atlas Tamazight (Latin, Algeria)',
1441:                 'dateFormat' => 'd-m-Y',
1442:                 'timeFormat' => 'G:i',
1443:                 'dateTimeFormat' => 'd-m-Y G:i'
1444:             ),
1445:             'tzm-Latn-MA' => array(
1446:                 'name' => 'Central Atlas Tamazight (Latin, Morocco)',
1447:                 'dateFormat' => 'd/m/Y',
1448:                 'timeFormat' => 'H:i',
1449:                 'dateTimeFormat' => 'd/m/Y H:i'
1450:             ),
1451:             'tzm-Tfng' => array(
1452:                 'name' => 'Central Atlas Tamazight (Tifinagh)',
1453:                 'dateFormat' => 'd-m-Y',
1454:                 'timeFormat' => 'G:i',
1455:                 'dateTimeFormat' => 'd-m-Y G:i'
1456:             ),
1457:             'tzm-Tfng-MA' => array(
1458:                 'name' => 'Central Atlas Tamazight (Tifinagh, Morocco)',
1459:                 'dateFormat' => 'd-m-Y',
1460:                 'timeFormat' => 'G:i',
1461:                 'dateTimeFormat' => 'd-m-Y G:i'
1462:             ),
1463:             'ku' => array(
1464:                 'name' => 'Central Kurdish',
1465:                 'dateFormat' => 'Y/m/d',
1466:                 'timeFormat' => 'h:i A',
1467:                 'dateTimeFormat' => 'Y/m/d h:i A'
1468:             ),
1469:             'ku-Arab' => array(
1470:                 'name' => 'Central Kurdish (Arabic)',
1471:                 'dateFormat' => 'Y/m/d',
1472:                 'timeFormat' => 'h:i A',
1473:                 'dateTimeFormat' => 'Y/m/d h:i A'
1474:             ),
1475:             'ku-Arab-IQ' => array(
1476:                 'name' => 'Central Kurdish (Arabic, Iraq)',
1477:                 'dateFormat' => 'Y/m/d',
1478:                 'timeFormat' => 'h:i A',
1479:                 'dateTimeFormat' => 'Y/m/d h:i A'
1480:             ),
1481:             'ce' => array(
1482:                 'name' => 'Chechen',
1483:                 'dateFormat' => 'Y-m-d',
1484:                 'timeFormat' => 'H:i',
1485:                 'dateTimeFormat' => 'Y-m-d H:i'
1486:             ),
1487:             'ce-RU' => array(
1488:                 'name' => 'Chechen (Russia)',
1489:                 'dateFormat' => 'Y-m-d',
1490:                 'timeFormat' => 'H:i',
1491:                 'dateTimeFormat' => 'Y-m-d H:i'
1492:             ),
1493:             'chr' => array(
1494:                 'name' => 'Cherokee',
1495:                 'dateFormat' => 'n/j/Y',
1496:                 'timeFormat' => 'g:i A',
1497:                 'dateTimeFormat' => 'n/j/Y g:i A'
1498:             ),
1499:             'chr-Cher' => array(
1500:                 'name' => 'Cherokee',
1501:                 'dateFormat' => 'n/j/Y',
1502:                 'timeFormat' => 'g:i A',
1503:                 'dateTimeFormat' => 'n/j/Y g:i A'
1504:             ),
1505:             'chr-Cher-US' => array(
1506:                 'name' => 'Cherokee (United States)',
1507:                 'dateFormat' => 'n/j/Y',
1508:                 'timeFormat' => 'g:i A',
1509:                 'dateTimeFormat' => 'n/j/Y g:i A'
1510:             ),
1511:             'cgg' => array(
1512:                 'name' => 'Chiga',
1513:                 'dateFormat' => 'd/m/Y',
1514:                 'timeFormat' => 'H:i',
1515:                 'dateTimeFormat' => 'd/m/Y H:i'
1516:             ),
1517:             'cgg-UG' => array(
1518:                 'name' => 'Chiga (Uganda)',
1519:                 'dateFormat' => 'd/m/Y',
1520:                 'timeFormat' => 'H:i',
1521:                 'dateTimeFormat' => 'd/m/Y H:i'
1522:             ),
1523:             'zh' => array(
1524:                 'name' => 'Chinese',
1525:                 'dateFormat' => 'Y/n/j',
1526:                 'timeFormat' => 'G:i',
1527:                 'dateTimeFormat' => 'Y/n/j G:i'
1528:             ),
1529:             'zh-CN' => array(
1530:                 'name' => 'Chinese (Simplified, China)',
1531:                 'dateFormat' => 'Y/n/j',
1532:                 'timeFormat' => 'G:i',
1533:                 'dateTimeFormat' => 'Y/n/j G:i'
1534:             ),
1535:             'zh-Hans' => array(
1536:                 'name' => 'Chinese (Simplified Han)',
1537:                 'dateFormat' => 'Y/n/j',
1538:                 'timeFormat' => 'G:i',
1539:                 'dateTimeFormat' => 'Y/n/j G:i'
1540:             ),
1541:             'zh-Hans-HK' => array(
1542:                 'name' => 'Chinese (Simplified Han, Hong Kong SAR)',
1543:                 'dateFormat' => 'j/n/Y',
1544:                 'timeFormat' => 'Ag:i',
1545:                 'dateTimeFormat' => 'j/n/Y Ag:i'
1546:             ),
1547:             'zh-Hans-MO' => array(
1548:                 'name' => 'Chinese (Simplified Han, Macao SAR)',
1549:                 'dateFormat' => 'j/n/Y',
1550:                 'timeFormat' => 'Ag:i',
1551:                 'dateTimeFormat' => 'j/n/Y Ag:i'
1552:             ),
1553:             'zh-SG' => array(
1554:                 'name' => 'Chinese (Simplified, Singapore)',
1555:                 'dateFormat' => 'j/n/Y',
1556:                 'timeFormat' => 'A g:i',
1557:                 'dateTimeFormat' => 'j/n/Y A g:i'
1558:             ),
1559:             'zh-Hant' => array(
1560:                 'name' => 'Chinese (Traditional)',
1561:                 'dateFormat' => 'j/n/Y',
1562:                 'timeFormat' => 'G:i',
1563:                 'dateTimeFormat' => 'j/n/Y G:i'
1564:             ),
1565:             'zh-HK' => array(
1566:                 'name' => 'Chinese (Traditional, Hong Kong SAR)',
1567:                 'dateFormat' => 'j/n/Y',
1568:                 'timeFormat' => 'G:i',
1569:                 'dateTimeFormat' => 'j/n/Y G:i'
1570:             ),
1571:             'zh-MO' => array(
1572:                 'name' => 'Chinese (Traditional, Macao SAR)',
1573:                 'dateFormat' => 'j/n/Y',
1574:                 'timeFormat' => 'G:i',
1575:                 'dateTimeFormat' => 'j/n/Y G:i'
1576:             ),
1577:             'zh-TW' => array(
1578:                 'name' => 'Chinese (Traditional, Taiwan)',
1579:                 'dateFormat' => 'Y/n/j',
1580:                 'timeFormat' => 'A h:i',
1581:                 'dateTimeFormat' => 'Y/n/j A h:i'
1582:             ),
1583:             'zh-CHS' => array(
1584:                 'name' => 'Chinese (Simplified) (zh-CHS)',
1585:                 'dateFormat' => 'Y/n/j',
1586:                 'timeFormat' => 'G:i',
1587:                 'dateTimeFormat' => 'Y/n/j G:i'
1588:             ),
1589:             'zh-CHT' => array(
1590:                 'name' => 'Chinese (Traditional) (zh-CHT)',
1591:                 'dateFormat' => 'j/n/Y',
1592:                 'timeFormat' => 'G:i',
1593:                 'dateTimeFormat' => 'j/n/Y G:i'
1594:             ),
1595:             'cu' => array(
1596:                 'name' => 'Church Slavic',
1597:                 'dateFormat' => 'Y.m.d',
1598:                 'timeFormat' => 'H:i',
1599:                 'dateTimeFormat' => 'Y.m.d H:i'
1600:             ),
1601:             'cu-RU' => array(
1602:                 'name' => 'Church Slavic (Russia)',
1603:                 'dateFormat' => 'Y.m.d',
1604:                 'timeFormat' => 'H:i',
1605:                 'dateTimeFormat' => 'Y.m.d H:i'
1606:             ),
1607:             'ksh' => array(
1608:                 'name' => 'Colognian',
1609:                 'dateFormat' => 'j. n. Y',
1610:                 'timeFormat' => 'H:i',
1611:                 'dateTimeFormat' => 'j. n. Y H:i'
1612:             ),
1613:             'ksh-DE' => array(
1614:                 'name' => 'Colognian (Germany)',
1615:                 'dateFormat' => 'j. n. Y',
1616:                 'timeFormat' => 'H:i',
1617:                 'dateTimeFormat' => 'j. n. Y H:i'
1618:             ),
1619:             'kw' => array(
1620:                 'name' => 'Cornish',
1621:                 'dateFormat' => 'd/m/Y',
1622:                 'timeFormat' => 'H:i',
1623:                 'dateTimeFormat' => 'd/m/Y H:i'
1624:             ),
1625:             'kw-GB' => array(
1626:                 'name' => 'Cornish (United Kingdom)',
1627:                 'dateFormat' => 'd/m/Y',
1628:                 'timeFormat' => 'H:i',
1629:                 'dateTimeFormat' => 'd/m/Y H:i'
1630:             ),
1631:             'co' => array(
1632:                 'name' => 'Corsican',
1633:                 'dateFormat' => 'd/m/Y',
1634:                 'timeFormat' => 'H:i',
1635:                 'dateTimeFormat' => 'd/m/Y H:i'
1636:             ),
1637:             'co-FR' => array(
1638:                 'name' => 'Corsican (France)',
1639:                 'dateFormat' => 'd/m/Y',
1640:                 'timeFormat' => 'H:i',
1641:                 'dateTimeFormat' => 'd/m/Y H:i'
1642:             ),
1643:             'hr' => array(
1644:                 'name' => 'Croatian',
1645:                 'dateFormat' => 'j.n.Y.',
1646:                 'timeFormat' => 'G:i',
1647:                 'dateTimeFormat' => 'j.n.Y. G:i'
1648:             ),
1649:             'hr-BA' => array(
1650:                 'name' => 'Croatian (Latin, Bosnia and Herzegovina)',
1651:                 'dateFormat' => 'd.m.Y.',
1652:                 'timeFormat' => 'H:i',
1653:                 'dateTimeFormat' => 'd.m.Y. H:i'
1654:             ),
1655:             'hr-HR' => array(
1656:                 'name' => 'Croatian (Croatia)',
1657:                 'dateFormat' => 'j.n.Y.',
1658:                 'timeFormat' => 'G:i',
1659:                 'dateTimeFormat' => 'j.n.Y. G:i'
1660:             ),
1661:             'cs' => array(
1662:                 'name' => 'Czech',
1663:                 'dateFormat' => 'd.m.Y',
1664:                 'timeFormat' => 'G:i',
1665:                 'dateTimeFormat' => 'd.m.Y G:i'
1666:             ),
1667:             'cs-CZ' => array(
1668:                 'name' => 'Czech (Czech Republic)',
1669:                 'dateFormat' => 'd.m.Y',
1670:                 'timeFormat' => 'G:i',
1671:                 'dateTimeFormat' => 'd.m.Y G:i'
1672:             ),
1673:             'da' => array(
1674:                 'name' => 'Danish',
1675:                 'dateFormat' => 'd-m-Y',
1676:                 'timeFormat' => 'H:i',
1677:                 'dateTimeFormat' => 'd-m-Y H:i'
1678:             ),
1679:             'da-DK' => array(
1680:                 'name' => 'Danish (Denmark)',
1681:                 'dateFormat' => 'd-m-Y',
1682:                 'timeFormat' => 'H:i',
1683:                 'dateTimeFormat' => 'd-m-Y H:i'
1684:             ),
1685:             'da-GL' => array(
1686:                 'name' => 'Danish (Greenland)',
1687:                 'dateFormat' => 'd/m/Y',
1688:                 'timeFormat' => 'g.i A',
1689:                 'dateTimeFormat' => 'd/m/Y g.i A'
1690:             ),
1691:             'prs' => array(
1692:                 'name' => 'Dari',
1693:                 'dateFormat' => 'Y/n/j',
1694:                 'timeFormat' => 'g:i A',
1695:                 'dateTimeFormat' => 'Y/n/j g:i A'
1696:             ),
1697:             'prs-AF' => array(
1698:                 'name' => 'Dari (Afghanistan)',
1699:                 'dateFormat' => 'Y/n/j',
1700:                 'timeFormat' => 'g:i A',
1701:                 'dateTimeFormat' => 'Y/n/j g:i A'
1702:             ),
1703:             'dv' => array(
1704:                 'name' => 'Divehi',
1705:                 'dateFormat' => 'd/m/y',
1706:                 'timeFormat' => 'H:i',
1707:                 'dateTimeFormat' => 'd/m/y H:i'
1708:             ),
1709:             'dv-MV' => array(
1710:                 'name' => 'Divehi (Maldives)',
1711:                 'dateFormat' => 'd/m/y',
1712:                 'timeFormat' => 'H:i',
1713:                 'dateTimeFormat' => 'd/m/y H:i'
1714:             ),
1715:             'dua' => array(
1716:                 'name' => 'Duala',
1717:                 'dateFormat' => 'j/n/Y',
1718:                 'timeFormat' => 'H:i',
1719:                 'dateTimeFormat' => 'j/n/Y H:i'
1720:             ),
1721:             'dua-CM' => array(
1722:                 'name' => 'Duala (Cameroon)',
1723:                 'dateFormat' => 'j/n/Y',
1724:                 'timeFormat' => 'H:i',
1725:                 'dateTimeFormat' => 'j/n/Y H:i'
1726:             ),
1727:             'nl' => array(
1728:                 'name' => 'Dutch',
1729:                 'dateFormat' => 'j-n-Y',
1730:                 'timeFormat' => 'H:i',
1731:                 'dateTimeFormat' => 'j-n-Y H:i'
1732:             ),
1733:             'nl-AW' => array(
1734:                 'name' => 'Dutch (Aruba)',
1735:                 'dateFormat' => 'd-m-Y',
1736:                 'timeFormat' => 'H:i',
1737:                 'dateTimeFormat' => 'd-m-Y H:i'
1738:             ),
1739:             'nl-BE' => array(
1740:                 'name' => 'Dutch (Belgium)',
1741:                 'dateFormat' => 'j/m/Y',
1742:                 'timeFormat' => 'G:i',
1743:                 'dateTimeFormat' => 'j/m/Y G:i'
1744:             ),
1745:             'nl-BQ' => array(
1746:                 'name' => 'Dutch (Bonaire, Sint Eustatius and Saba)',
1747:                 'dateFormat' => 'd-m-Y',
1748:                 'timeFormat' => 'H:i',
1749:                 'dateTimeFormat' => 'd-m-Y H:i'
1750:             ),
1751:             'nl-CW' => array(
1752:                 'name' => 'Dutch (Curaçao)',
1753:                 'dateFormat' => 'd-m-Y',
1754:                 'timeFormat' => 'H:i',
1755:                 'dateTimeFormat' => 'd-m-Y H:i'
1756:             ),
1757:             'nl-NL' => array(
1758:                 'name' => 'Dutch (Netherlands)',
1759:                 'dateFormat' => 'j-n-Y',
1760:                 'timeFormat' => 'H:i',
1761:                 'dateTimeFormat' => 'j-n-Y H:i'
1762:             ),
1763:             'nl-SR' => array(
1764:                 'name' => 'Dutch (Suriname)',
1765:                 'dateFormat' => 'd-m-Y',
1766:                 'timeFormat' => 'H:i',
1767:                 'dateTimeFormat' => 'd-m-Y H:i'
1768:             ),
1769:             'nl-SX' => array(
1770:                 'name' => 'Dutch (Sint Maarten)',
1771:                 'dateFormat' => 'd-m-Y',
1772:                 'timeFormat' => 'H:i',
1773:                 'dateTimeFormat' => 'd-m-Y H:i'
1774:             ),
1775:             'dz' => array(
1776:                 'name' => 'Dzongkha',
1777:                 'dateFormat' => 'Y-m-d',
1778:                 'timeFormat' => 'ཆུ་ཚོད་ g སྐར་མ་ i A',
1779:                 'dateTimeFormat' => 'Y-m-d ཆུ་ཚོད་ g སྐར་མ་ i A'
1780:             ),
1781:             'dz-BT' => array(
1782:                 'name' => 'Dzongkha (Bhutan)',
1783:                 'dateFormat' => 'Y-m-d',
1784:                 'timeFormat' => 'ཆུ་ཚོད་ g སྐར་མ་ i A',
1785:                 'dateTimeFormat' => 'Y-m-d ཆུ་ཚོད་ g སྐར་མ་ i A'
1786:             ),
1787:             'ebu' => array(
1788:                 'name' => 'Embu',
1789:                 'dateFormat' => 'd/m/Y',
1790:                 'timeFormat' => 'H:i',
1791:                 'dateTimeFormat' => 'd/m/Y H:i'
1792:             ),
1793:             'ebu-KE' => array(
1794:                 'name' => 'Embu (Kenya)',
1795:                 'dateFormat' => 'd/m/Y',
1796:                 'timeFormat' => 'H:i',
1797:                 'dateTimeFormat' => 'd/m/Y H:i'
1798:             ),
1799:             'en' => array(
1800:                 'name' => 'English',
1801:                 'dateFormat' => 'n/j/Y',
1802:                 'timeFormat' => 'g:i A',
1803:                 'dateTimeFormat' => 'n/j/Y g:i A'
1804:             ),
1805:             'en-AS' => array(
1806:                 'name' => 'English (American Samoa)',
1807:                 'dateFormat' => 'n/j/Y',
1808:                 'timeFormat' => 'g:i A',
1809:                 'dateTimeFormat' => 'n/j/Y g:i A'
1810:             ),
1811:             'en-AI' => array(
1812:                 'name' => 'English (Anguilla)',
1813:                 'dateFormat' => 'd/m/Y',
1814:                 'timeFormat' => 'H:i',
1815:                 'dateTimeFormat' => 'd/m/Y H:i'
1816:             ),
1817:             'en-AG' => array(
1818:                 'name' => 'English (Antigua & Barbuda)',
1819:                 'dateFormat' => 'd/m/Y',
1820:                 'timeFormat' => 'g:i A',
1821:                 'dateTimeFormat' => 'd/m/Y g:i A'
1822:             ),
1823:             'en-AU' => array(
1824:                 'name' => 'English (Australia)',
1825:                 'dateFormat' => 'j/m/Y',
1826:                 'timeFormat' => 'g:i A',
1827:                 'dateTimeFormat' => 'j/m/Y g:i A'
1828:             ),
1829:             'en-AT' => array(
1830:                 'name' => 'English (Austria)',
1831:                 'dateFormat' => 'd/m/Y',
1832:                 'timeFormat' => 'H:i',
1833:                 'dateTimeFormat' => 'd/m/Y H:i'
1834:             ),
1835:             'en-BS' => array(
1836:                 'name' => 'English (Bahamas)',
1837:                 'dateFormat' => 'd/m/Y',
1838:                 'timeFormat' => 'g:i A',
1839:                 'dateTimeFormat' => 'd/m/Y g:i A'
1840:             ),
1841:             'en-BB' => array(
1842:                 'name' => 'English (Barbados)',
1843:                 'dateFormat' => 'd/m/Y',
1844:                 'timeFormat' => 'g:i A',
1845:                 'dateTimeFormat' => 'd/m/Y g:i A'
1846:             ),
1847:             'en-BE' => array(
1848:                 'name' => 'English (Belgium)',
1849:                 'dateFormat' => 'd/m/Y',
1850:                 'timeFormat' => 'H:i',
1851:                 'dateTimeFormat' => 'd/m/Y H:i'
1852:             ),
1853:             'en-BZ' => array(
1854:                 'name' => 'English (Belize)',
1855:                 'dateFormat' => 'd/m/Y',
1856:                 'timeFormat' => 'H:i',
1857:                 'dateTimeFormat' => 'd/m/Y H:i'
1858:             ),
1859:             'en-BM' => array(
1860:                 'name' => 'English (Bermuda)',
1861:                 'dateFormat' => 'd/m/Y',
1862:                 'timeFormat' => 'g:i A',
1863:                 'dateTimeFormat' => 'd/m/Y g:i A'
1864:             ),
1865:             'en-BW' => array(
1866:                 'name' => 'English (Botswana)',
1867:                 'dateFormat' => 'd/m/Y',
1868:                 'timeFormat' => 'g:i A',
1869:                 'dateTimeFormat' => 'd/m/Y g:i A'
1870:             ),
1871:             'en-IO' => array(
1872:                 'name' => 'English (British Indian Ocean Territory)',
1873:                 'dateFormat' => 'd/m/Y',
1874:                 'timeFormat' => 'H:i',
1875:                 'dateTimeFormat' => 'd/m/Y H:i'
1876:             ),
1877:             'en-VG' => array(
1878:                 'name' => 'English (British Virgin Islands)',
1879:                 'dateFormat' => 'd/m/Y',
1880:                 'timeFormat' => 'g:i A',
1881:                 'dateTimeFormat' => 'd/m/Y g:i A'
1882:             ),
1883:             'en-BI' => array(
1884:                 'name' => 'English (Burundi)',
1885:                 'dateFormat' => 'n/j/Y',
1886:                 'timeFormat' => 'g:i A',
1887:                 'dateTimeFormat' => 'n/j/Y g:i A'
1888:             ),
1889:             'en-CM' => array(
1890:                 'name' => 'English (Cameroon)',
1891:                 'dateFormat' => 'd/m/Y',
1892:                 'timeFormat' => 'H:i',
1893:                 'dateTimeFormat' => 'd/m/Y H:i'
1894:             ),
1895:             'en-CA' => array(
1896:                 'name' => 'English (Canada)',
1897:                 'dateFormat' => 'Y-m-d',
1898:                 'timeFormat' => 'g:i A',
1899:                 'dateTimeFormat' => 'Y-m-d g:i A'
1900:             ),
1901:             'en-029' => array(
1902:                 'name' => 'English (Caribbean)',
1903:                 'dateFormat' => 'd/m/Y',
1904:                 'timeFormat' => 'H:i',
1905:                 'dateTimeFormat' => 'd/m/Y H:i'
1906:             ),
1907:             'en-KY' => array(
1908:                 'name' => 'English (Cayman Islands)',
1909:                 'dateFormat' => 'd/m/Y',
1910:                 'timeFormat' => 'g:i A',
1911:                 'dateTimeFormat' => 'd/m/Y g:i A'
1912:             ),
1913:             'en-CX' => array(
1914:                 'name' => 'English (Christmas Island)',
1915:                 'dateFormat' => 'd/m/Y',
1916:                 'timeFormat' => 'H:i',
1917:                 'dateTimeFormat' => 'd/m/Y H:i'
1918:             ),
1919:             'en-CC' => array(
1920:                 'name' => 'English (Cocos (Keeling) Islands)',
1921:                 'dateFormat' => 'd/m/Y',
1922:                 'timeFormat' => 'H:i',
1923:                 'dateTimeFormat' => 'd/m/Y H:i'
1924:             ),
1925:             'en-CK' => array(
1926:                 'name' => 'English (Cook Islands)',
1927:                 'dateFormat' => 'd/m/Y',
1928:                 'timeFormat' => 'H:i',
1929:                 'dateTimeFormat' => 'd/m/Y H:i'
1930:             ),
1931:             'en-CY' => array(
1932:                 'name' => 'English (Cyprus)',
1933:                 'dateFormat' => 'd/m/Y',
1934:                 'timeFormat' => 'g:i A',
1935:                 'dateTimeFormat' => 'd/m/Y g:i A'
1936:             ),
1937:             'en-DK' => array(
1938:                 'name' => 'English (Denmark)',
1939:                 'dateFormat' => 'd/m/Y',
1940:                 'timeFormat' => 'H.i',
1941:                 'dateTimeFormat' => 'd/m/Y H.i'
1942:             ),
1943:             'en-DM' => array(
1944:                 'name' => 'English (Dominica)',
1945:                 'dateFormat' => 'd/m/Y',
1946:                 'timeFormat' => 'g:i A',
1947:                 'dateTimeFormat' => 'd/m/Y g:i A'
1948:             ),
1949:             'en-ER' => array(
1950:                 'name' => 'English (Eritrea)',
1951:                 'dateFormat' => 'd/m/Y',
1952:                 'timeFormat' => 'g:i A',
1953:                 'dateTimeFormat' => 'd/m/Y g:i A'
1954:             ),
1955:             'en-150' => array(
1956:                 'name' => 'English (Europe)',
1957:                 'dateFormat' => 'd/m/Y',
1958:                 'timeFormat' => 'H:i',
1959:                 'dateTimeFormat' => 'd/m/Y H:i'
1960:             ),
1961:             'en-FK' => array(
1962:                 'name' => 'English (Falkland Islands)',
1963:                 'dateFormat' => 'd/m/Y',
1964:                 'timeFormat' => 'H:i',
1965:                 'dateTimeFormat' => 'd/m/Y H:i'
1966:             ),
1967:             'en-FJ' => array(
1968:                 'name' => 'English (Fiji)',
1969:                 'dateFormat' => 'd/m/Y',
1970:                 'timeFormat' => 'g:i A',
1971:                 'dateTimeFormat' => 'd/m/Y g:i A'
1972:             ),
1973:             'en-FI' => array(
1974:                 'name' => 'English (Finland)',
1975:                 'dateFormat' => 'd/m/Y',
1976:                 'timeFormat' => 'G.i',
1977:                 'dateTimeFormat' => 'd/m/Y G.i'
1978:             ),
1979:             'en-GM' => array(
1980:                 'name' => 'English (Gambia)',
1981:                 'dateFormat' => 'd/m/Y',
1982:                 'timeFormat' => 'g:i A',
1983:                 'dateTimeFormat' => 'd/m/Y g:i A'
1984:             ),
1985:             'en-DE' => array(
1986:                 'name' => 'English (Germany)',
1987:                 'dateFormat' => 'd/m/Y',
1988:                 'timeFormat' => 'H:i',
1989:                 'dateTimeFormat' => 'd/m/Y H:i'
1990:             ),
1991:             'en-GH' => array(
1992:                 'name' => 'English (Ghana)',
1993:                 'dateFormat' => 'd/m/Y',
1994:                 'timeFormat' => 'g:i A',
1995:                 'dateTimeFormat' => 'd/m/Y g:i A'
1996:             ),
1997:             'en-GI' => array(
1998:                 'name' => 'English (Gibraltar)',
1999:                 'dateFormat' => 'd/m/Y',
2000:                 'timeFormat' => 'H:i',
2001:                 'dateTimeFormat' => 'd/m/Y H:i'
2002:             ),
2003:             'en-GD' => array(
2004:                 'name' => 'English (Grenada)',
2005:                 'dateFormat' => 'd/m/Y',
2006:                 'timeFormat' => 'g:i A',
2007:                 'dateTimeFormat' => 'd/m/Y g:i A'
2008:             ),
2009:             'en-GU' => array(
2010:                 'name' => 'English (Guam)',
2011:                 'dateFormat' => 'n/j/Y',
2012:                 'timeFormat' => 'g:i A',
2013:                 'dateTimeFormat' => 'n/j/Y g:i A'
2014:             ),
2015:             'en-GY' => array(
2016:                 'name' => 'English (Guyana)',
2017:                 'dateFormat' => 'd/m/Y',
2018:                 'timeFormat' => 'g:i A',
2019:                 'dateTimeFormat' => 'd/m/Y g:i A'
2020:             ),
2021:             'en-GG' => array(
2022:                 'name' => 'English (Guernsey)',
2023:                 'dateFormat' => 'd/m/Y',
2024:                 'timeFormat' => 'H:i',
2025:                 'dateTimeFormat' => 'd/m/Y H:i'
2026:             ),
2027:             'en-HK' => array(
2028:                 'name' => 'English (Hong Kong)',
2029:                 'dateFormat' => 'j/n/Y',
2030:                 'timeFormat' => 'g:i A',
2031:                 'dateTimeFormat' => 'j/n/Y g:i A'
2032:             ),
2033:             'en-IN' => array(
2034:                 'name' => 'English (India)',
2035:                 'dateFormat' => 'd-m-Y',
2036:                 'timeFormat' => 'H:i',
2037:                 'dateTimeFormat' => 'd-m-Y H:i'
2038:             ),
2039:             'en-ID' => array(
2040:                 'name' => 'English (Indonesia)',
2041:                 'dateFormat' => 'd/m/Y',
2042:                 'timeFormat' => 'G:i',
2043:                 'dateTimeFormat' => 'd/m/Y G:i'
2044:             ),
2045:             'en-IE' => array(
2046:                 'name' => 'English (Ireland)',
2047:                 'dateFormat' => 'd/m/Y',
2048:                 'timeFormat' => 'H:i',
2049:                 'dateTimeFormat' => 'd/m/Y H:i'
2050:             ),
2051:             'en-IM' => array(
2052:                 'name' => 'English (Isle of Man)',
2053:                 'dateFormat' => 'd/m/Y',
2054:                 'timeFormat' => 'H:i',
2055:                 'dateTimeFormat' => 'd/m/Y H:i'
2056:             ),
2057:             'en-IL' => array(
2058:                 'name' => 'English (Israel)',
2059:                 'dateFormat' => 'd/m/Y',
2060:                 'timeFormat' => 'G:i',
2061:                 'dateTimeFormat' => 'd/m/Y G:i'
2062:             ),
2063:             'en-JM' => array(
2064:                 'name' => 'English (Jamaica)',
2065:                 'dateFormat' => 'j/n/Y',
2066:                 'timeFormat' => 'g:i A',
2067:                 'dateTimeFormat' => 'j/n/Y g:i A'
2068:             ),
2069:             'en-JE' => array(
2070:                 'name' => 'English (Jersey)',
2071:                 'dateFormat' => 'd/m/Y',
2072:                 'timeFormat' => 'H:i',
2073:                 'dateTimeFormat' => 'd/m/Y H:i'
2074:             ),
2075:             'en-KE' => array(
2076:                 'name' => 'English (Kenya)',
2077:                 'dateFormat' => 'd/m/Y',
2078:                 'timeFormat' => 'H:i',
2079:                 'dateTimeFormat' => 'd/m/Y H:i'
2080:             ),
2081:             'en-KI' => array(
2082:                 'name' => 'English (Kiribati)',
2083:                 'dateFormat' => 'd/m/Y',
2084:                 'timeFormat' => 'g:i A',
2085:                 'dateTimeFormat' => 'd/m/Y g:i A'
2086:             ),
2087:             'en-LS' => array(
2088:                 'name' => 'English (Lesotho)',
2089:                 'dateFormat' => 'd/m/Y',
2090:                 'timeFormat' => 'g:i A',
2091:                 'dateTimeFormat' => 'd/m/Y g:i A'
2092:             ),
2093:             'en-LR' => array(
2094:                 'name' => 'English (Liberia)',
2095:                 'dateFormat' => 'd/m/Y',
2096:                 'timeFormat' => 'g:i A',
2097:                 'dateTimeFormat' => 'd/m/Y g:i A'
2098:             ),
2099:             'en-MO' => array(
2100:                 'name' => 'English (Macao SAR)',
2101:                 'dateFormat' => 'd/m/Y',
2102:                 'timeFormat' => 'g:i A',
2103:                 'dateTimeFormat' => 'd/m/Y g:i A'
2104:             ),
2105:             'en-MG' => array(
2106:                 'name' => 'English (Madagascar)',
2107:                 'dateFormat' => 'd/m/Y',
2108:                 'timeFormat' => 'H:i',
2109:                 'dateTimeFormat' => 'd/m/Y H:i'
2110:             ),
2111:             'en-MY' => array(
2112:                 'name' => 'English (Malaysia)',
2113:                 'dateFormat' => 'j/n/Y',
2114:                 'timeFormat' => 'g:i A',
2115:                 'dateTimeFormat' => 'j/n/Y g:i A'
2116:             ),
2117:             'en-MW' => array(
2118:                 'name' => 'English (Malawi)',
2119:                 'dateFormat' => 'd/m/Y',
2120:                 'timeFormat' => 'g:i A',
2121:                 'dateTimeFormat' => 'd/m/Y g:i A'
2122:             ),
2123:             'en-MT' => array(
2124:                 'name' => 'English (Malta)',
2125:                 'dateFormat' => 'd/m/Y',
2126:                 'timeFormat' => 'H:i',
2127:                 'dateTimeFormat' => 'd/m/Y H:i'
2128:             ),
2129:             'en-MH' => array(
2130:                 'name' => 'English (Marshall Islands)',
2131:                 'dateFormat' => 'n/j/Y',
2132:                 'timeFormat' => 'g:i A',
2133:                 'dateTimeFormat' => 'n/j/Y g:i A'
2134:             ),
2135:             'en-MU' => array(
2136:                 'name' => 'English (Mauritius)',
2137:                 'dateFormat' => 'd/m/Y',
2138:                 'timeFormat' => 'H:i',
2139:                 'dateTimeFormat' => 'd/m/Y H:i'
2140:             ),
2141:             'en-FM' => array(
2142:                 'name' => 'English (Micronesia)',
2143:                 'dateFormat' => 'd/m/Y',
2144:                 'timeFormat' => 'g:i A',
2145:                 'dateTimeFormat' => 'd/m/Y g:i A'
2146:             ),
2147:             'en-MS' => array(
2148:                 'name' => 'English (Montserrat)',
2149:                 'dateFormat' => 'd/m/Y',
2150:                 'timeFormat' => 'H:i',
2151:                 'dateTimeFormat' => 'd/m/Y H:i'
2152:             ),
2153:             'en-NA' => array(
2154:                 'name' => 'English (Namibia)',
2155:                 'dateFormat' => 'd/m/Y',
2156:                 'timeFormat' => 'g:i A',
2157:                 'dateTimeFormat' => 'd/m/Y g:i A'
2158:             ),
2159:             'en-NR' => array(
2160:                 'name' => 'English (Nauru)',
2161:                 'dateFormat' => 'd/m/Y',
2162:                 'timeFormat' => 'H:i',
2163:                 'dateTimeFormat' => 'd/m/Y H:i'
2164:             ),
2165:             'en-NL' => array(
2166:                 'name' => 'English (Netherlands)',
2167:                 'dateFormat' => 'd/m/Y',
2168:                 'timeFormat' => 'H:i',
2169:                 'dateTimeFormat' => 'd/m/Y H:i'
2170:             ),
2171:             'en-NZ' => array(
2172:                 'name' => 'English (New Zealand)',
2173:                 'dateFormat' => 'j/m/Y',
2174:                 'timeFormat' => 'g:i A',
2175:                 'dateTimeFormat' => 'j/m/Y g:i A'
2176:             ),
2177:             'en-NG' => array(
2178:                 'name' => 'English (Nigeria)',
2179:                 'dateFormat' => 'd/m/Y',
2180:                 'timeFormat' => 'g:i A',
2181:                 'dateTimeFormat' => 'd/m/Y g:i A'
2182:             ),
2183:             'en-NU' => array(
2184:                 'name' => 'English (Niue)',
2185:                 'dateFormat' => 'd/m/Y',
2186:                 'timeFormat' => 'H:i',
2187:                 'dateTimeFormat' => 'd/m/Y H:i'
2188:             ),
2189:             'en-NF' => array(
2190:                 'name' => 'English (Norfolk Island)',
2191:                 'dateFormat' => 'd/m/Y',
2192:                 'timeFormat' => 'H:i',
2193:                 'dateTimeFormat' => 'd/m/Y H:i'
2194:             ),
2195:             'en-MP' => array(
2196:                 'name' => 'English (Northern Mariana Islands)',
2197:                 'dateFormat' => 'n/j/Y',
2198:                 'timeFormat' => 'g:i A',
2199:                 'dateTimeFormat' => 'n/j/Y g:i A'
2200:             ),
2201:             'en-PG' => array(
2202:                 'name' => 'English (Papua New Guinea)',
2203:                 'dateFormat' => 'd/m/Y',
2204:                 'timeFormat' => 'g:i A',
2205:                 'dateTimeFormat' => 'd/m/Y g:i A'
2206:             ),
2207:             'en-PK' => array(
2208:                 'name' => 'English (Pakistan)',
2209:                 'dateFormat' => 'd/m/Y',
2210:                 'timeFormat' => 'g:i A',
2211:                 'dateTimeFormat' => 'd/m/Y g:i A'
2212:             ),
2213:             'en-PW' => array(
2214:                 'name' => 'English (Palau)',
2215:                 'dateFormat' => 'd/m/Y',
2216:                 'timeFormat' => 'g:i A',
2217:                 'dateTimeFormat' => 'd/m/Y g:i A'
2218:             ),
2219:             'en-PN' => array(
2220:                 'name' => 'English (Pitcairn Islands)',
2221:                 'dateFormat' => 'd/m/Y',
2222:                 'timeFormat' => 'H:i',
2223:                 'dateTimeFormat' => 'd/m/Y H:i'
2224:             ),
2225:             'en-PR' => array(
2226:                 'name' => 'English (Puerto Rico)',
2227:                 'dateFormat' => 'n/j/Y',
2228:                 'timeFormat' => 'g:i A',
2229:                 'dateTimeFormat' => 'n/j/Y g:i A'
2230:             ),
2231:             'en-PH' => array(
2232:                 'name' => 'English (Republic of the Philippines)',
2233:                 'dateFormat' => 'd/m/Y',
2234:                 'timeFormat' => 'g:i A',
2235:                 'dateTimeFormat' => 'd/m/Y g:i A'
2236:             ),
2237:             'en-RW' => array(
2238:                 'name' => 'English (Rwanda)',
2239:                 'dateFormat' => 'd/m/Y',
2240:                 'timeFormat' => 'H:i',
2241:                 'dateTimeFormat' => 'd/m/Y H:i'
2242:             ),
2243:             'en-WS' => array(
2244:                 'name' => 'English (Samoa)',
2245:                 'dateFormat' => 'd/m/Y',
2246:                 'timeFormat' => 'g:i A',
2247:                 'dateTimeFormat' => 'd/m/Y g:i A'
2248:             ),
2249:             'en-SC' => array(
2250:                 'name' => 'English (Seychelles)',
2251:                 'dateFormat' => 'd/m/Y',
2252:                 'timeFormat' => 'H:i',
2253:                 'dateTimeFormat' => 'd/m/Y H:i'
2254:             ),
2255:             'en-SL' => array(
2256:                 'name' => 'English (Sierra Leone)',
2257:                 'dateFormat' => 'd/m/Y',
2258:                 'timeFormat' => 'g:i A',
2259:                 'dateTimeFormat' => 'd/m/Y g:i A'
2260:             ),
2261:             'en-SG' => array(
2262:                 'name' => 'English (Singapore)',
2263:                 'dateFormat' => 'j/n/Y',
2264:                 'timeFormat' => 'g:i A',
2265:                 'dateTimeFormat' => 'j/n/Y g:i A'
2266:             ),
2267:             'en-SX' => array(
2268:                 'name' => 'English (Sint Maarten)',
2269:                 'dateFormat' => 'd/m/Y',
2270:                 'timeFormat' => 'H:i',
2271:                 'dateTimeFormat' => 'd/m/Y H:i'
2272:             ),
2273:             'en-SI' => array(
2274:                 'name' => 'English (Slovenia)',
2275:                 'dateFormat' => 'd/m/Y',
2276:                 'timeFormat' => 'H:i',
2277:                 'dateTimeFormat' => 'd/m/Y H:i'
2278:             ),
2279:             'en-SB' => array(
2280:                 'name' => 'English (Solomon Islands)',
2281:                 'dateFormat' => 'd/m/Y',
2282:                 'timeFormat' => 'g:i A',
2283:                 'dateTimeFormat' => 'd/m/Y g:i A'
2284:             ),
2285:             'en-ZA' => array(
2286:                 'name' => 'English (South Africa)',
2287:                 'dateFormat' => 'Y/m/d',
2288:                 'timeFormat' => 'g:i A',
2289:                 'dateTimeFormat' => 'Y/m/d g:i A'
2290:             ),
2291:             'en-SS' => array(
2292:                 'name' => 'English (South Sudan)',
2293:                 'dateFormat' => 'd/m/Y',
2294:                 'timeFormat' => 'g:i A',
2295:                 'dateTimeFormat' => 'd/m/Y g:i A'
2296:             ),
2297:             'en-SH' => array(
2298:                 'name' => 'English (St. Helena)',
2299:                 'dateFormat' => 'd/m/Y',
2300:                 'timeFormat' => 'H:i',
2301:                 'dateTimeFormat' => 'd/m/Y H:i'
2302:             ),
2303:             'en-KN' => array(
2304:                 'name' => 'English (St. Kitts & Nevis)',
2305:                 'dateFormat' => 'd/m/Y',
2306:                 'timeFormat' => 'g:i A',
2307:                 'dateTimeFormat' => 'd/m/Y g:i A'
2308:             ),
2309:             'en-LC' => array(
2310:                 'name' => 'English (St. Lucia)',
2311:                 'dateFormat' => 'd/m/Y',
2312:                 'timeFormat' => 'g:i A',
2313:                 'dateTimeFormat' => 'd/m/Y g:i A'
2314:             ),
2315:             'en-VC' => array(
2316:                 'name' => 'English (St. Vincent & Grenadines)',
2317:                 'dateFormat' => 'd/m/Y',
2318:                 'timeFormat' => 'g:i A',
2319:                 'dateTimeFormat' => 'd/m/Y g:i A'
2320:             ),
2321:             'en-SD' => array(
2322:                 'name' => 'English (Sudan)',
2323:                 'dateFormat' => 'd/m/Y',
2324:                 'timeFormat' => 'g:i A',
2325:                 'dateTimeFormat' => 'd/m/Y g:i A'
2326:             ),
2327:             'en-SZ' => array(
2328:                 'name' => 'English (Swaziland)',
2329:                 'dateFormat' => 'd/m/Y',
2330:                 'timeFormat' => 'g:i A',
2331:                 'dateTimeFormat' => 'd/m/Y g:i A'
2332:             ),
2333:             'en-SE' => array(
2334:                 'name' => 'English (Sweden)',
2335:                 'dateFormat' => 'Y-m-d',
2336:                 'timeFormat' => 'H:i',
2337:                 'dateTimeFormat' => 'Y-m-d H:i'
2338:             ),
2339:             'en-CH' => array(
2340:                 'name' => 'English (Switzerland)',
2341:                 'dateFormat' => 'd/m/Y',
2342:                 'timeFormat' => 'H:i',
2343:                 'dateTimeFormat' => 'd/m/Y H:i'
2344:             ),
2345:             'en-TZ' => array(
2346:                 'name' => 'English (Tanzania)',
2347:                 'dateFormat' => 'd/m/Y',
2348:                 'timeFormat' => 'H:i',
2349:                 'dateTimeFormat' => 'd/m/Y H:i'
2350:             ),
2351:             'en-TK' => array(
2352:                 'name' => 'English (Tokelau)',
2353:                 'dateFormat' => 'd/m/Y',
2354:                 'timeFormat' => 'H:i',
2355:                 'dateTimeFormat' => 'd/m/Y H:i'
2356:             ),
2357:             'en-TO' => array(
2358:                 'name' => 'English (Tonga)',
2359:                 'dateFormat' => 'd/m/Y',
2360:                 'timeFormat' => 'g:i A',
2361:                 'dateTimeFormat' => 'd/m/Y g:i A'
2362:             ),
2363:             'en-TT' => array(
2364:                 'name' => 'English (Trinidad and Tobago)',
2365:                 'dateFormat' => 'd/m/Y',
2366:                 'timeFormat' => 'g:i A',
2367:                 'dateTimeFormat' => 'd/m/Y g:i A'
2368:             ),
2369:             'en-TC' => array(
2370:                 'name' => 'English (Turks & Caicos Islands)',
2371:                 'dateFormat' => 'd/m/Y',
2372:                 'timeFormat' => 'g:i A',
2373:                 'dateTimeFormat' => 'd/m/Y g:i A'
2374:             ),
2375:             'en-TV' => array(
2376:                 'name' => 'English (Tuvala)',
2377:                 'dateFormat' => 'd/m/Y',
2378:                 'timeFormat' => 'H:i',
2379:                 'dateTimeFormat' => 'd/m/Y H:i'
2380:             ),
2381:             'en-UG' => array(
2382:                 'name' => 'English (Uganda)',
2383:                 'dateFormat' => 'd/m/Y',
2384:                 'timeFormat' => 'H:i',
2385:                 'dateTimeFormat' => 'd/m/Y H:i'
2386:             ),
2387:             'en-GB' => array(
2388:                 'name' => 'English (United Kingdom)',
2389:                 'dateFormat' => 'd/m/Y',
2390:                 'timeFormat' => 'H:i',
2391:                 'dateTimeFormat' => 'd/m/Y H:i'
2392:             ),
2393:             'en-US' => array(
2394:                 'name' => 'English (United States)',
2395:                 'dateFormat' => 'n/j/Y',
2396:                 'timeFormat' => 'g:i A',
2397:                 'dateTimeFormat' => 'n/j/Y g:i A'
2398:             ),
2399:             'en-UM' => array(
2400:                 'name' => 'English (U.S. Outlying Islands)',
2401:                 'dateFormat' => 'n/j/Y',
2402:                 'timeFormat' => 'g:i A',
2403:                 'dateTimeFormat' => 'n/j/Y g:i A'
2404:             ),
2405:             'en-VI' => array(
2406:                 'name' => 'English (U.S. Virgin Islands)',
2407:                 'dateFormat' => 'n/j/Y',
2408:                 'timeFormat' => 'g:i A',
2409:                 'dateTimeFormat' => 'n/j/Y g:i A'
2410:             ),
2411:             'en-VU' => array(
2412:                 'name' => 'English (Vanuatu)',
2413:                 'dateFormat' => 'd/m/Y',
2414:                 'timeFormat' => 'g:i A',
2415:                 'dateTimeFormat' => 'd/m/Y g:i A'
2416:             ),
2417:             'en-001' => array(
2418:                 'name' => 'English (World)',
2419:                 'dateFormat' => 'd/m/Y',
2420:                 'timeFormat' => 'g:i A',
2421:                 'dateTimeFormat' => 'd/m/Y g:i A'
2422:             ),
2423:             'en-ZM' => array(
2424:                 'name' => 'English (Zambia)',
2425:                 'dateFormat' => 'd/m/Y',
2426:                 'timeFormat' => 'g:i A',
2427:                 'dateTimeFormat' => 'd/m/Y g:i A'
2428:             ),
2429:             'en-ZW' => array(
2430:                 'name' => 'English (Zimbabwe)',
2431:                 'dateFormat' => 'j/n/Y',
2432:                 'timeFormat' => 'g:i A',
2433:                 'dateTimeFormat' => 'j/n/Y g:i A'
2434:             ),
2435:             'eo' => array(
2436:                 'name' => 'Esperanto',
2437:                 'dateFormat' => 'Y-m-d',
2438:                 'timeFormat' => 'H:i',
2439:                 'dateTimeFormat' => 'Y-m-d H:i'
2440:             ),
2441:             'eo-001' => array(
2442:                 'name' => 'Esperanto (World)',
2443:                 'dateFormat' => 'Y-m-d',
2444:                 'timeFormat' => 'H:i',
2445:                 'dateTimeFormat' => 'Y-m-d H:i'
2446:             ),
2447:             'et' => array(
2448:                 'name' => 'Estonian',
2449:                 'dateFormat' => 'd.m.Y',
2450:                 'timeFormat' => 'G:i',
2451:                 'dateTimeFormat' => 'd.m.Y G:i'
2452:             ),
2453:             'et-EE' => array(
2454:                 'name' => 'Estonian (Estonia)',
2455:                 'dateFormat' => 'd.m.Y',
2456:                 'timeFormat' => 'G:i',
2457:                 'dateTimeFormat' => 'd.m.Y G:i'
2458:             ),
2459:             'ee' => array(
2460:                 'name' => 'Ewe',
2461:                 'dateFormat' => 'n/j/Y',
2462:                 'timeFormat' => 'A \g\a g:i',
2463:                 'dateTimeFormat' => 'n/j/Y A \g\a g:i'
2464:             ),
2465:             'ewo' => array(
2466:                 'name' => 'Ewondo',
2467:                 'dateFormat' => 'j/n/Y',
2468:                 'timeFormat' => 'H:i',
2469:                 'dateTimeFormat' => 'j/n/Y H:i'
2470:             ),
2471:             'ewo-CM' => array(
2472:                 'name' => 'Ewondo (Cameroon)',
2473:                 'dateFormat' => 'j/n/Y',
2474:                 'timeFormat' => 'H:i',
2475:                 'dateTimeFormat' => 'j/n/Y H:i'
2476:             ),
2477:             'ee-GH' => array(
2478:                 'name' => 'Ewe (Ghana)',
2479:                 'dateFormat' => 'n/j/Y',
2480:                 'timeFormat' => 'A \g\a g:i',
2481:                 'dateTimeFormat' => 'n/j/Y A \g\a g:i'
2482:             ),
2483:             'ee-TG' => array(
2484:                 'name' => 'Ewe (Togo)',
2485:                 'dateFormat' => 'n/j/Y',
2486:                 'timeFormat' => 'H:i',
2487:                 'dateTimeFormat' => 'n/j/Y H:i'
2488:             ),
2489:             'fo' => array(
2490:                 'name' => 'Faroese',
2491:                 'dateFormat' => 'd.m.Y',
2492:                 'timeFormat' => 'H:i',
2493:                 'dateTimeFormat' => 'd.m.Y H:i'
2494:             ),
2495:             'fo-DK' => array(
2496:                 'name' => 'Faroese (Denmark)',
2497:                 'dateFormat' => 'd.m.Y',
2498:                 'timeFormat' => 'H:i',
2499:                 'dateTimeFormat' => 'd.m.Y H:i'
2500:             ),
2501:             'fo-FO' => array(
2502:                 'name' => 'Faroese (Faroe Islands)',
2503:                 'dateFormat' => 'd.m.Y',
2504:                 'timeFormat' => 'H:i',
2505:                 'dateTimeFormat' => 'd.m.Y H:i'
2506:             ),
2507:             'fil' => array(
2508:                 'name' => 'Filipino',
2509:                 'dateFormat' => 'n/j/Y',
2510:                 'timeFormat' => 'g:i A',
2511:                 'dateTimeFormat' => 'n/j/Y g:i A'
2512:             ),
2513:             'fil-PH' => array(
2514:                 'name' => 'Filipino (Philippines)',
2515:                 'dateFormat' => 'n/j/Y',
2516:                 'timeFormat' => 'g:i A',
2517:                 'dateTimeFormat' => 'n/j/Y g:i A'
2518:             ),
2519:             'fi' => array(
2520:                 'name' => 'Finnish',
2521:                 'dateFormat' => 'j.n.Y',
2522:                 'timeFormat' => 'G.i',
2523:                 'dateTimeFormat' => 'j.n.Y G.i'
2524:             ),
2525:             'fi-FI' => array(
2526:                 'name' => 'Finnish (Finland)',
2527:                 'dateFormat' => 'j.n.Y',
2528:                 'timeFormat' => 'G.i',
2529:                 'dateTimeFormat' => 'j.n.Y G.i'
2530:             ),
2531:             'fr' => array(
2532:                 'name' => 'French',
2533:                 'dateFormat' => 'd/m/Y',
2534:                 'timeFormat' => 'H:i',
2535:                 'dateTimeFormat' => 'd/m/Y H:i'
2536:             ),
2537:             'fr-DZ' => array(
2538:                 'name' => 'French (Algeria)',
2539:                 'dateFormat' => 'd/m/Y',
2540:                 'timeFormat' => 'g:i A',
2541:                 'dateTimeFormat' => 'd/m/Y g:i A'
2542:             ),
2543:             'fr-BE' => array(
2544:                 'name' => 'French (Belgium)',
2545:                 'dateFormat' => 'd-m-y',
2546:                 'timeFormat' => 'H:i',
2547:                 'dateTimeFormat' => 'd-m-y H:i'
2548:             ),
2549:             'fr-BJ' => array(
2550:                 'name' => 'French (Benin)',
2551:                 'dateFormat' => 'd/m/Y',
2552:                 'timeFormat' => 'H:i',
2553:                 'dateTimeFormat' => 'd/m/Y H:i'
2554:             ),
2555:             'fr-BI' => array(
2556:                 'name' => 'French (Burundi)',
2557:                 'dateFormat' => 'd/m/Y',
2558:                 'timeFormat' => 'H:i',
2559:                 'dateTimeFormat' => 'd/m/Y H:i'
2560:             ),
2561:             'fr-BF' => array(
2562:                 'name' => 'French (Burkina Faso)',
2563:                 'dateFormat' => 'd/m/Y',
2564:                 'timeFormat' => 'H:i',
2565:                 'dateTimeFormat' => 'd/m/Y H:i'
2566:             ),
2567:             'fr-CM' => array(
2568:                 'name' => 'French (Cameroon)',
2569:                 'dateFormat' => 'd/m/Y',
2570:                 'timeFormat' => 'H:i',
2571:                 'dateTimeFormat' => 'd/m/Y H:i'
2572:             ),
2573:             'fr-CA' => array(
2574:                 'name' => 'French (Canada)',
2575:                 'dateFormat' => 'Y-m-d',
2576:                 'timeFormat' => 'H:i',
2577:                 'dateTimeFormat' => 'Y-m-d H:i'
2578:             ),
2579:             'fr-029' => array(
2580:                 'name' => 'French (Caribbean)',
2581:                 'dateFormat' => 'd/m/Y',
2582:                 'timeFormat' => 'G:i',
2583:                 'dateTimeFormat' => 'd/m/Y G:i'
2584:             ),
2585:             'fr-CF' => array(
2586:                 'name' => 'French (Central African Republic)',
2587:                 'dateFormat' => 'd/m/Y',
2588:                 'timeFormat' => 'H:i',
2589:                 'dateTimeFormat' => 'd/m/Y H:i'
2590:             ),
2591:             'fr-TD' => array(
2592:                 'name' => 'French (Chad)',
2593:                 'dateFormat' => 'd/m/Y',
2594:                 'timeFormat' => 'g:i A',
2595:                 'dateTimeFormat' => 'd/m/Y g:i A'
2596:             ),
2597:             'fr-KM' => array(
2598:                 'name' => 'French (Comoros)',
2599:                 'dateFormat' => 'd/m/Y',
2600:                 'timeFormat' => 'H:i',
2601:                 'dateTimeFormat' => 'd/m/Y H:i'
2602:             ),
2603:             'fr-CG' => array(
2604:                 'name' => 'French (Congo - Brazzaville)',
2605:                 'dateFormat' => 'd/m/Y',
2606:                 'timeFormat' => 'H:i',
2607:                 'dateTimeFormat' => 'd/m/Y H:i'
2608:             ),
2609:             'fr-CD' => array(
2610:                 'name' => 'French (Congo - Kinshasa)',
2611:                 'dateFormat' => 'd/m/Y',
2612:                 'timeFormat' => 'H:i',
2613:                 'dateTimeFormat' => 'd/m/Y H:i'
2614:             ),
2615:             'fr-CI' => array(
2616:                 'name' => 'French (Côte d’Ivoire)',
2617:                 'dateFormat' => 'd/m/Y',
2618:                 'timeFormat' => 'H:i',
2619:                 'dateTimeFormat' => 'd/m/Y H:i'
2620:             ),
2621:             'fr-DJ' => array(
2622:                 'name' => 'French (Djibouti)',
2623:                 'dateFormat' => 'd/m/Y',
2624:                 'timeFormat' => 'g:i A',
2625:                 'dateTimeFormat' => 'd/m/Y g:i A'
2626:             ),
2627:             'fr-GQ' => array(
2628:                 'name' => 'French (Equatorial Guinea)',
2629:                 'dateFormat' => 'd/m/Y',
2630:                 'timeFormat' => 'H:i',
2631:                 'dateTimeFormat' => 'd/m/Y H:i'
2632:             ),
2633:             'fr-FR' => array(
2634:                 'name' => 'French (France)',
2635:                 'dateFormat' => 'd/m/Y',
2636:                 'timeFormat' => 'H:i',
2637:                 'dateTimeFormat' => 'd/m/Y H:i'
2638:             ),
2639:             'fr-GF' => array(
2640:                 'name' => 'French (French Guiana)',
2641:                 'dateFormat' => 'd/m/Y',
2642:                 'timeFormat' => 'H:i',
2643:                 'dateTimeFormat' => 'd/m/Y H:i'
2644:             ),
2645:             'fr-PF' => array(
2646:                 'name' => 'French (French Polynesia)',
2647:                 'dateFormat' => 'd/m/Y',
2648:                 'timeFormat' => 'H:i',
2649:                 'dateTimeFormat' => 'd/m/Y H:i'
2650:             ),
2651:             'fr-GA' => array(
2652:                 'name' => 'French (Gabon)',
2653:                 'dateFormat' => 'd/m/Y',
2654:                 'timeFormat' => 'H:i',
2655:                 'dateTimeFormat' => 'd/m/Y H:i'
2656:             ),
2657:             'fr-GP' => array(
2658:                 'name' => 'French (Guadeloupe)',
2659:                 'dateFormat' => 'd/m/Y',
2660:                 'timeFormat' => 'H:i',
2661:                 'dateTimeFormat' => 'd/m/Y H:i'
2662:             ),
2663:             'fr-GN' => array(
2664:                 'name' => 'French (Guinea)',
2665:                 'dateFormat' => 'd/m/Y',
2666:                 'timeFormat' => 'H:i',
2667:                 'dateTimeFormat' => 'd/m/Y H:i'
2668:             ),
2669:             'fr-HT' => array(
2670:                 'name' => 'French (Haiti)',
2671:                 'dateFormat' => 'd/m/Y',
2672:                 'timeFormat' => 'H:i',
2673:                 'dateTimeFormat' => 'd/m/Y H:i'
2674:             ),
2675:             'fr-LU' => array(
2676:                 'name' => 'French (Luxembourg)',
2677:                 'dateFormat' => 'd/m/Y',
2678:                 'timeFormat' => 'H:i',
2679:                 'dateTimeFormat' => 'd/m/Y H:i'
2680:             ),
2681:             'fr-MG' => array(
2682:                 'name' => 'French (Madagascar)',
2683:                 'dateFormat' => 'd/m/Y',
2684:                 'timeFormat' => 'H:i',
2685:                 'dateTimeFormat' => 'd/m/Y H:i'
2686:             ),
2687:             'fr-ML' => array(
2688:                 'name' => 'French (Mali)',
2689:                 'dateFormat' => 'd/m/Y',
2690:                 'timeFormat' => 'H:i',
2691:                 'dateTimeFormat' => 'd/m/Y H:i'
2692:             ),
2693:             'fr-MQ' => array(
2694:                 'name' => 'French (Martinique)',
2695:                 'dateFormat' => 'd/m/Y',
2696:                 'timeFormat' => 'H:i',
2697:                 'dateTimeFormat' => 'd/m/Y H:i'
2698:             ),
2699:             'fr-MR' => array(
2700:                 'name' => 'French (Mauritania)',
2701:                 'dateFormat' => 'd/m/Y',
2702:                 'timeFormat' => 'g:i A',
2703:                 'dateTimeFormat' => 'd/m/Y g:i A'
2704:             ),
2705:             'fr-MU' => array(
2706:                 'name' => 'French (Mauritius)',
2707:                 'dateFormat' => 'd/m/Y',
2708:                 'timeFormat' => 'H:i',
2709:                 'dateTimeFormat' => 'd/m/Y H:i'
2710:             ),
2711:             'fr-YT' => array(
2712:                 'name' => 'French (Mayotte)',
2713:                 'dateFormat' => 'd/m/Y',
2714:                 'timeFormat' => 'H:i',
2715:                 'dateTimeFormat' => 'd/m/Y H:i'
2716:             ),
2717:             'fr-MA' => array(
2718:                 'name' => 'French (Morocco)',
2719:                 'dateFormat' => 'd/m/Y',
2720:                 'timeFormat' => 'H:i',
2721:                 'dateTimeFormat' => 'd/m/Y H:i'
2722:             ),
2723:             'fr-NC' => array(
2724:                 'name' => 'French (New Caledonia)',
2725:                 'dateFormat' => 'd/m/Y',
2726:                 'timeFormat' => 'H:i',
2727:                 'dateTimeFormat' => 'd/m/Y H:i'
2728:             ),
2729:             'fr-NE' => array(
2730:                 'name' => 'French (Niger)',
2731:                 'dateFormat' => 'd/m/Y',
2732:                 'timeFormat' => 'H:i',
2733:                 'dateTimeFormat' => 'd/m/Y H:i'
2734:             ),
2735:             'fr-MC' => array(
2736:                 'name' => 'French (Principality of Monaco)',
2737:                 'dateFormat' => 'd/m/Y',
2738:                 'timeFormat' => 'H:i',
2739:                 'dateTimeFormat' => 'd/m/Y H:i'
2740:             ),
2741:             'fr-RE' => array(
2742:                 'name' => 'French (Réunion)',
2743:                 'dateFormat' => 'd/m/Y',
2744:                 'timeFormat' => 'H:i',
2745:                 'dateTimeFormat' => 'd/m/Y H:i'
2746:             ),
2747:             'fr-RW' => array(
2748:                 'name' => 'French (Rwanda)',
2749:                 'dateFormat' => 'd/m/Y',
2750:                 'timeFormat' => 'H:i',
2751:                 'dateTimeFormat' => 'd/m/Y H:i'
2752:             ),
2753:             'fr-SN' => array(
2754:                 'name' => 'French (Senegal)',
2755:                 'dateFormat' => 'd/m/Y',
2756:                 'timeFormat' => 'H:i',
2757:                 'dateTimeFormat' => 'd/m/Y H:i'
2758:             ),
2759:             'fr-SC' => array(
2760:                 'name' => 'French (Seychelles)',
2761:                 'dateFormat' => 'd/m/Y',
2762:                 'timeFormat' => 'H:i',
2763:                 'dateTimeFormat' => 'd/m/Y H:i'
2764:             ),
2765:             'fr-BL' => array(
2766:                 'name' => 'French (St. Barthélemy)',
2767:                 'dateFormat' => 'd/m/Y',
2768:                 'timeFormat' => 'H:i',
2769:                 'dateTimeFormat' => 'd/m/Y H:i'
2770:             ),
2771:             'fr-MF' => array(
2772:                 'name' => 'French (St. Martin)',
2773:                 'dateFormat' => 'd/m/Y',
2774:                 'timeFormat' => 'H:i',
2775:                 'dateTimeFormat' => 'd/m/Y H:i'
2776:             ),
2777:             'fr-PM' => array(
2778:                 'name' => 'French (St. Pierre & Miquelon)',
2779:                 'dateFormat' => 'd/m/Y',
2780:                 'timeFormat' => 'H:i',
2781:                 'dateTimeFormat' => 'd/m/Y H:i'
2782:             ),
2783:             'fr-CH' => array(
2784:                 'name' => 'French (Switzerland)',
2785:                 'dateFormat' => 'd.m.Y',
2786:                 'timeFormat' => 'H:i',
2787:                 'dateTimeFormat' => 'd.m.Y H:i'
2788:             ),
2789:             'fr-SY' => array(
2790:                 'name' => 'French (Syria)',
2791:                 'dateFormat' => 'd/m/Y',
2792:                 'timeFormat' => 'g:i A',
2793:                 'dateTimeFormat' => 'd/m/Y g:i A'
2794:             ),
2795:             'fr-TG' => array(
2796:                 'name' => 'French (Togo)',
2797:                 'dateFormat' => 'd/m/Y',
2798:                 'timeFormat' => 'H:i',
2799:                 'dateTimeFormat' => 'd/m/Y H:i'
2800:             ),
2801:             'fr-TN' => array(
2802:                 'name' => 'French (Tunisia)',
2803:                 'dateFormat' => 'd/m/Y',
2804:                 'timeFormat' => 'g:i A',
2805:                 'dateTimeFormat' => 'd/m/Y g:i A'
2806:             ),
2807:             'fr-VU' => array(
2808:                 'name' => 'French (Vanuatu)',
2809:                 'dateFormat' => 'd/m/Y',
2810:                 'timeFormat' => 'g:i A',
2811:                 'dateTimeFormat' => 'd/m/Y g:i A'
2812:             ),
2813:             'fr-WF' => array(
2814:                 'name' => 'French (Wallis & Futuna)',
2815:                 'dateFormat' => 'd/m/Y',
2816:                 'timeFormat' => 'H:i',
2817:                 'dateTimeFormat' => 'd/m/Y H:i'
2818:             ),
2819:             'fy' => array(
2820:                 'name' => 'Frisian',
2821:                 'dateFormat' => 'd-m-Y',
2822:                 'timeFormat' => 'H:i',
2823:                 'dateTimeFormat' => 'd-m-Y H:i'
2824:             ),
2825:             'fy-NL' => array(
2826:                 'name' => 'Frisian (Netherlands)',
2827:                 'dateFormat' => 'd-m-Y',
2828:                 'timeFormat' => 'H:i',
2829:                 'dateTimeFormat' => 'd-m-Y H:i'
2830:             ),
2831:             'fur' => array(
2832:                 'name' => 'Friulian',
2833:                 'dateFormat' => 'd/m/Y',
2834:                 'timeFormat' => 'H:i',
2835:                 'dateTimeFormat' => 'd/m/Y H:i'
2836:             ),
2837:             'fur-IT' => array(
2838:                 'name' => 'Friulian (Italy)',
2839:                 'dateFormat' => 'd/m/Y',
2840:                 'timeFormat' => 'H:i',
2841:                 'dateTimeFormat' => 'd/m/Y H:i'
2842:             ),
2843:             'ff' => array(
2844:                 'name' => 'Fulah',
2845:                 'dateFormat' => 'd/m/Y',
2846:                 'timeFormat' => 'H:i',
2847:                 'dateTimeFormat' => 'd/m/Y H:i'
2848:             ),
2849:             'ff-CM' => array(
2850:                 'name' => 'Fulah (Cameroon)',
2851:                 'dateFormat' => 'j/n/Y',
2852:                 'timeFormat' => 'H:i',
2853:                 'dateTimeFormat' => 'j/n/Y H:i'
2854:             ),
2855:             'ff-GN' => array(
2856:                 'name' => 'Fulah (Guinea)',
2857:                 'dateFormat' => 'j/n/Y',
2858:                 'timeFormat' => 'H:i',
2859:                 'dateTimeFormat' => 'j/n/Y H:i'
2860:             ),
2861:             'ff-Latn' => array(
2862:                 'name' => 'Fulah (Latin)',
2863:                 'dateFormat' => 'd/m/Y',
2864:                 'timeFormat' => 'H:i',
2865:                 'dateTimeFormat' => 'd/m/Y H:i'
2866:             ),
2867:             'ff-Latn-SN' => array(
2868:                 'name' => 'Fulah (Latin, Senegal)',
2869:                 'dateFormat' => 'd/m/Y',
2870:                 'timeFormat' => 'H:i',
2871:                 'dateTimeFormat' => 'd/m/Y H:i'
2872:             ),
2873:             'ff-MR' => array(
2874:                 'name' => 'Fulah (Mauritania)',
2875:                 'dateFormat' => 'j/n/Y',
2876:                 'timeFormat' => 'g:i A',
2877:                 'dateTimeFormat' => 'j/n/Y g:i A'
2878:             ),
2879:             'ff-NG' => array(
2880:                 'name' => 'Fulah (Nigeria)',
2881:                 'dateFormat' => 'j/n/Y',
2882:                 'timeFormat' => 'G:i',
2883:                 'dateTimeFormat' => 'j/n/Y G:i'
2884:             ),
2885:             'gl' => array(
2886:                 'name' => 'Galician',
2887:                 'dateFormat' => 'd/m/Y',
2888:                 'timeFormat' => 'H:i',
2889:                 'dateTimeFormat' => 'd/m/Y H:i'
2890:             ),
2891:             'gl-ES' => array(
2892:                 'name' => 'Galician (Spain)',
2893:                 'dateFormat' => 'd/m/Y',
2894:                 'timeFormat' => 'H:i',
2895:                 'dateTimeFormat' => 'd/m/Y H:i'
2896:             ),
2897:             'lg' => array(
2898:                 'name' => 'Ganda',
2899:                 'dateFormat' => 'd/m/Y',
2900:                 'timeFormat' => 'H:i',
2901:                 'dateTimeFormat' => 'd/m/Y H:i'
2902:             ),
2903:             'lg-UG' => array(
2904:                 'name' => 'Ganda (Uganda)',
2905:                 'dateFormat' => 'd/m/Y',
2906:                 'timeFormat' => 'H:i',
2907:                 'dateTimeFormat' => 'd/m/Y H:i'
2908:             ),
2909:             'ka' => array(
2910:                 'name' => 'Georgian',
2911:                 'dateFormat' => 'd.m.Y',
2912:                 'timeFormat' => 'H:i',
2913:                 'dateTimeFormat' => 'd.m.Y H:i'
2914:             ),
2915:             'ka-GE' => array(
2916:                 'name' => 'Georgian (Georgia)',
2917:                 'dateFormat' => 'd.m.Y',
2918:                 'timeFormat' => 'H:i',
2919:                 'dateTimeFormat' => 'd.m.Y H:i'
2920:             ),
2921:             'de' => array(
2922:                 'name' => 'German',
2923:                 'dateFormat' => 'd.m.Y',
2924:                 'timeFormat' => 'H:i',
2925:                 'dateTimeFormat' => 'd.m.Y H:i'
2926:             ),
2927:             'de-AT' => array(
2928:                 'name' => 'German (Austria)',
2929:                 'dateFormat' => 'd.m.Y',
2930:                 'timeFormat' => 'H:i',
2931:                 'dateTimeFormat' => 'd.m.Y H:i'
2932:             ),
2933:             'de-BE' => array(
2934:                 'name' => 'German (Belgium)',
2935:                 'dateFormat' => 'd.m.Y',
2936:                 'timeFormat' => 'H:i',
2937:                 'dateTimeFormat' => 'd.m.Y H:i'
2938:             ),
2939:             'de-DE' => array(
2940:                 'name' => 'German (Germany)',
2941:                 'dateFormat' => 'd.m.Y',
2942:                 'timeFormat' => 'H:i',
2943:                 'dateTimeFormat' => 'd.m.Y H:i'
2944:             ),
2945:             'de-LI' => array(
2946:                 'name' => 'German (Liechtenstein)',
2947:                 'dateFormat' => 'd.m.Y',
2948:                 'timeFormat' => 'H:i',
2949:                 'dateTimeFormat' => 'd.m.Y H:i'
2950:             ),
2951:             'de-LU' => array(
2952:                 'name' => 'German (Luxembourg)',
2953:                 'dateFormat' => 'd.m.Y',
2954:                 'timeFormat' => 'H:i',
2955:                 'dateTimeFormat' => 'd.m.Y H:i'
2956:             ),
2957:             'de-CH' => array(
2958:                 'name' => 'German (Switzerland)',
2959:                 'dateFormat' => 'd.m.Y',
2960:                 'timeFormat' => 'H:i',
2961:                 'dateTimeFormat' => 'd.m.Y H:i'
2962:             ),
2963:             'el' => array(
2964:                 'name' => 'Greek',
2965:                 'dateFormat' => 'j/n/Y',
2966:                 'timeFormat' => 'g:i a',
2967:                 'dateTimeFormat' => 'j/n/Y g:i a'
2968:             ),
2969:             'el-CY' => array(
2970:                 'name' => 'Greek (Cyprus)',
2971:                 'dateFormat' => 'j/n/Y',
2972:                 'timeFormat' => 'g:i a',
2973:                 'dateTimeFormat' => 'j/n/Y g:i a'
2974:             ),
2975:             'el-GR' => array(
2976:                 'name' => 'Greek (Greece)',
2977:                 'dateFormat' => 'j/n/Y',
2978:                 'timeFormat' => 'g:i a',
2979:                 'dateTimeFormat' => 'j/n/Y g:i a'
2980:             ),
2981:             'kl' => array(
2982:                 'name' => 'Greenlandic',
2983:                 'dateFormat' => 'd-m-Y',
2984:                 'timeFormat' => 'H:i',
2985:                 'dateTimeFormat' => 'd-m-Y H:i'
2986:             ),
2987:             'kl-GL' => array(
2988:                 'name' => 'Greenlandic (Greenland)',
2989:                 'dateFormat' => 'd-m-Y',
2990:                 'timeFormat' => 'H:i',
2991:                 'dateTimeFormat' => 'd-m-Y H:i'
2992:             ),
2993:             'gn' => array(
2994:                 'name' => 'Guarani',
2995:                 'dateFormat' => 'd/m/Y',
2996:                 'timeFormat' => 'H:i',
2997:                 'dateTimeFormat' => 'd/m/Y H:i'
2998:             ),
2999:             'gn-PY' => array(
3000:                 'name' => 'Guarani (Paraguay)',
3001:                 'dateFormat' => 'd/m/Y',
3002:                 'timeFormat' => 'H:i',
3003:                 'dateTimeFormat' => 'd/m/Y H:i'
3004:             ),
3005:             'gu' => array(
3006:                 'name' => 'Gujarati',
3007:                 'dateFormat' => 'd-m-y',
3008:                 'timeFormat' => 'H:i',
3009:                 'dateTimeFormat' => 'd-m-y H:i'
3010:             ),
3011:             'gu-IN' => array(
3012:                 'name' => 'Gujarati (India)',
3013:                 'dateFormat' => 'd-m-y',
3014:                 'timeFormat' => 'H:i',
3015:                 'dateTimeFormat' => 'd-m-y H:i'
3016:             ),
3017:             'guz' => array(
3018:                 'name' => 'Gusii',
3019:                 'dateFormat' => 'd/m/Y',
3020:                 'timeFormat' => 'H:i',
3021:                 'dateTimeFormat' => 'd/m/Y H:i'
3022:             ),
3023:             'guz-KE' => array(
3024:                 'name' => 'Gusii (Kenya)',
3025:                 'dateFormat' => 'd/m/Y',
3026:                 'timeFormat' => 'H:i',
3027:                 'dateTimeFormat' => 'd/m/Y H:i'
3028:             ),
3029:             'ha' => array(
3030:                 'name' => 'Hausa',
3031:                 'dateFormat' => 'j/n/Y',
3032:                 'timeFormat' => 'g:i A',
3033:                 'dateTimeFormat' => 'j/n/Y g:i A'
3034:             ),
3035:             'ha-Latn' => array(
3036:                 'name' => 'Hausa (Latin)',
3037:                 'dateFormat' => 'j/n/Y',
3038:                 'timeFormat' => 'g:i A',
3039:                 'dateTimeFormat' => 'j/n/Y g:i A'
3040:             ),
3041:             'ha-Latn-GH' => array(
3042:                 'name' => 'Hausa (Latin, Ghana)',
3043:                 'dateFormat' => 'j/n/Y',
3044:                 'timeFormat' => 'g:i A',
3045:                 'dateTimeFormat' => 'j/n/Y g:i A'
3046:             ),
3047:             'ha-Latn-NE' => array(
3048:                 'name' => 'Hausa (Latin, Niger)',
3049:                 'dateFormat' => 'j/n/Y',
3050:                 'timeFormat' => 'H:i',
3051:                 'dateTimeFormat' => 'j/n/Y H:i'
3052:             ),
3053:             'ha-Latn-NG' => array(
3054:                 'name' => 'Hausa (Latin, Nigeria)',
3055:                 'dateFormat' => 'j/n/Y',
3056:                 'timeFormat' => 'g:i A',
3057:                 'dateTimeFormat' => 'j/n/Y g:i A'
3058:             ),
3059:             'haw' => array(
3060:                 'name' => 'Hawaiian',
3061:                 'dateFormat' => 'j/n/Y',
3062:                 'timeFormat' => 'g:i A',
3063:                 'dateTimeFormat' => 'j/n/Y g:i A'
3064:             ),
3065:             'haw-US' => array(
3066:                 'name' => 'Hawaiian (United States)',
3067:                 'dateFormat' => 'j/n/Y',
3068:                 'timeFormat' => 'g:i A',
3069:                 'dateTimeFormat' => 'j/n/Y g:i A'
3070:             ),
3071:             'he' => array(
3072:                 'name' => 'Hebrew',
3073:                 'dateFormat' => 'd/m/Y',
3074:                 'timeFormat' => 'H:i',
3075:                 'dateTimeFormat' => 'd/m/Y H:i'
3076:             ),
3077:             'he-IL' => array(
3078:                 'name' => 'Hebrew (Israel)',
3079:                 'dateFormat' => 'd/m/Y',
3080:                 'timeFormat' => 'H:i',
3081:                 'dateTimeFormat' => 'd/m/Y H:i'
3082:             ),
3083:             'hi' => array(
3084:                 'name' => 'Hindi',
3085:                 'dateFormat' => 'd-m-Y',
3086:                 'timeFormat' => 'H:i',
3087:                 'dateTimeFormat' => 'd-m-Y H:i'
3088:             ),
3089:             'hi-IN' => array(
3090:                 'name' => 'Hindi (India)',
3091:                 'dateFormat' => 'd-m-Y',
3092:                 'timeFormat' => 'H:i',
3093:                 'dateTimeFormat' => 'd-m-Y H:i'
3094:             ),
3095:             'hu' => array(
3096:                 'name' => 'Hungarian',
3097:                 'dateFormat' => 'Y. m. d.',
3098:                 'timeFormat' => 'G:i',
3099:                 'dateTimeFormat' => 'Y. m. d. G:i'
3100:             ),
3101:             'hu-HU' => array(
3102:                 'name' => 'Hungarian (Hungary)',
3103:                 'dateFormat' => 'Y. m. d.',
3104:                 'timeFormat' => 'G:i',
3105:                 'dateTimeFormat' => 'Y. m. d. G:i'
3106:             ),
3107:             'ibb' => array(
3108:                 'name' => 'Ibibio',
3109:                 'dateFormat' => 'j/n/Y',
3110:                 'timeFormat' => 'g:iA',
3111:                 'dateTimeFormat' => 'j/n/Y g:iA'
3112:             ),
3113:             'ibb-NG' => array(
3114:                 'name' => 'Ibibio (Nigeria)',
3115:                 'dateFormat' => 'j/n/Y',
3116:                 'timeFormat' => 'g:iA',
3117:                 'dateTimeFormat' => 'j/n/Y g:iA'
3118:             ),
3119:             'is' => array(
3120:                 'name' => 'Icelandic',
3121:                 'dateFormat' => 'j.n.Y',
3122:                 'timeFormat' => 'H:i',
3123:                 'dateTimeFormat' => 'j.n.Y H:i'
3124:             ),
3125:             'is-IS' => array(
3126:                 'name' => 'Icelandic (Iceland)',
3127:                 'dateFormat' => 'j.n.Y',
3128:                 'timeFormat' => 'H:i',
3129:                 'dateTimeFormat' => 'j.n.Y H:i'
3130:             ),
3131:             'ig' => array(
3132:                 'name' => 'Igbo',
3133:                 'dateFormat' => 'd/m/Y',
3134:                 'timeFormat' => 'g:i A',
3135:                 'dateTimeFormat' => 'd/m/Y g:i A'
3136:             ),
3137:             'ig-NG' => array(
3138:                 'name' => 'Igbo (Nigeria)',
3139:                 'dateFormat' => 'd/m/Y',
3140:                 'timeFormat' => 'g:i A',
3141:                 'dateTimeFormat' => 'd/m/Y g:i A'
3142:             ),
3143:             'id' => array(
3144:                 'name' => 'Indonesian',
3145:                 'dateFormat' => 'd/m/Y',
3146:                 'timeFormat' => 'H.i',
3147:                 'dateTimeFormat' => 'd/m/Y H.i'
3148:             ),
3149:             'id-ID' => array(
3150:                 'name' => 'Indonesian (Indonesia)',
3151:                 'dateFormat' => 'd/m/Y',
3152:                 'timeFormat' => 'H.i',
3153:                 'dateTimeFormat' => 'd/m/Y H.i'
3154:             ),
3155:             'ia' => array(
3156:                 'name' => 'Interlingua',
3157:                 'dateFormat' => 'Y/m/d',
3158:                 'timeFormat' => 'H:i',
3159:                 'dateTimeFormat' => 'Y/m/d H:i'
3160:             ),
3161:             'ia-001' => array(
3162:                 'name' => 'Interlingua (World)',
3163:                 'dateFormat' => 'Y/m/d',
3164:                 'timeFormat' => 'H:i',
3165:                 'dateTimeFormat' => 'Y/m/d H:i'
3166:             ),
3167:             'ia-FR' => array(
3168:                 'name' => 'Interlingua (France)',
3169:                 'dateFormat' => 'Y/m/d',
3170:                 'timeFormat' => 'H:i',
3171:                 'dateTimeFormat' => 'Y/m/d H:i'
3172:             ),
3173:             'iu' => array(
3174:                 'name' => 'Inuktitut',
3175:                 'dateFormat' => 'j/m/Y',
3176:                 'timeFormat' => 'g:i A',
3177:                 'dateTimeFormat' => 'j/m/Y g:i A'
3178:             ),
3179:             'iu-Latn' => array(
3180:                 'name' => 'Inuktitut (Latin)',
3181:                 'dateFormat' => 'j/m/Y',
3182:                 'timeFormat' => 'g:i A',
3183:                 'dateTimeFormat' => 'j/m/Y g:i A'
3184:             ),
3185:             'iu-Latn-CA' => array(
3186:                 'name' => 'Inuktitut (Latin, Canada)',
3187:                 'dateFormat' => 'j/m/Y',
3188:                 'timeFormat' => 'g:i A',
3189:                 'dateTimeFormat' => 'j/m/Y g:i A'
3190:             ),
3191:             'iu-Cans' => array(
3192:                 'name' => 'Inuktitut (Syllabics)',
3193:                 'dateFormat' => 'j/n/Y',
3194:                 'timeFormat' => 'g:i A',
3195:                 'dateTimeFormat' => 'j/n/Y g:i A'
3196:             ),
3197:             'iu-Cans-CA' => array(
3198:                 'name' => 'Inuktitut (Syllabics, Canada)',
3199:                 'dateFormat' => 'j/n/Y',
3200:                 'timeFormat' => 'g:i A',
3201:                 'dateTimeFormat' => 'j/n/Y g:i A'
3202:             ),
3203:             'ga' => array(
3204:                 'name' => 'Irish',
3205:                 'dateFormat' => 'd/m/Y',
3206:                 'timeFormat' => 'H:i',
3207:                 'dateTimeFormat' => 'd/m/Y H:i'
3208:             ),
3209:             'ga-IE' => array(
3210:                 'name' => 'Irish (Ireland)',
3211:                 'dateFormat' => 'd/m/Y',
3212:                 'timeFormat' => 'H:i',
3213:                 'dateTimeFormat' => 'd/m/Y H:i'
3214:             ),
3215:             'it' => array(
3216:                 'name' => 'Italian',
3217:                 'dateFormat' => 'd/m/Y',
3218:                 'timeFormat' => 'H:i',
3219:                 'dateTimeFormat' => 'd/m/Y H:i'
3220:             ),
3221:             'it-IT' => array(
3222:                 'name' => 'Italian (Italy)',
3223:                 'dateFormat' => 'd/m/Y',
3224:                 'timeFormat' => 'H:i',
3225:                 'dateTimeFormat' => 'd/m/Y H:i'
3226:             ),
3227:             'it-SM' => array(
3228:                 'name' => 'Italian (San Marino)',
3229:                 'dateFormat' => 'd/m/Y',
3230:                 'timeFormat' => 'H:i',
3231:                 'dateTimeFormat' => 'd/m/Y H:i'
3232:             ),
3233:             'it-CH' => array(
3234:                 'name' => 'Italian (Switzerland)',
3235:                 'dateFormat' => 'd.m.Y',
3236:                 'timeFormat' => 'H:i',
3237:                 'dateTimeFormat' => 'd.m.Y H:i'
3238:             ),
3239:             'ja' => array(
3240:                 'name' => 'Japanese',
3241:                 'dateFormat' => 'Y/m/d',
3242:                 'timeFormat' => 'G:i',
3243:                 'dateTimeFormat' => 'Y/m/d G:i'
3244:             ),
3245:             'ja-JP' => array(
3246:                 'name' => 'Japanese (Japan)',
3247:                 'dateFormat' => 'Y/m/d',
3248:                 'timeFormat' => 'G:i',
3249:                 'dateTimeFormat' => 'Y/m/d G:i'
3250:             ),
3251:             'jv' => array(
3252:                 'name' => 'Javanese',
3253:                 'dateFormat' => 'd/m/Y',
3254:                 'timeFormat' => 'H.i',
3255:                 'dateTimeFormat' => 'd/m/Y H.i'
3256:             ),
3257:             'jv-Java' => array(
3258:                 'name' => 'Javanese (Javanese)',
3259:                 'dateFormat' => 'd/m/Y',
3260:                 'timeFormat' => 'H.i',
3261:                 'dateTimeFormat' => 'd/m/Y H.i'
3262:             ),
3263:             'jv-Java-ID' => array(
3264:                 'name' => 'Javanese (Javanese, Indonesia)',
3265:                 'dateFormat' => 'd/m/Y',
3266:                 'timeFormat' => 'H.i',
3267:                 'dateTimeFormat' => 'd/m/Y H.i'
3268:             ),
3269:             'jv-Latn' => array(
3270:                 'name' => 'Javanese (Latin)',
3271:                 'dateFormat' => 'd/m/Y',
3272:                 'timeFormat' => 'H.i',
3273:                 'dateTimeFormat' => 'd/m/Y H.i'
3274:             ),
3275:             'jv-Latn-ID' => array(
3276:                 'name' => 'Javanese (Latin, Indonesia)',
3277:                 'dateFormat' => 'd/m/Y',
3278:                 'timeFormat' => 'H.i',
3279:                 'dateTimeFormat' => 'd/m/Y H.i'
3280:             ),
3281:             'dyo' => array(
3282:                 'name' => 'Jola-Fonyi',
3283:                 'dateFormat' => 'j/n/Y',
3284:                 'timeFormat' => 'H:i',
3285:                 'dateTimeFormat' => 'j/n/Y H:i'
3286:             ),
3287:             'dyo-SN' => array(
3288:                 'name' => 'Jola-Fonyi (Senegal)',
3289:                 'dateFormat' => 'j/n/Y',
3290:                 'timeFormat' => 'H:i',
3291:                 'dateTimeFormat' => 'j/n/Y H:i'
3292:             ),
3293:             'kea' => array(
3294:                 'name' => 'Kabuverdianu',
3295:                 'dateFormat' => 'j/n/Y',
3296:                 'timeFormat' => 'H:i',
3297:                 'dateTimeFormat' => 'j/n/Y H:i'
3298:             ),
3299:             'kea-CV' => array(
3300:                 'name' => 'Kabuverdianu (Cabo Verde)',
3301:                 'dateFormat' => 'j/n/Y',
3302:                 'timeFormat' => 'H:i',
3303:                 'dateTimeFormat' => 'j/n/Y H:i'
3304:             ),
3305:             'kab' => array(
3306:                 'name' => 'Kabyle',
3307:                 'dateFormat' => 'j/n/Y',
3308:                 'timeFormat' => 'g:i A',
3309:                 'dateTimeFormat' => 'j/n/Y g:i A'
3310:             ),
3311:             'kab-DZ' => array(
3312:                 'name' => 'Kabyle (Algeria)',
3313:                 'dateFormat' => 'j/n/Y',
3314:                 'timeFormat' => 'g:i A',
3315:                 'dateTimeFormat' => 'j/n/Y g:i A'
3316:             ),
3317:             'kkj' => array(
3318:                 'name' => 'Kako',
3319:                 'dateFormat' => 'd/m Y',
3320:                 'timeFormat' => 'H:i',
3321:                 'dateTimeFormat' => 'd/m Y H:i'
3322:             ),
3323:             'kkj-CM' => array(
3324:                 'name' => 'Kako (Cameroon)',
3325:                 'dateFormat' => 'd/m Y',
3326:                 'timeFormat' => 'H:i',
3327:                 'dateTimeFormat' => 'd/m Y H:i'
3328:             ),
3329:             'kln' => array(
3330:                 'name' => 'Kalenjin',
3331:                 'dateFormat' => 'd/m/Y',
3332:                 'timeFormat' => 'H:i',
3333:                 'dateTimeFormat' => 'd/m/Y H:i'
3334:             ),
3335:             'kln-KE' => array(
3336:                 'name' => 'Kalenjin (Kenya)',
3337:                 'dateFormat' => 'd/m/Y',
3338:                 'timeFormat' => 'H:i',
3339:                 'dateTimeFormat' => 'd/m/Y H:i'
3340:             ),
3341:             'kam' => array(
3342:                 'name' => 'Kamba',
3343:                 'dateFormat' => 'd/m/Y',
3344:                 'timeFormat' => 'H:i',
3345:                 'dateTimeFormat' => 'd/m/Y H:i'
3346:             ),
3347:             'kam-KE' => array(
3348:                 'name' => 'Kamba (Kenya)',
3349:                 'dateFormat' => 'd/m/Y',
3350:                 'timeFormat' => 'H:i',
3351:                 'dateTimeFormat' => 'd/m/Y H:i'
3352:             ),
3353:             'kn' => array(
3354:                 'name' => 'Kannada',
3355:                 'dateFormat' => 'd-m-y',
3356:                 'timeFormat' => 'H:i',
3357:                 'dateTimeFormat' => 'd-m-y H:i'
3358:             ),
3359:             'kn-IN' => array(
3360:                 'name' => 'Kannada (India)',
3361:                 'dateFormat' => 'd-m-y',
3362:                 'timeFormat' => 'H:i',
3363:                 'dateTimeFormat' => 'd-m-y H:i'
3364:             ),
3365:             'kr' => array(
3366:                 'name' => 'Kanuri',
3367:                 'dateFormat' => 'j/n/Y',
3368:                 'timeFormat' => 'g:i A',
3369:                 'dateTimeFormat' => 'j/n/Y g:i A'
3370:             ),
3371:             'kr-NG' => array(
3372:                 'name' => 'Kanuri (Nigeria)',
3373:                 'dateFormat' => 'j/n/Y',
3374:                 'timeFormat' => 'g:i A',
3375:                 'dateTimeFormat' => 'j/n/Y g:i A'
3376:             ),
3377:             'ks' => array(
3378:                 'name' => 'Kashmiri',
3379:                 'dateFormat' => 'n/j/Y',
3380:                 'timeFormat' => 'g:i A',
3381:                 'dateTimeFormat' => 'n/j/Y g:i A'
3382:             ),
3383:             'ks-Deva' => array(
3384:                 'name' => 'Kashmiri (Devanagari)',
3385:                 'dateFormat' => 'd-m-Y',
3386:                 'timeFormat' => 'G:i',
3387:                 'dateTimeFormat' => 'd-m-Y G:i'
3388:             ),
3389:             'ks-Deva-IN' => array(
3390:                 'name' => 'Kashmiri (Devanagari, India)',
3391:                 'dateFormat' => 'd-m-Y',
3392:                 'timeFormat' => 'G:i',
3393:                 'dateTimeFormat' => 'd-m-Y G:i'
3394:             ),
3395:             'ks-Arab' => array(
3396:                 'name' => 'Kashmiri (Perso-Arabic)',
3397:                 'dateFormat' => 'n/j/Y',
3398:                 'timeFormat' => 'g:i A',
3399:                 'dateTimeFormat' => 'n/j/Y g:i A'
3400:             ),
3401:             'ks-Arab-IN' => array(
3402:                 'name' => 'Kashmiri (Perso-Arabic, India)',
3403:                 'dateFormat' => 'n/j/Y',
3404:                 'timeFormat' => 'g:i A',
3405:                 'dateTimeFormat' => 'n/j/Y g:i A'
3406:             ),
3407:             'kk' => array(
3408:                 'name' => 'Kazakh',
3409:                 'dateFormat' => 'd.m.Y',
3410:                 'timeFormat' => 'H:i',
3411:                 'dateTimeFormat' => 'd.m.Y H:i'
3412:             ),
3413:             'kk-KZ' => array(
3414:                 'name' => 'Kazakh (Kazakhstan)',
3415:                 'dateFormat' => 'd.m.Y',
3416:                 'timeFormat' => 'H:i',
3417:                 'dateTimeFormat' => 'd.m.Y H:i'
3418:             ),
3419:             'km' => array(
3420:                 'name' => 'Khmer',
3421:                 'dateFormat' => 'd/m/y',
3422:                 'timeFormat' => 'G:i',
3423:                 'dateTimeFormat' => 'd/m/y G:i'
3424:             ),
3425:             'km-KH' => array(
3426:                 'name' => 'Khmer (Cambodia)',
3427:                 'dateFormat' => 'd/m/y',
3428:                 'timeFormat' => 'G:i',
3429:                 'dateTimeFormat' => 'd/m/y G:i'
3430:             ),
3431:             'quc' => array(
3432:                 'name' => 'K\'iche\'',
3433:                 'dateFormat' => 'd/m/Y',
3434:                 'timeFormat' => 'g:i a',
3435:                 'dateTimeFormat' => 'd/m/Y g:i a'
3436:             ),
3437:             'quc-Latn' => array(
3438:                 'name' => 'K\'iche\' (Latin)',
3439:                 'dateFormat' => 'd/m/Y',
3440:                 'timeFormat' => 'g:i a',
3441:                 'dateTimeFormat' => 'd/m/Y g:i a'
3442:             ),
3443:             'quc-Latn-GT' => array(
3444:                 'name' => 'K\'iche\' (Latin, Guatemala)',
3445:                 'dateFormat' => 'd/m/Y',
3446:                 'timeFormat' => 'g:i a',
3447:                 'dateTimeFormat' => 'd/m/Y g:i a'
3448:             ),
3449:             'qut' => array(
3450:                 'name' => 'K\'iche\' (qut)',
3451:                 'dateFormat' => 'd/m/Y',
3452:                 'timeFormat' => 'g:i a',
3453:                 'dateTimeFormat' => 'd/m/Y g:i a'
3454:             ),
3455:             'qut-GT' => array(
3456:                 'name' => 'K\'iche\' (qut, Guatemala)',
3457:                 'dateFormat' => 'd/m/Y',
3458:                 'timeFormat' => 'g:i a',
3459:                 'dateTimeFormat' => 'd/m/Y g:i a'
3460:             ),
3461:             'ki' => array(
3462:                 'name' => 'Kikuyu',
3463:                 'dateFormat' => 'd/m/Y',
3464:                 'timeFormat' => 'H:i',
3465:                 'dateTimeFormat' => 'd/m/Y H:i'
3466:             ),
3467:             'ki-KE' => array(
3468:                 'name' => 'Kikuyu (Kenya)',
3469:                 'dateFormat' => 'd/m/Y',
3470:                 'timeFormat' => 'H:i',
3471:                 'dateTimeFormat' => 'd/m/Y H:i'
3472:             ),
3473:             'rw' => array(
3474:                 'name' => 'Kinyarwanda',
3475:                 'dateFormat' => 'Y/m/d',
3476:                 'timeFormat' => 'H:i',
3477:                 'dateTimeFormat' => 'Y/m/d H:i'
3478:             ),
3479:             'rw-RW' => array(
3480:                 'name' => 'Kinyarwanda (Rwanda)',
3481:                 'dateFormat' => 'Y/m/d',
3482:                 'timeFormat' => 'H:i',
3483:                 'dateTimeFormat' => 'Y/m/d H:i'
3484:             ),
3485:             'sw' => array(
3486:                 'name' => 'Kiswahili',
3487:                 'dateFormat' => 'd/m/Y',
3488:                 'timeFormat' => 'H:i',
3489:                 'dateTimeFormat' => 'd/m/Y H:i'
3490:             ),
3491:             'sw-CD' => array(
3492:                 'name' => 'Kiswahili (Congo DRC)',
3493:                 'dateFormat' => 'j/n/Y',
3494:                 'timeFormat' => 'H:i',
3495:                 'dateTimeFormat' => 'j/n/Y H:i'
3496:             ),
3497:             'sw-KE' => array(
3498:                 'name' => 'Kiswahili (Kenya)',
3499:                 'dateFormat' => 'd/m/Y',
3500:                 'timeFormat' => 'H:i',
3501:                 'dateTimeFormat' => 'd/m/Y H:i'
3502:             ),
3503:             'sw-TZ' => array(
3504:                 'name' => 'Kiswahili (Tanzania)',
3505:                 'dateFormat' => 'd/m/Y',
3506:                 'timeFormat' => 'H:i',
3507:                 'dateTimeFormat' => 'd/m/Y H:i'
3508:             ),
3509:             'sw-UG' => array(
3510:                 'name' => 'Kiswahili (Uganda)',
3511:                 'dateFormat' => 'd/m/Y',
3512:                 'timeFormat' => 'H:i',
3513:                 'dateTimeFormat' => 'd/m/Y H:i'
3514:             ),
3515:             'kok' => array(
3516:                 'name' => 'Konkani',
3517:                 'dateFormat' => 'd-m-Y',
3518:                 'timeFormat' => 'H:i',
3519:                 'dateTimeFormat' => 'd-m-Y H:i'
3520:             ),
3521:             'kok-IN' => array(
3522:                 'name' => 'Konkani (India)',
3523:                 'dateFormat' => 'd-m-Y',
3524:                 'timeFormat' => 'H:i',
3525:                 'dateTimeFormat' => 'd-m-Y H:i'
3526:             ),
3527:             'ko' => array(
3528:                 'name' => 'Korean',
3529:                 'dateFormat' => 'Y-m-d',
3530:                 'timeFormat' => 'A g:i',
3531:                 'dateTimeFormat' => 'Y-m-d A g:i'
3532:             ),
3533:             'ko-KP' => array(
3534:                 'name' => 'Korean (North Korea)',
3535:                 'dateFormat' => 'Y. n. j.',
3536:                 'timeFormat' => 'A g:i',
3537:                 'dateTimeFormat' => 'Y. n. j. A g:i'
3538:             ),
3539:             'ko-KR' => array(
3540:                 'name' => 'Korean (Korea)',
3541:                 'dateFormat' => 'Y-m-d',
3542:                 'timeFormat' => 'A g:i',
3543:                 'dateTimeFormat' => 'Y-m-d A g:i'
3544:             ),
3545:             'khq' => array(
3546:                 'name' => 'Koyra Chiini',
3547:                 'dateFormat' => 'j/n/Y',
3548:                 'timeFormat' => 'H:i',
3549:                 'dateTimeFormat' => 'j/n/Y H:i'
3550:             ),
3551:             'khq-ML' => array(
3552:                 'name' => 'Koyra Chiini (Mali)',
3553:                 'dateFormat' => 'j/n/Y',
3554:                 'timeFormat' => 'H:i',
3555:                 'dateTimeFormat' => 'j/n/Y H:i'
3556:             ),
3557:             'ses' => array(
3558:                 'name' => 'Koyraboro Senni',
3559:                 'dateFormat' => 'j/n/Y',
3560:                 'timeFormat' => 'H:i',
3561:                 'dateTimeFormat' => 'j/n/Y H:i'
3562:             ),
3563:             'ses-ML' => array(
3564:                 'name' => 'Koyraboro Senni (Mali)',
3565:                 'dateFormat' => 'j/n/Y',
3566:                 'timeFormat' => 'H:i',
3567:                 'dateTimeFormat' => 'j/n/Y H:i'
3568:             ),
3569:             'ku-Arab-IR' => array(
3570:                 'name' => 'Kurdish (Perso-Arabic, Iran)',
3571:                 'dateFormat' => 'd/m/Y',
3572:                 'timeFormat' => 'H:i',
3573:                 'dateTimeFormat' => 'd/m/Y H:i'
3574:             ),
3575:             'nmg' => array(
3576:                 'name' => 'Kwasio',
3577:                 'dateFormat' => 'j/n/Y',
3578:                 'timeFormat' => 'H:i',
3579:                 'dateTimeFormat' => 'j/n/Y H:i'
3580:             ),
3581:             'nmg-CM' => array(
3582:                 'name' => 'Kwasio (Cameroon)',
3583:                 'dateFormat' => 'j/n/Y',
3584:                 'timeFormat' => 'H:i',
3585:                 'dateTimeFormat' => 'j/n/Y H:i'
3586:             ),
3587:             'ky' => array(
3588:                 'name' => 'Kyrgyz',
3589:                 'dateFormat' => 'j-M y',
3590:                 'timeFormat' => 'H:i',
3591:                 'dateTimeFormat' => 'j-M y H:i'
3592:             ),
3593:             'ky-KG' => array(
3594:                 'name' => 'Kyrgyz (Kyrgyzstan)',
3595:                 'dateFormat' => 'j-M y',
3596:                 'timeFormat' => 'H:i',
3597:                 'dateTimeFormat' => 'j-M y H:i'
3598:             ),
3599:             'lkt' => array(
3600:                 'name' => 'Lakota',
3601:                 'dateFormat' => 'n/j/Y',
3602:                 'timeFormat' => 'g:i A',
3603:                 'dateTimeFormat' => 'n/j/Y g:i A'
3604:             ),
3605:             'lkt-US' => array(
3606:                 'name' => 'Lakota (United States)',
3607:                 'dateFormat' => 'n/j/Y',
3608:                 'timeFormat' => 'g:i A',
3609:                 'dateTimeFormat' => 'n/j/Y g:i A'
3610:             ),
3611:             'lag' => array(
3612:                 'name' => 'Langi',
3613:                 'dateFormat' => 'd/m/Y',
3614:                 'timeFormat' => 'H:i',
3615:                 'dateTimeFormat' => 'd/m/Y H:i'
3616:             ),
3617:             'lag-TZ' => array(
3618:                 'name' => 'Langi (Tanzania)',
3619:                 'dateFormat' => 'd/m/Y',
3620:                 'timeFormat' => 'H:i',
3621:                 'dateTimeFormat' => 'd/m/Y H:i'
3622:             ),
3623:             'lo' => array(
3624:                 'name' => 'Lao',
3625:                 'dateFormat' => 'j/n/Y',
3626:                 'timeFormat' => 'G:i',
3627:                 'dateTimeFormat' => 'j/n/Y G:i'
3628:             ),
3629:             'lo-LA' => array(
3630:                 'name' => 'Lao (Lao P.D.R.)',
3631:                 'dateFormat' => 'j/n/Y',
3632:                 'timeFormat' => 'G:i',
3633:                 'dateTimeFormat' => 'j/n/Y G:i'
3634:             ),
3635:             'la' => array(
3636:                 'name' => 'Latin',
3637:                 'dateFormat' => 'd/m/Y',
3638:                 'timeFormat' => 'G:i',
3639:                 'dateTimeFormat' => 'd/m/Y G:i'
3640:             ),
3641:             'la-001' => array(
3642:                 'name' => 'Latin (World)',
3643:                 'dateFormat' => 'd/m/Y',
3644:                 'timeFormat' => 'G:i',
3645:                 'dateTimeFormat' => 'd/m/Y G:i'
3646:             ),
3647:             'lv' => array(
3648:                 'name' => 'Latvian',
3649:                 'dateFormat' => 'd.m.Y',
3650:                 'timeFormat' => 'H:i',
3651:                 'dateTimeFormat' => 'd.m.Y H:i'
3652:             ),
3653:             'lv-LV' => array(
3654:                 'name' => 'Latvian (Latvia)',
3655:                 'dateFormat' => 'd.m.Y',
3656:                 'timeFormat' => 'H:i',
3657:                 'dateTimeFormat' => 'd.m.Y H:i'
3658:             ),
3659:             'ln' => array(
3660:                 'name' => 'Lingala',
3661:                 'dateFormat' => 'j/n/Y',
3662:                 'timeFormat' => 'H:i',
3663:                 'dateTimeFormat' => 'j/n/Y H:i'
3664:             ),
3665:             'ln-AO' => array(
3666:                 'name' => 'Lingala (Angola)',
3667:                 'dateFormat' => 'j/n/Y',
3668:                 'timeFormat' => 'H:i',
3669:                 'dateTimeFormat' => 'j/n/Y H:i'
3670:             ),
3671:             'ln-CD' => array(
3672:                 'name' => 'Lingala (Congo DRC)',
3673:                 'dateFormat' => 'j/n/Y',
3674:                 'timeFormat' => 'H:i',
3675:                 'dateTimeFormat' => 'j/n/Y H:i'
3676:             ),
3677:             'ln-CF' => array(
3678:                 'name' => 'Lingala (Central African Republic)',
3679:                 'dateFormat' => 'j/n/Y',
3680:                 'timeFormat' => 'H:i',
3681:                 'dateTimeFormat' => 'j/n/Y H:i'
3682:             ),
3683:             'ln-CG' => array(
3684:                 'name' => 'Lingala (Congo)',
3685:                 'dateFormat' => 'j/n/Y',
3686:                 'timeFormat' => 'H:i',
3687:                 'dateTimeFormat' => 'j/n/Y H:i'
3688:             ),
3689:             'lt' => array(
3690:                 'name' => 'Lithuanian',
3691:                 'dateFormat' => 'Y-m-d',
3692:                 'timeFormat' => 'H:i',
3693:                 'dateTimeFormat' => 'Y-m-d H:i'
3694:             ),
3695:             'lt-LT' => array(
3696:                 'name' => 'Lithuanian (Lithuania)',
3697:                 'dateFormat' => 'Y-m-d',
3698:                 'timeFormat' => 'H:i',
3699:                 'dateTimeFormat' => 'Y-m-d H:i'
3700:             ),
3701:             'dsb' => array(
3702:                 'name' => 'Lower Sorbian',
3703:                 'dateFormat' => 'j. n. Y',
3704:                 'timeFormat' => 'H:i',
3705:                 'dateTimeFormat' => 'j. n. Y H:i'
3706:             ),
3707:             'dsb-DE' => array(
3708:                 'name' => 'Lower Sorbian (Germany)',
3709:                 'dateFormat' => 'j. n. Y',
3710:                 'timeFormat' => 'H:i',
3711:                 'dateTimeFormat' => 'j. n. Y H:i'
3712:             ),
3713:             'lu' => array(
3714:                 'name' => 'Luba-Katanga',
3715:                 'dateFormat' => 'j/n/Y',
3716:                 'timeFormat' => 'H:i',
3717:                 'dateTimeFormat' => 'j/n/Y H:i'
3718:             ),
3719:             'lu-CD' => array(
3720:                 'name' => 'Luba-Katanga (Congo DRC)',
3721:                 'dateFormat' => 'j/n/Y',
3722:                 'timeFormat' => 'H:i',
3723:                 'dateTimeFormat' => 'j/n/Y H:i'
3724:             ),
3725:             'luo' => array(
3726:                 'name' => 'Luo',
3727:                 'dateFormat' => 'd/m/Y',
3728:                 'timeFormat' => 'H:i',
3729:                 'dateTimeFormat' => 'd/m/Y H:i'
3730:             ),
3731:             'luo-KE' => array(
3732:                 'name' => 'Luo (Kenya)',
3733:                 'dateFormat' => 'd/m/Y',
3734:                 'timeFormat' => 'H:i',
3735:                 'dateTimeFormat' => 'd/m/Y H:i'
3736:             ),
3737:             'lb' => array(
3738:                 'name' => 'Luxembourgish',
3739:                 'dateFormat' => 'd.m.y',
3740:                 'timeFormat' => 'H:i',
3741:                 'dateTimeFormat' => 'd.m.y H:i'
3742:             ),
3743:             'lb-LU' => array(
3744:                 'name' => 'Luxembourgish (Luxembourg)',
3745:                 'dateFormat' => 'd.m.y',
3746:                 'timeFormat' => 'H:i',
3747:                 'dateTimeFormat' => 'd.m.y H:i'
3748:             ),
3749:             'luy' => array(
3750:                 'name' => 'Luyia',
3751:                 'dateFormat' => 'd/m/Y',
3752:                 'timeFormat' => 'H:i',
3753:                 'dateTimeFormat' => 'd/m/Y H:i'
3754:             ),
3755:             'luy-KE' => array(
3756:                 'name' => 'Luyia (Kenya)',
3757:                 'dateFormat' => 'd/m/Y',
3758:                 'timeFormat' => 'H:i',
3759:                 'dateTimeFormat' => 'd/m/Y H:i'
3760:             ),
3761:             'mk' => array(
3762:                 'name' => 'Macedonian',
3763:                 'dateFormat' => 'd.n.Y',
3764:                 'timeFormat' => 'H:i',
3765:                 'dateTimeFormat' => 'd.n.Y H:i'
3766:             ),
3767:             'mk-MK' => array(
3768:                 'name' => 'Macedonian (Former Yugoslav Republic of Macedonia)',
3769:                 'dateFormat' => 'd.n.Y',
3770:                 'timeFormat' => 'H:i',
3771:                 'dateTimeFormat' => 'd.n.Y H:i'
3772:             ),
3773:             'jmc' => array(
3774:                 'name' => 'Machame',
3775:                 'dateFormat' => 'd/m/Y',
3776:                 'timeFormat' => 'H:i',
3777:                 'dateTimeFormat' => 'd/m/Y H:i'
3778:             ),
3779:             'jmc-TZ' => array(
3780:                 'name' => 'Machame (Tanzania)',
3781:                 'dateFormat' => 'd/m/Y',
3782:                 'timeFormat' => 'H:i',
3783:                 'dateTimeFormat' => 'd/m/Y H:i'
3784:             ),
3785:             'mgh' => array(
3786:                 'name' => 'Makhuwa-Meetto',
3787:                 'dateFormat' => 'd/m/Y',
3788:                 'timeFormat' => 'H:i',
3789:                 'dateTimeFormat' => 'd/m/Y H:i'
3790:             ),
3791:             'mgh-MZ' => array(
3792:                 'name' => 'Makhuwa-Meetto (Mozambique)',
3793:                 'dateFormat' => 'd/m/Y',
3794:                 'timeFormat' => 'H:i',
3795:                 'dateTimeFormat' => 'd/m/Y H:i'
3796:             ),
3797:             'kde' => array(
3798:                 'name' => 'Makonde',
3799:                 'dateFormat' => 'd/m/Y',
3800:                 'timeFormat' => 'H:i',
3801:                 'dateTimeFormat' => 'd/m/Y H:i'
3802:             ),
3803:             'kde-TZ' => array(
3804:                 'name' => 'Makonde (Tanzania)',
3805:                 'dateFormat' => 'd/m/Y',
3806:                 'timeFormat' => 'H:i',
3807:                 'dateTimeFormat' => 'd/m/Y H:i'
3808:             ),
3809:             'mg' => array(
3810:                 'name' => 'Malagasy',
3811:                 'dateFormat' => 'j/n/Y',
3812:                 'timeFormat' => 'H:i',
3813:                 'dateTimeFormat' => 'j/n/Y H:i'
3814:             ),
3815:             'mg-MG' => array(
3816:                 'name' => 'Malagasy (Madagascar)',
3817:                 'dateFormat' => 'j/n/Y',
3818:                 'timeFormat' => 'H:i',
3819:                 'dateTimeFormat' => 'j/n/Y H:i'
3820:             ),
3821:             'ms' => array(
3822:                 'name' => 'Malay',
3823:                 'dateFormat' => 'j/m/Y',
3824:                 'timeFormat' => 'g:i A',
3825:                 'dateTimeFormat' => 'j/m/Y g:i A'
3826:             ),
3827:             'ms-BN' => array(
3828:                 'name' => 'Malay (Brunei)',
3829:                 'dateFormat' => 'j/m/Y',
3830:                 'timeFormat' => 'g:i A',
3831:                 'dateTimeFormat' => 'j/m/Y g:i A'
3832:             ),
3833:             'ms-MY' => array(
3834:                 'name' => 'Malay (Malaysia)',
3835:                 'dateFormat' => 'j/m/Y',
3836:                 'timeFormat' => 'g:i A',
3837:                 'dateTimeFormat' => 'j/m/Y g:i A'
3838:             ),
3839:             'ms-SG' => array(
3840:                 'name' => 'Malay (Singapore)',
3841:                 'dateFormat' => 'j/m/Y',
3842:                 'timeFormat' => 'g:i A',
3843:                 'dateTimeFormat' => 'j/m/Y g:i A'
3844:             ),
3845:             'ml' => array(
3846:                 'name' => 'Malayalam',
3847:                 'dateFormat' => 'j/n/Y',
3848:                 'timeFormat' => 'g:i A',
3849:                 'dateTimeFormat' => 'j/n/Y g:i A'
3850:             ),
3851:             'ml-IN' => array(
3852:                 'name' => 'Malayalam (India)',
3853:                 'dateFormat' => 'j/n/Y',
3854:                 'timeFormat' => 'g:i A',
3855:                 'dateTimeFormat' => 'j/n/Y g:i A'
3856:             ),
3857:             'mt' => array(
3858:                 'name' => 'Maltese',
3859:                 'dateFormat' => 'd/m/Y',
3860:                 'timeFormat' => 'H:i',
3861:                 'dateTimeFormat' => 'd/m/Y H:i'
3862:             ),
3863:             'mt-MT' => array(
3864:                 'name' => 'Maltese (Malta)',
3865:                 'dateFormat' => 'd/m/Y',
3866:                 'timeFormat' => 'H:i',
3867:                 'dateTimeFormat' => 'd/m/Y H:i'
3868:             ),
3869:             'mni' => array(
3870:                 'name' => 'Manipuri',
3871:                 'dateFormat' => 'd/m/Y',
3872:                 'timeFormat' => 'H:i',
3873:                 'dateTimeFormat' => 'd/m/Y H:i'
3874:             ),
3875:             'mni-IN' => array(
3876:                 'name' => 'Manipuri (India)',
3877:                 'dateFormat' => 'd/m/Y',
3878:                 'timeFormat' => 'H:i',
3879:                 'dateTimeFormat' => 'd/m/Y H:i'
3880:             ),
3881:             'gv' => array(
3882:                 'name' => 'Manx',
3883:                 'dateFormat' => 'd/m/Y',
3884:                 'timeFormat' => 'H:i',
3885:                 'dateTimeFormat' => 'd/m/Y H:i'
3886:             ),
3887:             'gv-IM' => array(
3888:                 'name' => 'Manx (Isle of Man)',
3889:                 'dateFormat' => 'd/m/Y',
3890:                 'timeFormat' => 'H:i',
3891:                 'dateTimeFormat' => 'd/m/Y H:i'
3892:             ),
3893:             'mi' => array(
3894:                 'name' => 'Maori',
3895:                 'dateFormat' => 'd/m/Y',
3896:                 'timeFormat' => 'g:i a',
3897:                 'dateTimeFormat' => 'd/m/Y g:i a'
3898:             ),
3899:             'mi-NZ' => array(
3900:                 'name' => 'Maori (New Zealand)',
3901:                 'dateFormat' => 'd/m/Y',
3902:                 'timeFormat' => 'g:i a',
3903:                 'dateTimeFormat' => 'd/m/Y g:i a'
3904:             ),
3905:             'arn' => array(
3906:                 'name' => 'Mapudungun',
3907:                 'dateFormat' => 'd-m-Y',
3908:                 'timeFormat' => 'G:i',
3909:                 'dateTimeFormat' => 'd-m-Y G:i'
3910:             ),
3911:             'arn-CL' => array(
3912:                 'name' => 'Mapudungun (Chile)',
3913:                 'dateFormat' => 'd-m-Y',
3914:                 'timeFormat' => 'G:i',
3915:                 'dateTimeFormat' => 'd-m-Y G:i'
3916:             ),
3917:             'mr' => array(
3918:                 'name' => 'Marathi',
3919:                 'dateFormat' => 'd-m-Y',
3920:                 'timeFormat' => 'H:i',
3921:                 'dateTimeFormat' => 'd-m-Y H:i'
3922:             ),
3923:             'mr-IN' => array(
3924:                 'name' => 'Marathi (India)',
3925:                 'dateFormat' => 'd-m-Y',
3926:                 'timeFormat' => 'H:i',
3927:                 'dateTimeFormat' => 'd-m-Y H:i'
3928:             ),
3929:             'mas' => array(
3930:                 'name' => 'Masai',
3931:                 'dateFormat' => 'd/m/Y',
3932:                 'timeFormat' => 'H:i',
3933:                 'dateTimeFormat' => 'd/m/Y H:i'
3934:             ),
3935:             'mas-KE' => array(
3936:                 'name' => 'Masai (Kenya)',
3937:                 'dateFormat' => 'd/m/Y',
3938:                 'timeFormat' => 'H:i',
3939:                 'dateTimeFormat' => 'd/m/Y H:i'
3940:             ),
3941:             'mas-TZ' => array(
3942:                 'name' => 'Masai (Tanzania)',
3943:                 'dateFormat' => 'd/m/Y',
3944:                 'timeFormat' => 'H:i',
3945:                 'dateTimeFormat' => 'd/m/Y H:i'
3946:             ),
3947:             'mzn' => array(
3948:                 'name' => 'Mazanderani',
3949:                 'dateFormat' => 'd/m/Y',
3950:                 'timeFormat' => 'H:i',
3951:                 'dateTimeFormat' => 'd/m/Y H:i'
3952:             ),
3953:             'mzn-IR' => array(
3954:                 'name' => 'Mazanderani (Iran)',
3955:                 'dateFormat' => 'd/m/Y',
3956:                 'timeFormat' => 'H:i',
3957:                 'dateTimeFormat' => 'd/m/Y H:i'
3958:             ),
3959:             'mer' => array(
3960:                 'name' => 'Meru',
3961:                 'dateFormat' => 'd/m/Y',
3962:                 'timeFormat' => 'H:i',
3963:                 'dateTimeFormat' => 'd/m/Y H:i'
3964:             ),
3965:             'mer-KE' => array(
3966:                 'name' => 'Meru (Kenya)',
3967:                 'dateFormat' => 'd/m/Y',
3968:                 'timeFormat' => 'H:i',
3969:                 'dateTimeFormat' => 'd/m/Y H:i'
3970:             ),
3971:             'mgo' => array(
3972:                 'name' => 'Metaʼ',
3973:                 'dateFormat' => 'Y-m-d',
3974:                 'timeFormat' => 'H:i',
3975:                 'dateTimeFormat' => 'Y-m-d H:i'
3976:             ),
3977:             'mgo-CM' => array(
3978:                 'name' => 'Metaʼ (Cameroon)',
3979:                 'dateFormat' => 'Y-m-d',
3980:                 'timeFormat' => 'H:i',
3981:                 'dateTimeFormat' => 'Y-m-d H:i'
3982:             ),
3983:             'moh' => array(
3984:                 'name' => 'Mohawk',
3985:                 'dateFormat' => 'n/j/Y',
3986:                 'timeFormat' => 'g:i A',
3987:                 'dateTimeFormat' => 'n/j/Y g:i A'
3988:             ),
3989:             'moh-CA' => array(
3990:                 'name' => 'Mohawk (Canada)',
3991:                 'dateFormat' => 'n/j/Y',
3992:                 'timeFormat' => 'g:i A',
3993:                 'dateTimeFormat' => 'n/j/Y g:i A'
3994:             ),
3995:             'mn' => array(
3996:                 'name' => 'Mongolian',
3997:                 'dateFormat' => 'Y-m-d',
3998:                 'timeFormat' => 'H:i',
3999:                 'dateTimeFormat' => 'Y-m-d H:i'
4000:             ),
4001:             'mn-Cyrl' => array(
4002:                 'name' => 'Mongolian (Cyrillic)',
4003:                 'dateFormat' => 'Y-m-d',
4004:                 'timeFormat' => 'H:i',
4005:                 'dateTimeFormat' => 'Y-m-d H:i'
4006:             ),
4007:             'mn-MN' => array(
4008:                 'name' => 'Mongolian (Cyrillic, Mongolia)',
4009:                 'dateFormat' => 'Y-m-d',
4010:                 'timeFormat' => 'H:i',
4011:                 'dateTimeFormat' => 'Y-m-d H:i'
4012:             ),
4013:             'mn-Mong' => array(
4014:                 'name' => 'Mongolian (Traditional Mongolian)',
4015:                 'dateFormat' => 'Y/n/j',
4016:                 'timeFormat' => 'G:i',
4017:                 'dateTimeFormat' => 'Y/n/j G:i'
4018:             ),
4019:             'mn-Mong-MN' => array(
4020:                 'name' => 'Mongolian (Traditional Mongolian, Mongolia)',
4021:                 'dateFormat' => 'Y/n/j',
4022:                 'timeFormat' => 'G:i',
4023:                 'dateTimeFormat' => 'Y/n/j G:i'
4024:             ),
4025:             'mn-Mong-CN' => array(
4026:                 'name' => 'Mongolian (Traditional Mongolian, China)',
4027:                 'dateFormat' => 'Y/n/j',
4028:                 'timeFormat' => 'G:i',
4029:                 'dateTimeFormat' => 'Y/n/j G:i'
4030:             ),
4031:             'mfe' => array(
4032:                 'name' => 'Morisyen',
4033:                 'dateFormat' => 'j/n/Y',
4034:                 'timeFormat' => 'H:i',
4035:                 'dateTimeFormat' => 'j/n/Y H:i'
4036:             ),
4037:             'mfe-MU' => array(
4038:                 'name' => 'Morisyen (Mauritius)',
4039:                 'dateFormat' => 'j/n/Y',
4040:                 'timeFormat' => 'H:i',
4041:                 'dateTimeFormat' => 'j/n/Y H:i'
4042:             ),
4043:             'mua' => array(
4044:                 'name' => 'Mundang',
4045:                 'dateFormat' => 'j/n/Y',
4046:                 'timeFormat' => 'H:i',
4047:                 'dateTimeFormat' => 'j/n/Y H:i'
4048:             ),
4049:             'mua-CM' => array(
4050:                 'name' => 'Mundang (Cameroon)',
4051:                 'dateFormat' => 'j/n/Y',
4052:                 'timeFormat' => 'H:i',
4053:                 'dateTimeFormat' => 'j/n/Y H:i'
4054:             ),
4055:             'naq' => array(
4056:                 'name' => 'Nama',
4057:                 'dateFormat' => 'd/m/Y',
4058:                 'timeFormat' => 'g:i A',
4059:                 'dateTimeFormat' => 'd/m/Y g:i A'
4060:             ),
4061:             'naq-NA' => array(
4062:                 'name' => 'Nama (Namibia)',
4063:                 'dateFormat' => 'd/m/Y',
4064:                 'timeFormat' => 'g:i A',
4065:                 'dateTimeFormat' => 'd/m/Y g:i A'
4066:             ),
4067:             'nqo' => array(
4068:                 'name' => 'N\'ko',
4069:                 'dateFormat' => 'd/m/Y',
4070:                 'timeFormat' => 'A h:i',
4071:                 'dateTimeFormat' => 'd/m/Y A h:i'
4072:             ),
4073:             'nqo-GN' => array(
4074:                 'name' => 'N\'ko (Guinea)',
4075:                 'dateFormat' => 'd/m/Y',
4076:                 'timeFormat' => 'A h:i',
4077:                 'dateTimeFormat' => 'd/m/Y A h:i'
4078:             ),
4079:             'ne' => array(
4080:                 'name' => 'Nepali',
4081:                 'dateFormat' => 'n/j/Y',
4082:                 'timeFormat' => 'g:i A',
4083:                 'dateTimeFormat' => 'n/j/Y g:i A'
4084:             ),
4085:             'ne-IN' => array(
4086:                 'name' => 'Nepali (India)',
4087:                 'dateFormat' => 'Y-m-d',
4088:                 'timeFormat' => 'g:i A',
4089:                 'dateTimeFormat' => 'Y-m-d g:i A'
4090:             ),
4091:             'ne-NP' => array(
4092:                 'name' => 'Nepali (Nepal)',
4093:                 'dateFormat' => 'n/j/Y',
4094:                 'timeFormat' => 'g:i A',
4095:                 'dateTimeFormat' => 'n/j/Y g:i A'
4096:             ),
4097:             'nnh' => array(
4098:                 'name' => 'Ngiemboon',
4099:                 'dateFormat' => 'd/m/Y',
4100:                 'timeFormat' => 'H:i',
4101:                 'dateTimeFormat' => 'd/m/Y H:i'
4102:             ),
4103:             'nnh-CM' => array(
4104:                 'name' => 'Ngiemboon (Cameroon)',
4105:                 'dateFormat' => 'd/m/Y',
4106:                 'timeFormat' => 'H:i',
4107:                 'dateTimeFormat' => 'd/m/Y H:i'
4108:             ),
4109:             'jgo' => array(
4110:                 'name' => 'Ngomba',
4111:                 'dateFormat' => 'Y-m-d',
4112:                 'timeFormat' => 'H:i',
4113:                 'dateTimeFormat' => 'Y-m-d H:i'
4114:             ),
4115:             'jgo-CM' => array(
4116:                 'name' => 'Ngomba (Cameroon)',
4117:                 'dateFormat' => 'Y-m-d',
4118:                 'timeFormat' => 'H:i',
4119:                 'dateTimeFormat' => 'Y-m-d H:i'
4120:             ),
4121:             'nd' => array(
4122:                 'name' => 'North Ndebele',
4123:                 'dateFormat' => 'd/m/Y',
4124:                 'timeFormat' => 'g:i A',
4125:                 'dateTimeFormat' => 'd/m/Y g:i A'
4126:             ),
4127:             'nd-ZW' => array(
4128:                 'name' => 'North Ndebele (Zimbabwe)',
4129:                 'dateFormat' => 'd/m/Y',
4130:                 'timeFormat' => 'g:i A',
4131:                 'dateTimeFormat' => 'd/m/Y g:i A'
4132:             ),
4133:             'lrc' => array(
4134:                 'name' => 'Northern Luri',
4135:                 'dateFormat' => 'd/m/Y',
4136:                 'timeFormat' => 'H:i',
4137:                 'dateTimeFormat' => 'd/m/Y H:i'
4138:             ),
4139:             'lrc-IR' => array(
4140:                 'name' => 'Northern Luri (Iran)',
4141:                 'dateFormat' => 'd/m/Y',
4142:                 'timeFormat' => 'H:i',
4143:                 'dateTimeFormat' => 'd/m/Y H:i'
4144:             ),
4145:             'lrc-IQ' => array(
4146:                 'name' => 'Northern Luri (Iraq)',
4147:                 'dateFormat' => 'Y-m-d',
4148:                 'timeFormat' => 'g:i A',
4149:                 'dateTimeFormat' => 'Y-m-d g:i A'
4150:             ),
4151:             'no' => array(
4152:                 'name' => 'Norwegian',
4153:                 'dateFormat' => 'd.m.Y',
4154:                 'timeFormat' => 'H.i',
4155:                 'dateTimeFormat' => 'd.m.Y H.i'
4156:             ),
4157:             'nb' => array(
4158:                 'name' => 'Norwegian (Bokmål)',
4159:                 'dateFormat' => 'd.m.Y',
4160:                 'timeFormat' => 'H.i',
4161:                 'dateTimeFormat' => 'd.m.Y H.i'
4162:             ),
4163:             'nb-NO' => array(
4164:                 'name' => 'Norwegian (Bokmål, Norway)',
4165:                 'dateFormat' => 'd.m.Y',
4166:                 'timeFormat' => 'H.i',
4167:                 'dateTimeFormat' => 'd.m.Y H.i'
4168:             ),
4169:             'nb-SJ' => array(
4170:                 'name' => 'Norwegian (Bokmål, Svalbard and Jan Mayen)',
4171:                 'dateFormat' => 'd.m.Y',
4172:                 'timeFormat' => 'H.i',
4173:                 'dateTimeFormat' => 'd.m.Y H.i'
4174:             ),
4175:             'nn' => array(
4176:                 'name' => 'Norwegian (Nynorsk)',
4177:                 'dateFormat' => 'd.m.Y',
4178:                 'timeFormat' => 'H:i',
4179:                 'dateTimeFormat' => 'd.m.Y H:i'
4180:             ),
4181:             'nn-NO' => array(
4182:                 'name' => 'Norwegian (Nynorsk, Norway)',
4183:                 'dateFormat' => 'd.m.Y',
4184:                 'timeFormat' => 'H:i',
4185:                 'dateTimeFormat' => 'd.m.Y H:i'
4186:             ),
4187:             'nus' => array(
4188:                 'name' => 'Nuer',
4189:                 'dateFormat' => 'j/m/Y',
4190:                 'timeFormat' => 'g:i A',
4191:                 'dateTimeFormat' => 'j/m/Y g:i A'
4192:             ),
4193:             'nus-SS' => array(
4194:                 'name' => 'Nuer (South Sudan)',
4195:                 'dateFormat' => 'j/m/Y',
4196:                 'timeFormat' => 'g:i A',
4197:                 'dateTimeFormat' => 'j/m/Y g:i A'
4198:             ),
4199:             'nyn' => array(
4200:                 'name' => 'Nyankole',
4201:                 'dateFormat' => 'd/m/Y',
4202:                 'timeFormat' => 'H:i',
4203:                 'dateTimeFormat' => 'd/m/Y H:i'
4204:             ),
4205:             'nyn-UG' => array(
4206:                 'name' => 'Nyankole (Uganda)',
4207:                 'dateFormat' => 'd/m/Y',
4208:                 'timeFormat' => 'H:i',
4209:                 'dateTimeFormat' => 'd/m/Y H:i'
4210:             ),
4211:             'oc' => array(
4212:                 'name' => 'Occitan',
4213:                 'dateFormat' => 'd/m/Y',
4214:                 'timeFormat' => 'H \h i',
4215:                 'dateTimeFormat' => 'd/m/Y H \h i'
4216:             ),
4217:             'oc-FR' => array(
4218:                 'name' => 'Occitan (France)',
4219:                 'dateFormat' => 'd/m/Y',
4220:                 'timeFormat' => 'H \h i',
4221:                 'dateTimeFormat' => 'd/m/Y H \h i'
4222:             ),
4223:             'or' => array(
4224:                 'name' => 'Odia',
4225:                 'dateFormat' => 'd-m-y',
4226:                 'timeFormat' => 'H:i',
4227:                 'dateTimeFormat' => 'd-m-y H:i'
4228:             ),
4229:             'or-IN' => array(
4230:                 'name' => 'Odia (India)',
4231:                 'dateFormat' => 'd-m-y',
4232:                 'timeFormat' => 'H:i',
4233:                 'dateTimeFormat' => 'd-m-y H:i'
4234:             ),
4235:             'om' => array(
4236:                 'name' => 'Oromo',
4237:                 'dateFormat' => 'd/m/Y',
4238:                 'timeFormat' => 'g:i A',
4239:                 'dateTimeFormat' => 'd/m/Y g:i A'
4240:             ),
4241:             'om-ET' => array(
4242:                 'name' => 'Oromo (Ethiopia)',
4243:                 'dateFormat' => 'd/m/Y',
4244:                 'timeFormat' => 'g:i A',
4245:                 'dateTimeFormat' => 'd/m/Y g:i A'
4246:             ),
4247:             'om-KE' => array(
4248:                 'name' => 'Oromo (Kenya)',
4249:                 'dateFormat' => 'd/m/Y',
4250:                 'timeFormat' => 'H:i',
4251:                 'dateTimeFormat' => 'd/m/Y H:i'
4252:             ),
4253:             'os' => array(
4254:                 'name' => 'Ossetic',
4255:                 'dateFormat' => 'd.m.Y',
4256:                 'timeFormat' => 'H:i',
4257:                 'dateTimeFormat' => 'd.m.Y H:i'
4258:             ),
4259:             'os-GE' => array(
4260:                 'name' => 'Ossetic (Georgia)',
4261:                 'dateFormat' => 'd.m.Y',
4262:                 'timeFormat' => 'H:i',
4263:                 'dateTimeFormat' => 'd.m.Y H:i'
4264:             ),
4265:             'os-RU' => array(
4266:                 'name' => 'Ossetic (Russia)',
4267:                 'dateFormat' => 'd.m.Y',
4268:                 'timeFormat' => 'H:i',
4269:                 'dateTimeFormat' => 'd.m.Y H:i'
4270:             ),
4271:             'pap' => array(
4272:                 'name' => 'Papiamento',
4273:                 'dateFormat' => 'j-n-Y',
4274:                 'timeFormat' => 'G:i',
4275:                 'dateTimeFormat' => 'j-n-Y G:i'
4276:             ),
4277:             'pap-029' => array(
4278:                 'name' => 'Papiamento (Caribbean)',
4279:                 'dateFormat' => 'j-n-Y',
4280:                 'timeFormat' => 'G:i',
4281:                 'dateTimeFormat' => 'j-n-Y G:i'
4282:             ),
4283:             'ps' => array(
4284:                 'name' => 'Pashto',
4285:                 'dateFormat' => 'Y/n/j',
4286:                 'timeFormat' => 'G:i',
4287:                 'dateTimeFormat' => 'Y/n/j G:i'
4288:             ),
4289:             'ps-AF' => array(
4290:                 'name' => 'Pashto (Afghanistan)',
4291:                 'dateFormat' => 'Y/n/j',
4292:                 'timeFormat' => 'G:i',
4293:                 'dateTimeFormat' => 'Y/n/j G:i'
4294:             ),
4295:             'fa' => array(
4296:                 'name' => 'Persian',
4297:                 'dateFormat' => 'd/m/Y',
4298:                 'timeFormat' => 'h:i A',
4299:                 'dateTimeFormat' => 'd/m/Y h:i A'
4300:             ),
4301:             'fa-IR' => array(
4302:                 'name' => 'Persian (Iran)',
4303:                 'dateFormat' => 'd/m/Y',
4304:                 'timeFormat' => 'h:i A',
4305:                 'dateTimeFormat' => 'd/m/Y h:i A'
4306:             ),
4307:             'pl' => array(
4308:                 'name' => 'Polish',
4309:                 'dateFormat' => 'd.m.Y',
4310:                 'timeFormat' => 'H:i',
4311:                 'dateTimeFormat' => 'd.m.Y H:i'
4312:             ),
4313:             'pl-PL' => array(
4314:                 'name' => 'Polish (Poland)',
4315:                 'dateFormat' => 'd.m.Y',
4316:                 'timeFormat' => 'H:i',
4317:                 'dateTimeFormat' => 'd.m.Y H:i'
4318:             ),
4319:             'pt' => array(
4320:                 'name' => 'Portuguese',
4321:                 'dateFormat' => 'd/m/Y',
4322:                 'timeFormat' => 'H:i',
4323:                 'dateTimeFormat' => 'd/m/Y H:i'
4324:             ),
4325:             'pt-AO' => array(
4326:                 'name' => 'Portuguese (Angola)',
4327:                 'dateFormat' => 'd/m/Y',
4328:                 'timeFormat' => 'H:i',
4329:                 'dateTimeFormat' => 'd/m/Y H:i'
4330:             ),
4331:             'pt-BR' => array(
4332:                 'name' => 'Portuguese (Brazil)',
4333:                 'dateFormat' => 'd/m/Y',
4334:                 'timeFormat' => 'H:i',
4335:                 'dateTimeFormat' => 'd/m/Y H:i'
4336:             ),
4337:             'pt-CV' => array(
4338:                 'name' => 'Portuguese (Cabo Verde)',
4339:                 'dateFormat' => 'd/m/Y',
4340:                 'timeFormat' => 'H:i',
4341:                 'dateTimeFormat' => 'd/m/Y H:i'
4342:             ),
4343:             'pt-GW' => array(
4344:                 'name' => 'Portuguese (Guinea-Bissau)',
4345:                 'dateFormat' => 'd/m/Y',
4346:                 'timeFormat' => 'H:i',
4347:                 'dateTimeFormat' => 'd/m/Y H:i'
4348:             ),
4349:             'pt-MO' => array(
4350:                 'name' => 'Portuguese (Macao SAR)',
4351:                 'dateFormat' => 'd/m/Y',
4352:                 'timeFormat' => 'g:i a',
4353:                 'dateTimeFormat' => 'd/m/Y g:i a'
4354:             ),
4355:             'pt-MZ' => array(
4356:                 'name' => 'Portuguese (Mozambique)',
4357:                 'dateFormat' => 'd/m/Y',
4358:                 'timeFormat' => 'H:i',
4359:                 'dateTimeFormat' => 'd/m/Y H:i'
4360:             ),
4361:             'pt-PT' => array(
4362:                 'name' => 'Portuguese (Portugal)',
4363:                 'dateFormat' => 'd/m/Y',
4364:                 'timeFormat' => 'H:i',
4365:                 'dateTimeFormat' => 'd/m/Y H:i'
4366:             ),
4367:             'pt-ST' => array(
4368:                 'name' => 'Portuguese (São Tomé and Príncipe)',
4369:                 'dateFormat' => 'd/m/Y',
4370:                 'timeFormat' => 'H:i',
4371:                 'dateTimeFormat' => 'd/m/Y H:i'
4372:             ),
4373:             'pt-TL' => array(
4374:                 'name' => 'Portuguese (Timor-Leste)',
4375:                 'dateFormat' => 'd/m/Y',
4376:                 'timeFormat' => 'H:i',
4377:                 'dateTimeFormat' => 'd/m/Y H:i'
4378:             ),
4379:             'prg' => array(
4380:                 'name' => 'Prussian',
4381:                 'dateFormat' => 'd.m.Y',
4382:                 'timeFormat' => 'H:i',
4383:                 'dateTimeFormat' => 'd.m.Y H:i'
4384:             ),
4385:             'prg-001' => array(
4386:                 'name' => 'Prussian (World)',
4387:                 'dateFormat' => 'd.m.Y',
4388:                 'timeFormat' => 'H:i',
4389:                 'dateTimeFormat' => 'd.m.Y H:i'
4390:             ),
4391:             'pa' => array(
4392:                 'name' => 'Punjabi',
4393:                 'dateFormat' => 'd-m-y',
4394:                 'timeFormat' => 'A h:i',
4395:                 'dateTimeFormat' => 'd-m-y A h:i'
4396:             ),
4397:             'pa-Arab' => array(
4398:                 'name' => 'Punjabi (Arabic)',
4399:                 'dateFormat' => 'd-m-y',
4400:                 'timeFormat' => 'g.i A',
4401:                 'dateTimeFormat' => 'd-m-y g.i A'
4402:             ),
4403:             'pa-Arab-PK' => array(
4404:                 'name' => 'Punjabi (Arabic, Islamic Republic of Pakistan)',
4405:                 'dateFormat' => 'd-m-y',
4406:                 'timeFormat' => 'g.i A',
4407:                 'dateTimeFormat' => 'd-m-y g.i A'
4408:             ),
4409:             'pa-IN' => array(
4410:                 'name' => 'Punjabi (India)',
4411:                 'dateFormat' => 'd-m-y',
4412:                 'timeFormat' => 'A h:i',
4413:                 'dateTimeFormat' => 'd-m-y A h:i'
4414:             ),
4415:             'quz' => array(
4416:                 'name' => 'Quechua',
4417:                 'dateFormat' => 'd/m/Y',
4418:                 'timeFormat' => 'h:i a',
4419:                 'dateTimeFormat' => 'd/m/Y h:i a'
4420:             ),
4421:             'quz-BO' => array(
4422:                 'name' => 'Quechua (Bolivia)',
4423:                 'dateFormat' => 'd/m/Y',
4424:                 'timeFormat' => 'h:i a',
4425:                 'dateTimeFormat' => 'd/m/Y h:i a'
4426:             ),
4427:             'quz-EC' => array(
4428:                 'name' => 'Quechua (Ecuador)',
4429:                 'dateFormat' => 'd/m/Y',
4430:                 'timeFormat' => 'G:i',
4431:                 'dateTimeFormat' => 'd/m/Y G:i'
4432:             ),
4433:             'quz-PE' => array(
4434:                 'name' => 'Quechua (Peru)',
4435:                 'dateFormat' => 'd/m/Y',
4436:                 'timeFormat' => 'h:i a',
4437:                 'dateTimeFormat' => 'd/m/Y h:i a'
4438:             ),
4439:             'ro' => array(
4440:                 'name' => 'Romanian',
4441:                 'dateFormat' => 'd.m.Y',
4442:                 'timeFormat' => 'H:i',
4443:                 'dateTimeFormat' => 'd.m.Y H:i'
4444:             ),
4445:             'ro-MD' => array(
4446:                 'name' => 'Romanian (Moldova)',
4447:                 'dateFormat' => 'd.m.Y',
4448:                 'timeFormat' => 'H:i',
4449:                 'dateTimeFormat' => 'd.m.Y H:i'
4450:             ),
4451:             'ro-RO' => array(
4452:                 'name' => 'Romanian (Romania)',
4453:                 'dateFormat' => 'd.m.Y',
4454:                 'timeFormat' => 'H:i',
4455:                 'dateTimeFormat' => 'd.m.Y H:i'
4456:             ),
4457:             'rm' => array(
4458:                 'name' => 'Romansh',
4459:                 'dateFormat' => 'd-m-Y',
4460:                 'timeFormat' => 'H:i',
4461:                 'dateTimeFormat' => 'd-m-Y H:i'
4462:             ),
4463:             'rm-CH' => array(
4464:                 'name' => 'Romansh (Switzerland)',
4465:                 'dateFormat' => 'd-m-Y',
4466:                 'timeFormat' => 'H:i',
4467:                 'dateTimeFormat' => 'd-m-Y H:i'
4468:             ),
4469:             'rof' => array(
4470:                 'name' => 'Rombo',
4471:                 'dateFormat' => 'd/m/Y',
4472:                 'timeFormat' => 'H:i',
4473:                 'dateTimeFormat' => 'd/m/Y H:i'
4474:             ),
4475:             'rof-TZ' => array(
4476:                 'name' => 'Rombo (Tanzania)',
4477:                 'dateFormat' => 'd/m/Y',
4478:                 'timeFormat' => 'H:i',
4479:                 'dateTimeFormat' => 'd/m/Y H:i'
4480:             ),
4481:             'rn' => array(
4482:                 'name' => 'Rundi',
4483:                 'dateFormat' => 'j/n/Y',
4484:                 'timeFormat' => 'H:i',
4485:                 'dateTimeFormat' => 'j/n/Y H:i'
4486:             ),
4487:             'rn-BI' => array(
4488:                 'name' => 'Rundi (Burundi)',
4489:                 'dateFormat' => 'j/n/Y',
4490:                 'timeFormat' => 'H:i',
4491:                 'dateTimeFormat' => 'j/n/Y H:i'
4492:             ),
4493:             'ru' => array(
4494:                 'name' => 'Russian',
4495:                 'dateFormat' => 'd.m.Y',
4496:                 'timeFormat' => 'G:i',
4497:                 'dateTimeFormat' => 'd.m.Y G:i'
4498:             ),
4499:             'ru-BY' => array(
4500:                 'name' => 'Russian (Belarus)',
4501:                 'dateFormat' => 'd.m.Y',
4502:                 'timeFormat' => 'G:i',
4503:                 'dateTimeFormat' => 'd.m.Y G:i'
4504:             ),
4505:             'ru-KG' => array(
4506:                 'name' => 'Russian (Kyrgyzstan)',
4507:                 'dateFormat' => 'd.m.Y',
4508:                 'timeFormat' => 'G:i',
4509:                 'dateTimeFormat' => 'd.m.Y G:i'
4510:             ),
4511:             'ru-KZ' => array(
4512:                 'name' => 'Russian (Kazakhstan)',
4513:                 'dateFormat' => 'd.m.Y',
4514:                 'timeFormat' => 'G:i',
4515:                 'dateTimeFormat' => 'd.m.Y G:i'
4516:             ),
4517:             'ru-MD' => array(
4518:                 'name' => 'Russian (Moldova)',
4519:                 'dateFormat' => 'd.m.Y',
4520:                 'timeFormat' => 'G:i',
4521:                 'dateTimeFormat' => 'd.m.Y G:i'
4522:             ),
4523:             'ru-RU' => array(
4524:                 'name' => 'Russian (Russia)',
4525:                 'dateFormat' => 'd.m.Y',
4526:                 'timeFormat' => 'G:i',
4527:                 'dateTimeFormat' => 'd.m.Y G:i'
4528:             ),
4529:             'ru-UA' => array(
4530:                 'name' => 'Russian (Ukraine)',
4531:                 'dateFormat' => 'd.m.Y',
4532:                 'timeFormat' => 'H:i',
4533:                 'dateTimeFormat' => 'd.m.Y H:i'
4534:             ),
4535:             'rwk' => array(
4536:                 'name' => 'Rwa',
4537:                 'dateFormat' => 'd/m/Y',
4538:                 'timeFormat' => 'H:i',
4539:                 'dateTimeFormat' => 'd/m/Y H:i'
4540:             ),
4541:             'rwk-TZ' => array(
4542:                 'name' => 'Rwa (Tanzania)',
4543:                 'dateFormat' => 'd/m/Y',
4544:                 'timeFormat' => 'H:i',
4545:                 'dateTimeFormat' => 'd/m/Y H:i'
4546:             ),
4547:             'ssy' => array(
4548:                 'name' => 'Saho',
4549:                 'dateFormat' => 'd/m/Y',
4550:                 'timeFormat' => 'g:i A',
4551:                 'dateTimeFormat' => 'd/m/Y g:i A'
4552:             ),
4553:             'ssy-ER' => array(
4554:                 'name' => 'Saho (Eritrea)',
4555:                 'dateFormat' => 'd/m/Y',
4556:                 'timeFormat' => 'g:i A',
4557:                 'dateTimeFormat' => 'd/m/Y g:i A'
4558:             ),
4559:             'sah' => array(
4560:                 'name' => 'Sakha',
4561:                 'dateFormat' => 'd.m.Y',
4562:                 'timeFormat' => 'G:i',
4563:                 'dateTimeFormat' => 'd.m.Y G:i'
4564:             ),
4565:             'sah-RU' => array(
4566:                 'name' => 'Sakha (Russia)',
4567:                 'dateFormat' => 'd.m.Y',
4568:                 'timeFormat' => 'G:i',
4569:                 'dateTimeFormat' => 'd.m.Y G:i'
4570:             ),
4571:             'saq' => array(
4572:                 'name' => 'Samburu',
4573:                 'dateFormat' => 'd/m/Y',
4574:                 'timeFormat' => 'H:i',
4575:                 'dateTimeFormat' => 'd/m/Y H:i'
4576:             ),
4577:             'saq-KE' => array(
4578:                 'name' => 'Samburu (Kenya)',
4579:                 'dateFormat' => 'd/m/Y',
4580:                 'timeFormat' => 'H:i',
4581:                 'dateTimeFormat' => 'd/m/Y H:i'
4582:             ),
4583:             'smn' => array(
4584:                 'name' => 'Sami, Inari',
4585:                 'dateFormat' => 'j.n.Y',
4586:                 'timeFormat' => 'G:i',
4587:                 'dateTimeFormat' => 'j.n.Y G:i'
4588:             ),
4589:             'smn-FI' => array(
4590:                 'name' => 'Sami, Inari (Finland)',
4591:                 'dateFormat' => 'j.n.Y',
4592:                 'timeFormat' => 'G:i',
4593:                 'dateTimeFormat' => 'j.n.Y G:i'
4594:             ),
4595:             'smj' => array(
4596:                 'name' => 'Sami, Lule',
4597:                 'dateFormat' => 'Y-m-d',
4598:                 'timeFormat' => 'H:i',
4599:                 'dateTimeFormat' => 'Y-m-d H:i'
4600:             ),
4601:             'smj-NO' => array(
4602:                 'name' => 'Sami, Lule (Norway)',
4603:                 'dateFormat' => 'd.m.Y',
4604:                 'timeFormat' => 'H:i',
4605:                 'dateTimeFormat' => 'd.m.Y H:i'
4606:             ),
4607:             'smj-SE' => array(
4608:                 'name' => 'Sami, Lule (Sweden)',
4609:                 'dateFormat' => 'Y-m-d',
4610:                 'timeFormat' => 'H:i',
4611:                 'dateTimeFormat' => 'Y-m-d H:i'
4612:             ),
4613:             'se' => array(
4614:                 'name' => 'Sami, Northern',
4615:                 'dateFormat' => 'Y-m-d',
4616:                 'timeFormat' => 'H:i',
4617:                 'dateTimeFormat' => 'Y-m-d H:i'
4618:             ),
4619:             'se-FI' => array(
4620:                 'name' => 'Sami, Northern (Finland)',
4621:                 'dateFormat' => 'j.n.Y',
4622:                 'timeFormat' => 'G:i',
4623:                 'dateTimeFormat' => 'j.n.Y G:i'
4624:             ),
4625:             'se-NO' => array(
4626:                 'name' => 'Sami, Northern (Norway)',
4627:                 'dateFormat' => 'Y-m-d',
4628:                 'timeFormat' => 'H:i',
4629:                 'dateTimeFormat' => 'Y-m-d H:i'
4630:             ),
4631:             'se-SE' => array(
4632:                 'name' => 'Sami, Northern (Sweden)',
4633:                 'dateFormat' => 'Y-m-d',
4634:                 'timeFormat' => 'H:i',
4635:                 'dateTimeFormat' => 'Y-m-d H:i'
4636:             ),
4637:             'sms' => array(
4638:                 'name' => 'Sami, Skolt',
4639:                 'dateFormat' => 'j.n.Y',
4640:                 'timeFormat' => 'G:i',
4641:                 'dateTimeFormat' => 'j.n.Y G:i'
4642:             ),
4643:             'sms-FI' => array(
4644:                 'name' => 'Sami, Skolt (Finland)',
4645:                 'dateFormat' => 'j.n.Y',
4646:                 'timeFormat' => 'G:i',
4647:                 'dateTimeFormat' => 'j.n.Y G:i'
4648:             ),
4649:             'sma' => array(
4650:                 'name' => 'Sami, Southern',
4651:                 'dateFormat' => 'Y-m-d',
4652:                 'timeFormat' => 'H:i',
4653:                 'dateTimeFormat' => 'Y-m-d H:i'
4654:             ),
4655:             'sma-NO' => array(
4656:                 'name' => 'Sami, Southern (Norway)',
4657:                 'dateFormat' => 'd.m.Y',
4658:                 'timeFormat' => 'H:i',
4659:                 'dateTimeFormat' => 'd.m.Y H:i'
4660:             ),
4661:             'sma-SE' => array(
4662:                 'name' => 'Sami, Southern (Sweden)',
4663:                 'dateFormat' => 'Y-m-d',
4664:                 'timeFormat' => 'H:i',
4665:                 'dateTimeFormat' => 'Y-m-d H:i'
4666:             ),
4667:             'sg' => array(
4668:                 'name' => 'Sango',
4669:                 'dateFormat' => 'j/n/Y',
4670:                 'timeFormat' => 'H:i',
4671:                 'dateTimeFormat' => 'j/n/Y H:i'
4672:             ),
4673:             'sg-CF' => array(
4674:                 'name' => 'Sango (Central African Republic)',
4675:                 'dateFormat' => 'j/n/Y',
4676:                 'timeFormat' => 'H:i',
4677:                 'dateTimeFormat' => 'j/n/Y H:i'
4678:             ),
4679:             'sbp' => array(
4680:                 'name' => 'Sangu',
4681:                 'dateFormat' => 'd/m/Y',
4682:                 'timeFormat' => 'H:i',
4683:                 'dateTimeFormat' => 'd/m/Y H:i'
4684:             ),
4685:             'sbp-TZ' => array(
4686:                 'name' => 'Sangu (Tanzania)',
4687:                 'dateFormat' => 'd/m/Y',
4688:                 'timeFormat' => 'H:i',
4689:                 'dateTimeFormat' => 'd/m/Y H:i'
4690:             ),
4691:             'sa' => array(
4692:                 'name' => 'Sanskrit',
4693:                 'dateFormat' => 'd-m-Y',
4694:                 'timeFormat' => 'H:i',
4695:                 'dateTimeFormat' => 'd-m-Y H:i'
4696:             ),
4697:             'sa-IN' => array(
4698:                 'name' => 'Sanskrit (India)',
4699:                 'dateFormat' => 'd-m-Y',
4700:                 'timeFormat' => 'H:i',
4701:                 'dateTimeFormat' => 'd-m-Y H:i'
4702:             ),
4703:             'gd' => array(
4704:                 'name' => 'Scottish Gaelic',
4705:                 'dateFormat' => 'd/m/Y',
4706:                 'timeFormat' => 'H:i',
4707:                 'dateTimeFormat' => 'd/m/Y H:i'
4708:             ),
4709:             'gd-GB' => array(
4710:                 'name' => 'Scottish Gaelic (United Kingdom)',
4711:                 'dateFormat' => 'd/m/Y',
4712:                 'timeFormat' => 'H:i',
4713:                 'dateTimeFormat' => 'd/m/Y H:i'
4714:             ),
4715:             'seh' => array(
4716:                 'name' => 'Sena',
4717:                 'dateFormat' => 'j/n/Y',
4718:                 'timeFormat' => 'H:i',
4719:                 'dateTimeFormat' => 'j/n/Y H:i'
4720:             ),
4721:             'seh-MZ' => array(
4722:                 'name' => 'Sena (Mozambique)',
4723:                 'dateFormat' => 'j/n/Y',
4724:                 'timeFormat' => 'H:i',
4725:                 'dateTimeFormat' => 'j/n/Y H:i'
4726:             ),
4727:             'sr' => array(
4728:                 'name' => 'Serbian',
4729:                 'dateFormat' => 'j.n.Y.',
4730:                 'timeFormat' => 'H.i',
4731:                 'dateTimeFormat' => 'j.n.Y. H.i'
4732:             ),
4733:             'sr-Cyrl' => array(
4734:                 'name' => 'Serbian (Cyrillic)',
4735:                 'dateFormat' => 'd.m.Y.',
4736:                 'timeFormat' => 'G:i',
4737:                 'dateTimeFormat' => 'd.m.Y. G:i'
4738:             ),
4739:             'sr-Cyrl-BA' => array(
4740:                 'name' => 'Serbian (Cyrillic, Bosnia and Herzegovina)',
4741:                 'dateFormat' => 'j.n.Y.',
4742:                 'timeFormat' => 'G:i',
4743:                 'dateTimeFormat' => 'j.n.Y. G:i'
4744:             ),
4745:             'sr-Cyrl-XK' => array(
4746:                 'name' => 'Serbian (Cyrillic, Kosovo)',
4747:                 'dateFormat' => 'j.n.Y.',
4748:                 'timeFormat' => 'H.i',
4749:                 'dateTimeFormat' => 'j.n.Y. H.i'
4750:             ),
4751:             'sr-Cyrl-ME' => array(
4752:                 'name' => 'Serbian (Cyrillic, Montenegro)',
4753:                 'dateFormat' => 'j.n.Y.',
4754:                 'timeFormat' => 'G:i',
4755:                 'dateTimeFormat' => 'j.n.Y. G:i'
4756:             ),
4757:             'sr-Cyrl-CS' => array(
4758:                 'name' => 'Serbian (Cyrillic, Serbia and Montenegro (Former))',
4759:                 'dateFormat' => 'j.n.Y.',
4760:                 'timeFormat' => 'G:i',
4761:                 'dateTimeFormat' => 'j.n.Y. G:i'
4762:             ),
4763:             'sr-Cyrl-RS' => array(
4764:                 'name' => 'Serbian (Cyrillic, Serbia)',
4765:                 'dateFormat' => 'd.m.Y.',
4766:                 'timeFormat' => 'G:i',
4767:                 'dateTimeFormat' => 'd.m.Y. G:i'
4768:             ),
4769:             'sr-Latn' => array(
4770:                 'name' => 'Serbian (Latin)',
4771:                 'dateFormat' => 'j.n.Y.',
4772:                 'timeFormat' => 'H.i',
4773:                 'dateTimeFormat' => 'j.n.Y. H.i'
4774:             ),
4775:             'sr-Latn-BA' => array(
4776:                 'name' => 'Serbian (Latin, Bosnia and Herzegovina)',
4777:                 'dateFormat' => 'j.n.Y.',
4778:                 'timeFormat' => 'H.i',
4779:                 'dateTimeFormat' => 'j.n.Y. H.i'
4780:             ),
4781:             'sr-Latn-XK' => array(
4782:                 'name' => 'Serbian (Latin, Kosovo)',
4783:                 'dateFormat' => 'j.n.Y.',
4784:                 'timeFormat' => 'H.i',
4785:                 'dateTimeFormat' => 'j.n.Y. H.i'
4786:             ),
4787:             'sr-Latn-ME' => array(
4788:                 'name' => 'Serbian (Latin, Montenegro)',
4789:                 'dateFormat' => 'j.n.Y.',
4790:                 'timeFormat' => 'H.i',
4791:                 'dateTimeFormat' => 'j.n.Y. H.i'
4792:             ),
4793:             'sr-Latn-CS' => array(
4794:                 'name' => 'Serbian (Latin, Serbia and Montenegro (Former))',
4795:                 'dateFormat' => 'j.n.Y.',
4796:                 'timeFormat' => 'G:i',
4797:                 'dateTimeFormat' => 'j.n.Y. G:i'
4798:             ),
4799:             'sr-Latn-RS' => array(
4800:                 'name' => 'Serbian (Latin, Serbia)',
4801:                 'dateFormat' => 'j.n.Y.',
4802:                 'timeFormat' => 'H.i',
4803:                 'dateTimeFormat' => 'j.n.Y. H.i'
4804:             ),
4805:             'nso' => array(
4806:                 'name' => 'Sesotho sa Leboa',
4807:                 'dateFormat' => 'Y-m-d',
4808:                 'timeFormat' => 'H:i',
4809:                 'dateTimeFormat' => 'Y-m-d H:i'
4810:             ),
4811:             'nso-ZA' => array(
4812:                 'name' => 'Sesotho sa Leboa (South Africa)',
4813:                 'dateFormat' => 'Y-m-d',
4814:                 'timeFormat' => 'H:i',
4815:                 'dateTimeFormat' => 'Y-m-d H:i'
4816:             ),
4817:             'tn' => array(
4818:                 'name' => 'Setswana',
4819:                 'dateFormat' => 'Y-m-d',
4820:                 'timeFormat' => 'H:i',
4821:                 'dateTimeFormat' => 'Y-m-d H:i'
4822:             ),
4823:             'tn-BW' => array(
4824:                 'name' => 'Setswana (Botswana)',
4825:                 'dateFormat' => 'Y-m-d',
4826:                 'timeFormat' => 'H:i',
4827:                 'dateTimeFormat' => 'Y-m-d H:i'
4828:             ),
4829:             'tn-ZA' => array(
4830:                 'name' => 'Setswana (South Africa)',
4831:                 'dateFormat' => 'Y-m-d',
4832:                 'timeFormat' => 'H:i',
4833:                 'dateTimeFormat' => 'Y-m-d H:i'
4834:             ),
4835:             'ksb' => array(
4836:                 'name' => 'Shambala',
4837:                 'dateFormat' => 'd/m/Y',
4838:                 'timeFormat' => 'H:i',
4839:                 'dateTimeFormat' => 'd/m/Y H:i'
4840:             ),
4841:             'ksb-TZ' => array(
4842:                 'name' => 'Shambala (Tanzania)',
4843:                 'dateFormat' => 'd/m/Y',
4844:                 'timeFormat' => 'H:i',
4845:                 'dateTimeFormat' => 'd/m/Y H:i'
4846:             ),
4847:             'sn' => array(
4848:                 'name' => 'Shona',
4849:                 'dateFormat' => 'd/m/Y',
4850:                 'timeFormat' => 'g:i A',
4851:                 'dateTimeFormat' => 'd/m/Y g:i A'
4852:             ),
4853:             'sn-Latn' => array(
4854:                 'name' => 'Shona (Latin)',
4855:                 'dateFormat' => 'd/m/Y',
4856:                 'timeFormat' => 'g:i A',
4857:                 'dateTimeFormat' => 'd/m/Y g:i A'
4858:             ),
4859:             'sn-Latn-ZW' => array(
4860:                 'name' => 'Shona (Latin, Zimbabwe)',
4861:                 'dateFormat' => 'd/m/Y',
4862:                 'timeFormat' => 'g:i A',
4863:                 'dateTimeFormat' => 'd/m/Y g:i A'
4864:             ),
4865:             'sd' => array(
4866:                 'name' => 'Sindhi',
4867:                 'dateFormat' => 'd/m/Y',
4868:                 'timeFormat' => 'g:i A',
4869:                 'dateTimeFormat' => 'd/m/Y g:i A'
4870:             ),
4871:             'sd-Arab' => array(
4872:                 'name' => 'Sindhi (Arabic)',
4873:                 'dateFormat' => 'd/m/Y',
4874:                 'timeFormat' => 'g:i A',
4875:                 'dateTimeFormat' => 'd/m/Y g:i A'
4876:             ),
4877:             'sd-Arab-PK' => array(
4878:                 'name' => 'Sindhi (Arabic, Islamic Republic of Pakistan)',
4879:                 'dateFormat' => 'd/m/Y',
4880:                 'timeFormat' => 'g:i A',
4881:                 'dateTimeFormat' => 'd/m/Y g:i A'
4882:             ),
4883:             'sd-Deva' => array(
4884:                 'name' => 'Sindhi (Devanagari)',
4885:                 'dateFormat' => 'd/m/Y',
4886:                 'timeFormat' => 'G:i',
4887:                 'dateTimeFormat' => 'd/m/Y G:i'
4888:             ),
4889:             'sd-Deva-IN' => array(
4890:                 'name' => 'Sindhi (Devanagari, India)',
4891:                 'dateFormat' => 'd/m/Y',
4892:                 'timeFormat' => 'G:i',
4893:                 'dateTimeFormat' => 'd/m/Y G:i'
4894:             ),
4895:             'si' => array(
4896:                 'name' => 'Sinhala',
4897:                 'dateFormat' => 'Y-m-d',
4898:                 'timeFormat' => 'H.i',
4899:                 'dateTimeFormat' => 'Y-m-d H.i'
4900:             ),
4901:             'si-LK' => array(
4902:                 'name' => 'Sinhala (Sri Lanka)',
4903:                 'dateFormat' => 'Y-m-d',
4904:                 'timeFormat' => 'H.i',
4905:                 'dateTimeFormat' => 'Y-m-d H.i'
4906:             ),
4907:             'ss' => array(
4908:                 'name' => 'siSwati',
4909:                 'dateFormat' => 'Y-m-d',
4910:                 'timeFormat' => 'H:i',
4911:                 'dateTimeFormat' => 'Y-m-d H:i'
4912:             ),
4913:             'ss-ZA' => array(
4914:                 'name' => 'siSwati (South Africa)',
4915:                 'dateFormat' => 'Y-m-d',
4916:                 'timeFormat' => 'H:i',
4917:                 'dateTimeFormat' => 'Y-m-d H:i'
4918:             ),
4919:             'ss-SZ' => array(
4920:                 'name' => 'siSwati (Swaziland)',
4921:                 'dateFormat' => 'Y-m-d',
4922:                 'timeFormat' => 'H:i',
4923:                 'dateTimeFormat' => 'Y-m-d H:i'
4924:             ),
4925:             'sk' => array(
4926:                 'name' => 'Slovak',
4927:                 'dateFormat' => 'j.n.Y',
4928:                 'timeFormat' => 'G:i',
4929:                 'dateTimeFormat' => 'j.n.Y G:i'
4930:             ),
4931:             'sk-SK' => array(
4932:                 'name' => 'Slovak (Slovakia)',
4933:                 'dateFormat' => 'j.n.Y',
4934:                 'timeFormat' => 'G:i',
4935:                 'dateTimeFormat' => 'j.n.Y G:i'
4936:             ),
4937:             'sl' => array(
4938:                 'name' => 'Slovenian',
4939:                 'dateFormat' => 'j. m. Y',
4940:                 'timeFormat' => 'H:i',
4941:                 'dateTimeFormat' => 'j. m. Y H:i'
4942:             ),
4943:             'sl-SI' => array(
4944:                 'name' => 'Slovenian (Slovenia)',
4945:                 'dateFormat' => 'j. m. Y',
4946:                 'timeFormat' => 'H:i',
4947:                 'dateTimeFormat' => 'j. m. Y H:i'
4948:             ),
4949:             'so' => array(
4950:                 'name' => 'Somali',
4951:                 'dateFormat' => 'd/m/Y',
4952:                 'timeFormat' => 'g:i A',
4953:                 'dateTimeFormat' => 'd/m/Y g:i A'
4954:             ),
4955:             'so-DJ' => array(
4956:                 'name' => 'Somali (Djibouti)',
4957:                 'dateFormat' => 'd/m/Y',
4958:                 'timeFormat' => 'g:i A',
4959:                 'dateTimeFormat' => 'd/m/Y g:i A'
4960:             ),
4961:             'so-ET' => array(
4962:                 'name' => 'Somali (Ethiopia)',
4963:                 'dateFormat' => 'd/m/Y',
4964:                 'timeFormat' => 'g:i A',
4965:                 'dateTimeFormat' => 'd/m/Y g:i A'
4966:             ),
4967:             'so-KE' => array(
4968:                 'name' => 'Somali (Kenya)',
4969:                 'dateFormat' => 'd/m/Y',
4970:                 'timeFormat' => 'H:i',
4971:                 'dateTimeFormat' => 'd/m/Y H:i'
4972:             ),
4973:             'so-SO' => array(
4974:                 'name' => 'Somali (Somalia)',
4975:                 'dateFormat' => 'd/m/Y',
4976:                 'timeFormat' => 'g:i A',
4977:                 'dateTimeFormat' => 'd/m/Y g:i A'
4978:             ),
4979:             'xog' => array(
4980:                 'name' => 'Soga',
4981:                 'dateFormat' => 'd/m/Y',
4982:                 'timeFormat' => 'H:i',
4983:                 'dateTimeFormat' => 'd/m/Y H:i'
4984:             ),
4985:             'xog-UG' => array(
4986:                 'name' => 'Soga (Uganda)',
4987:                 'dateFormat' => 'd/m/Y',
4988:                 'timeFormat' => 'H:i',
4989:                 'dateTimeFormat' => 'd/m/Y H:i'
4990:             ),
4991:             'st' => array(
4992:                 'name' => 'Sotho',
4993:                 'dateFormat' => 'Y-m-d',
4994:                 'timeFormat' => 'H:i',
4995:                 'dateTimeFormat' => 'Y-m-d H:i'
4996:             ),
4997:             'st-LS' => array(
4998:                 'name' => 'Sotho (Lesotho)',
4999:                 'dateFormat' => 'Y-m-d',
5000:                 'timeFormat' => 'H:i',
5001:                 'dateTimeFormat' => 'Y-m-d H:i'
5002:             ),
5003:             'st-ZA' => array(
5004:                 'name' => 'Sotho (South Africa)',
5005:                 'dateFormat' => 'Y-m-d',
5006:                 'timeFormat' => 'H:i',
5007:                 'dateTimeFormat' => 'Y-m-d H:i'
5008:             ),
5009:             'nr' => array(
5010:                 'name' => 'South Ndebele',
5011:                 'dateFormat' => 'Y-m-d',
5012:                 'timeFormat' => 'H:i',
5013:                 'dateTimeFormat' => 'Y-m-d H:i'
5014:             ),
5015:             'nr-ZA' => array(
5016:                 'name' => 'South Ndebele (South Africa)',
5017:                 'dateFormat' => 'Y-m-d',
5018:                 'timeFormat' => 'H:i',
5019:                 'dateTimeFormat' => 'Y-m-d H:i'
5020:             ),
5021:             'es' => array(
5022:                 'name' => 'Spanish',
5023:                 'dateFormat' => 'd/m/Y',
5024:                 'timeFormat' => 'G:i',
5025:                 'dateTimeFormat' => 'd/m/Y G:i'
5026:             ),
5027:             'es-AR' => array(
5028:                 'name' => 'Spanish (Argentina)',
5029:                 'dateFormat' => 'j/n/Y',
5030:                 'timeFormat' => 'H:i',
5031:                 'dateTimeFormat' => 'j/n/Y H:i'
5032:             ),
5033:             'es-VE' => array(
5034:                 'name' => 'Spanish (Bolivarian Republic of Venezuela)',
5035:                 'dateFormat' => 'j/n/Y',
5036:                 'timeFormat' => 'g:i a',
5037:                 'dateTimeFormat' => 'j/n/Y g:i a'
5038:             ),
5039:             'es-BO' => array(
5040:                 'name' => 'Spanish (Bolivia)',
5041:                 'dateFormat' => 'j/n/Y',
5042:                 'timeFormat' => 'H:i',
5043:                 'dateTimeFormat' => 'j/n/Y H:i'
5044:             ),
5045:             'es-CL' => array(
5046:                 'name' => 'Spanish (Chile)',
5047:                 'dateFormat' => 'd-m-Y',
5048:                 'timeFormat' => 'G:i',
5049:                 'dateTimeFormat' => 'd-m-Y G:i'
5050:             ),
5051:             'es-CO' => array(
5052:                 'name' => 'Spanish (Colombia)',
5053:                 'dateFormat' => 'j/m/Y',
5054:                 'timeFormat' => 'g:i a',
5055:                 'dateTimeFormat' => 'j/m/Y g:i a'
5056:             ),
5057:             'es-CR' => array(
5058:                 'name' => 'Spanish (Costa Rica)',
5059:                 'dateFormat' => 'j/n/Y',
5060:                 'timeFormat' => 'H:i',
5061:                 'dateTimeFormat' => 'j/n/Y H:i'
5062:             ),
5063:             'es-CU' => array(
5064:                 'name' => 'Spanish (Cuba)',
5065:                 'dateFormat' => 'j/n/Y',
5066:                 'timeFormat' => 'H:i',
5067:                 'dateTimeFormat' => 'j/n/Y H:i'
5068:             ),
5069:             'es-DO' => array(
5070:                 'name' => 'Spanish (Dominican Republic)',
5071:                 'dateFormat' => 'j/n/Y',
5072:                 'timeFormat' => 'g:i a',
5073:                 'dateTimeFormat' => 'j/n/Y g:i a'
5074:             ),
5075:             'es-EC' => array(
5076:                 'name' => 'Spanish (Ecuador)',
5077:                 'dateFormat' => 'j/n/Y',
5078:                 'timeFormat' => 'G:i',
5079:                 'dateTimeFormat' => 'j/n/Y G:i'
5080:             ),
5081:             'es-SV' => array(
5082:                 'name' => 'Spanish (El Salvador)',
5083:                 'dateFormat' => 'j/n/Y',
5084:                 'timeFormat' => 'H:i',
5085:                 'dateTimeFormat' => 'j/n/Y H:i'
5086:             ),
5087:             'es-GQ' => array(
5088:                 'name' => 'Spanish (Equatorial Guinea)',
5089:                 'dateFormat' => 'j/n/Y',
5090:                 'timeFormat' => 'G:i',
5091:                 'dateTimeFormat' => 'j/n/Y G:i'
5092:             ),
5093:             'es-GT' => array(
5094:                 'name' => 'Spanish (Guatemala)',
5095:                 'dateFormat' => 'j/m/Y',
5096:                 'timeFormat' => 'H:i',
5097:                 'dateTimeFormat' => 'j/m/Y H:i'
5098:             ),
5099:             'es-HN' => array(
5100:                 'name' => 'Spanish (Honduras)',
5101:                 'dateFormat' => 'j/n/Y',
5102:                 'timeFormat' => 'H:i',
5103:                 'dateTimeFormat' => 'j/n/Y H:i'
5104:             ),
5105:             'es-419' => array(
5106:                 'name' => 'Spanish (Latin America)',
5107:                 'dateFormat' => 'j/n/Y',
5108:                 'timeFormat' => 'H:i',
5109:                 'dateTimeFormat' => 'j/n/Y H:i'
5110:             ),
5111:             'es-MX' => array(
5112:                 'name' => 'Spanish (Mexico)',
5113:                 'dateFormat' => 'd/m/Y',
5114:                 'timeFormat' => 'h:i a',
5115:                 'dateTimeFormat' => 'd/m/Y h:i a'
5116:             ),
5117:             'es-NI' => array(
5118:                 'name' => 'Spanish (Nicaragua)',
5119:                 'dateFormat' => 'j/n/Y',
5120:                 'timeFormat' => 'H:i',
5121:                 'dateTimeFormat' => 'j/n/Y H:i'
5122:             ),
5123:             'es-PA' => array(
5124:                 'name' => 'Spanish (Panama)',
5125:                 'dateFormat' => 'm/d/Y',
5126:                 'timeFormat' => 'g:i a',
5127:                 'dateTimeFormat' => 'm/d/Y g:i a'
5128:             ),
5129:             'es-PY' => array(
5130:                 'name' => 'Spanish (Paraguay)',
5131:                 'dateFormat' => 'j/n/Y',
5132:                 'timeFormat' => 'H:i',
5133:                 'dateTimeFormat' => 'j/n/Y H:i'
5134:             ),
5135:             'es-PE' => array(
5136:                 'name' => 'Spanish (Peru)',
5137:                 'dateFormat' => 'j/m/Y',
5138:                 'timeFormat' => 'H:i',
5139:                 'dateTimeFormat' => 'j/m/Y H:i'
5140:             ),
5141:             'es-PH' => array(
5142:                 'name' => 'Spanish (Philippines)',
5143:                 'dateFormat' => 'j/n/Y',
5144:                 'timeFormat' => 'g:i a',
5145:                 'dateTimeFormat' => 'j/n/Y g:i a'
5146:             ),
5147:             'es-PR' => array(
5148:                 'name' => 'Spanish (Puerto Rico)',
5149:                 'dateFormat' => 'm/d/Y',
5150:                 'timeFormat' => 'g:i a',
5151:                 'dateTimeFormat' => 'm/d/Y g:i a'
5152:             ),
5153:             'es-ES' => array(
5154:                 'name' => 'Spanish (Spain)',
5155:                 'dateFormat' => 'd/m/Y',
5156:                 'timeFormat' => 'G:i',
5157:                 'dateTimeFormat' => 'd/m/Y G:i'
5158:             ),
5159:             'es-US' => array(
5160:                 'name' => 'Spanish (United States)',
5161:                 'dateFormat' => 'n/j/Y',
5162:                 'timeFormat' => 'g:i A',
5163:                 'dateTimeFormat' => 'n/j/Y g:i A'
5164:             ),
5165:             'es-UY' => array(
5166:                 'name' => 'Spanish (Uruguay)',
5167:                 'dateFormat' => 'j/n/Y',
5168:                 'timeFormat' => 'G:i',
5169:                 'dateTimeFormat' => 'j/n/Y G:i'
5170:             ),
5171:             'zgh' => array(
5172:                 'name' => 'Standard Morrocan Tamazight',
5173:                 'dateFormat' => 'j/n/Y',
5174:                 'timeFormat' => 'H:i',
5175:                 'dateTimeFormat' => 'j/n/Y H:i'
5176:             ),
5177:             'zgh-Tfng' => array(
5178:                 'name' => 'Standard Morrocan Tamazight (Tifinagh)',
5179:                 'dateFormat' => 'j/n/Y',
5180:                 'timeFormat' => 'H:i',
5181:                 'dateTimeFormat' => 'j/n/Y H:i'
5182:             ),
5183:             'zgh-Tfng-MA' => array(
5184:                 'name' => 'Standard Morrocan Tamazight (Tifinagh, Morocco)',
5185:                 'dateFormat' => 'j/n/Y',
5186:                 'timeFormat' => 'H:i',
5187:                 'dateTimeFormat' => 'j/n/Y H:i'
5188:             ),
5189:             'sv' => array(
5190:                 'name' => 'Swedish',
5191:                 'dateFormat' => 'Y-m-d',
5192:                 'timeFormat' => 'H:i',
5193:                 'dateTimeFormat' => 'Y-m-d H:i'
5194:             ),
5195:             'sv-AX' => array(
5196:                 'name' => 'Swedish (Åland Islands)',
5197:                 'dateFormat' => 'Y-m-d',
5198:                 'timeFormat' => 'H:i',
5199:                 'dateTimeFormat' => 'Y-m-d H:i'
5200:             ),
5201:             'sv-FI' => array(
5202:                 'name' => 'Swedish (Finland)',
5203:                 'dateFormat' => 'd-m-Y',
5204:                 'timeFormat' => 'H:i',
5205:                 'dateTimeFormat' => 'd-m-Y H:i'
5206:             ),
5207:             'sv-SE' => array(
5208:                 'name' => 'Swedish (Sweden)',
5209:                 'dateFormat' => 'Y-m-d',
5210:                 'timeFormat' => 'H:i',
5211:                 'dateTimeFormat' => 'Y-m-d H:i'
5212:             ),
5213:             'gsw' => array(
5214:                 'name' => 'Swiss German',
5215:                 'dateFormat' => 'd.m.Y',
5216:                 'timeFormat' => 'H:i',
5217:                 'dateTimeFormat' => 'd.m.Y H:i'
5218:             ),
5219:             'gsw-FR' => array(
5220:                 'name' => 'Swiss German (France)',
5221:                 'dateFormat' => 'd/m/Y',
5222:                 'timeFormat' => 'H:i',
5223:                 'dateTimeFormat' => 'd/m/Y H:i'
5224:             ),
5225:             'gsw-LI' => array(
5226:                 'name' => 'Swiss German (Liechtenstein)',
5227:                 'dateFormat' => 'd.m.Y',
5228:                 'timeFormat' => 'H:i',
5229:                 'dateTimeFormat' => 'd.m.Y H:i'
5230:             ),
5231:             'gsw-CH' => array(
5232:                 'name' => 'Swiss German (Switzerland)',
5233:                 'dateFormat' => 'd.m.Y',
5234:                 'timeFormat' => 'H:i',
5235:                 'dateTimeFormat' => 'd.m.Y H:i'
5236:             ),
5237:             'syr' => array(
5238:                 'name' => 'Syriac',
5239:                 'dateFormat' => 'd/m/Y',
5240:                 'timeFormat' => 'h:i A',
5241:                 'dateTimeFormat' => 'd/m/Y h:i A'
5242:             ),
5243:             'syr-SY' => array(
5244:                 'name' => 'Syriac (Syria)',
5245:                 'dateFormat' => 'd/m/Y',
5246:                 'timeFormat' => 'h:i A',
5247:                 'dateTimeFormat' => 'd/m/Y h:i A'
5248:             ),
5249:             'shi' => array(
5250:                 'name' => 'Tachelhit',
5251:                 'dateFormat' => 'j/n/Y',
5252:                 'timeFormat' => 'H:i',
5253:                 'dateTimeFormat' => 'j/n/Y H:i'
5254:             ),
5255:             'shi-Latn' => array(
5256:                 'name' => 'Tachelhit (Latin)',
5257:                 'dateFormat' => 'j/n/Y',
5258:                 'timeFormat' => 'H:i',
5259:                 'dateTimeFormat' => 'j/n/Y H:i'
5260:             ),
5261:             'shi-Latn-MA' => array(
5262:                 'name' => 'Tachelhit (Latin, Morocco)',
5263:                 'dateFormat' => 'j/n/Y',
5264:                 'timeFormat' => 'H:i',
5265:                 'dateTimeFormat' => 'j/n/Y H:i'
5266:             ),
5267:             'shi-Tfng' => array(
5268:                 'name' => 'Tachelhit (Tifinagh)',
5269:                 'dateFormat' => 'j/n/Y',
5270:                 'timeFormat' => 'H:i',
5271:                 'dateTimeFormat' => 'j/n/Y H:i'
5272:             ),
5273:             'shi-Tfng-MA' => array(
5274:                 'name' => 'Tachelhit (Tifinagh, Morocco)',
5275:                 'dateFormat' => 'j/n/Y',
5276:                 'timeFormat' => 'H:i',
5277:                 'dateTimeFormat' => 'j/n/Y H:i'
5278:             ),
5279:             'tg' => array(
5280:                 'name' => 'Tajik',
5281:                 'dateFormat' => 'd.m.Y',
5282:                 'timeFormat' => 'H:i',
5283:                 'dateTimeFormat' => 'd.m.Y H:i'
5284:             ),
5285:             'tg-Cyrl' => array(
5286:                 'name' => 'Tajik (Cyrillic)',
5287:                 'dateFormat' => 'd.m.Y',
5288:                 'timeFormat' => 'H:i',
5289:                 'dateTimeFormat' => 'd.m.Y H:i'
5290:             ),
5291:             'tg-Cyrl-TJ' => array(
5292:                 'name' => 'Tajik (Cyrillic, Tajikistan)',
5293:                 'dateFormat' => 'd.m.Y',
5294:                 'timeFormat' => 'H:i',
5295:                 'dateTimeFormat' => 'd.m.Y H:i'
5296:             ),
5297:             'ta' => array(
5298:                 'name' => 'Tamil',
5299:                 'dateFormat' => 'd-m-Y',
5300:                 'timeFormat' => 'H:i',
5301:                 'dateTimeFormat' => 'd-m-Y H:i'
5302:             ),
5303:             'ta-IN' => array(
5304:                 'name' => 'Tamil (India)',
5305:                 'dateFormat' => 'd-m-Y',
5306:                 'timeFormat' => 'H:i',
5307:                 'dateTimeFormat' => 'd-m-Y H:i'
5308:             ),
5309:             'ta-MY' => array(
5310:                 'name' => 'Tamil (Malaysia)',
5311:                 'dateFormat' => 'j/n/Y',
5312:                 'timeFormat' => 'A g:i',
5313:                 'dateTimeFormat' => 'j/n/Y A g:i'
5314:             ),
5315:             'ta-SG' => array(
5316:                 'name' => 'Tamil (Singapore)',
5317:                 'dateFormat' => 'j/n/Y',
5318:                 'timeFormat' => 'A g:i',
5319:                 'dateTimeFormat' => 'j/n/Y A g:i'
5320:             ),
5321:             'ta-LK' => array(
5322:                 'name' => 'Tamil (Sri Lanka)',
5323:                 'dateFormat' => 'j/n/Y',
5324:                 'timeFormat' => 'H:i',
5325:                 'dateTimeFormat' => 'j/n/Y H:i'
5326:             ),
5327:             'tt' => array(
5328:                 'name' => 'Tatar',
5329:                 'dateFormat' => 'd.m.Y',
5330:                 'timeFormat' => 'H:i',
5331:                 'dateTimeFormat' => 'd.m.Y H:i'
5332:             ),
5333:             'tt-RU' => array(
5334:                 'name' => 'Tatar (Russia)',
5335:                 'dateFormat' => 'd.m.Y',
5336:                 'timeFormat' => 'H:i',
5337:                 'dateTimeFormat' => 'd.m.Y H:i'
5338:             ),
5339:             'te' => array(
5340:                 'name' => 'Telugu',
5341:                 'dateFormat' => 'd-m-y',
5342:                 'timeFormat' => 'H:i',
5343:                 'dateTimeFormat' => 'd-m-y H:i'
5344:             ),
5345:             'te-IN' => array(
5346:                 'name' => 'Telugu (India)',
5347:                 'dateFormat' => 'd-m-y',
5348:                 'timeFormat' => 'H:i',
5349:                 'dateTimeFormat' => 'd-m-y H:i'
5350:             ),
5351:             'teo' => array(
5352:                 'name' => 'Teso',
5353:                 'dateFormat' => 'd/m/Y',
5354:                 'timeFormat' => 'H:i',
5355:                 'dateTimeFormat' => 'd/m/Y H:i'
5356:             ),
5357:             'teo-KE' => array(
5358:                 'name' => 'Teso (Kenya)',
5359:                 'dateFormat' => 'd/m/Y',
5360:                 'timeFormat' => 'H:i',
5361:                 'dateTimeFormat' => 'd/m/Y H:i'
5362:             ),
5363:             'teo-UG' => array(
5364:                 'name' => 'Teso (Uganda)',
5365:                 'dateFormat' => 'd/m/Y',
5366:                 'timeFormat' => 'H:i',
5367:                 'dateTimeFormat' => 'd/m/Y H:i'
5368:             ),
5369:             'th' => array(
5370:                 'name' => 'Thai',
5371:                 'dateFormat' => 'j/n/Y',
5372:                 'timeFormat' => 'G:i',
5373:                 'dateTimeFormat' => 'j/n/Y G:i'
5374:             ),
5375:             'th-TH' => array(
5376:                 'name' => 'Thai (Thailand)',
5377:                 'dateFormat' => 'j/n/Y',
5378:                 'timeFormat' => 'G:i',
5379:                 'dateTimeFormat' => 'j/n/Y G:i'
5380:             ),
5381:             'dav' => array(
5382:                 'name' => 'Taita',
5383:                 'dateFormat' => 'd/m/Y',
5384:                 'timeFormat' => 'H:i',
5385:                 'dateTimeFormat' => 'd/m/Y H:i'
5386:             ),
5387:             'dav-KE' => array(
5388:                 'name' => 'Taita (Kenya)',
5389:                 'dateFormat' => 'd/m/Y',
5390:                 'timeFormat' => 'H:i',
5391:                 'dateTimeFormat' => 'd/m/Y H:i'
5392:             ),
5393:             'twq' => array(
5394:                 'name' => 'Tasawaq',
5395:                 'dateFormat' => 'j/n/Y',
5396:                 'timeFormat' => 'H:i',
5397:                 'dateTimeFormat' => 'j/n/Y H:i'
5398:             ),
5399:             'twq-NE' => array(
5400:                 'name' => 'Tasawaq (Niger)',
5401:                 'dateFormat' => 'j/n/Y',
5402:                 'timeFormat' => 'H:i',
5403:                 'dateTimeFormat' => 'j/n/Y H:i'
5404:             ),
5405:             'bo' => array(
5406:                 'name' => 'Tibetan',
5407:                 'dateFormat' => 'Y/n/j',
5408:                 'timeFormat' => 'H:i',
5409:                 'dateTimeFormat' => 'Y/n/j H:i'
5410:             ),
5411:             'bo-IN' => array(
5412:                 'name' => 'Tibetan (India)',
5413:                 'dateFormat' => 'Y-m-d',
5414:                 'timeFormat' => 'g:i A',
5415:                 'dateTimeFormat' => 'Y-m-d g:i A'
5416:             ),
5417:             'bo-CN' => array(
5418:                 'name' => 'Tibetan (China)',
5419:                 'dateFormat' => 'Y/n/j',
5420:                 'timeFormat' => 'H:i',
5421:                 'dateTimeFormat' => 'Y/n/j H:i'
5422:             ),
5423:             'tig' => array(
5424:                 'name' => 'Tigre',
5425:                 'dateFormat' => 'd/m/Y',
5426:                 'timeFormat' => 'g:i A',
5427:                 'dateTimeFormat' => 'd/m/Y g:i A'
5428:             ),
5429:             'tig-ER' => array(
5430:                 'name' => 'Tigre (Eritrea)',
5431:                 'dateFormat' => 'd/m/Y',
5432:                 'timeFormat' => 'g:i A',
5433:                 'dateTimeFormat' => 'd/m/Y g:i A'
5434:             ),
5435:             'ti' => array(
5436:                 'name' => 'Tigrinya',
5437:                 'dateFormat' => 'd/m/Y',
5438:                 'timeFormat' => 'g:i A',
5439:                 'dateTimeFormat' => 'd/m/Y g:i A'
5440:             ),
5441:             'ti-ER' => array(
5442:                 'name' => 'Tigrinya (Eritrea)',
5443:                 'dateFormat' => 'd/m/Y',
5444:                 'timeFormat' => 'g:i A',
5445:                 'dateTimeFormat' => 'd/m/Y g:i A'
5446:             ),
5447:             'ti-ET' => array(
5448:                 'name' => 'Tigrinya (Ethiopia)',
5449:                 'dateFormat' => 'd/m/Y',
5450:                 'timeFormat' => 'g:i A',
5451:                 'dateTimeFormat' => 'd/m/Y g:i A'
5452:             ),
5453:             'to' => array(
5454:                 'name' => 'Tongan',
5455:                 'dateFormat' => 'j/n/Y',
5456:                 'timeFormat' => 'g:i A',
5457:                 'dateTimeFormat' => 'j/n/Y g:i A'
5458:             ),
5459:             'to-TO' => array(
5460:                 'name' => 'Tongan (Tonga)',
5461:                 'dateFormat' => 'j/n/Y',
5462:                 'timeFormat' => 'g:i A',
5463:                 'dateTimeFormat' => 'j/n/Y g:i A'
5464:             ),
5465:             'ts' => array(
5466:                 'name' => 'Tsonga',
5467:                 'dateFormat' => 'Y-m-d',
5468:                 'timeFormat' => 'H:i',
5469:                 'dateTimeFormat' => 'Y-m-d H:i'
5470:             ),
5471:             'ts-ZA' => array(
5472:                 'name' => 'Tsonga (South Africa)',
5473:                 'dateFormat' => 'Y-m-d',
5474:                 'timeFormat' => 'H:i',
5475:                 'dateTimeFormat' => 'Y-m-d H:i'
5476:             ),
5477:             'tr' => array(
5478:                 'name' => 'Turkish',
5479:                 'dateFormat' => 'j.m.Y',
5480:                 'timeFormat' => 'H:i',
5481:                 'dateTimeFormat' => 'j.m.Y H:i'
5482:             ),
5483:             'tr-CY' => array(
5484:                 'name' => 'Turkish (Cyprus)',
5485:                 'dateFormat' => 'j.m.Y',
5486:                 'timeFormat' => 'g:i A',
5487:                 'dateTimeFormat' => 'j.m.Y g:i A'
5488:             ),
5489:             'tr-TR' => array(
5490:                 'name' => 'Turkish (Turkey)',
5491:                 'dateFormat' => 'j.m.Y',
5492:                 'timeFormat' => 'H:i',
5493:                 'dateTimeFormat' => 'j.m.Y H:i'
5494:             ),
5495:             'tk' => array(
5496:                 'name' => 'Turkmen',
5497:                 'dateFormat' => 'd.m.y ý.',
5498:                 'timeFormat' => 'H:i',
5499:                 'dateTimeFormat' => 'd.m.y ý. H:i'
5500:             ),
5501:             'tk-TM' => array(
5502:                 'name' => 'Turkmen (Turkmenistan)',
5503:                 'dateFormat' => 'd.m.y ý.',
5504:                 'timeFormat' => 'H:i',
5505:                 'dateTimeFormat' => 'd.m.y ý. H:i'
5506:             ),
5507:             'uk' => array(
5508:                 'name' => 'Ukrainian',
5509:                 'dateFormat' => 'd.m.Y',
5510:                 'timeFormat' => 'G:i',
5511:                 'dateTimeFormat' => 'd.m.Y G:i'
5512:             ),
5513:             'uk-UA' => array(
5514:                 'name' => 'Ukrainian (Ukraine)',
5515:                 'dateFormat' => 'd.m.Y',
5516:                 'timeFormat' => 'G:i',
5517:                 'dateTimeFormat' => 'd.m.Y G:i'
5518:             ),
5519:             'hsb' => array(
5520:                 'name' => 'Upper Sorbian',
5521:                 'dateFormat' => 'j.n.Y',
5522:                 'timeFormat' => 'G:i \h\o\dź.',
5523:                 'dateTimeFormat' => 'j.n.Y G:i \h\o\dź.'
5524:             ),
5525:             'hsb-DE' => array(
5526:                 'name' => 'Upper Sorbian (Germany)',
5527:                 'dateFormat' => 'j.n.Y',
5528:                 'timeFormat' => 'G:i \h\o\dź.',
5529:                 'dateTimeFormat' => 'j.n.Y G:i \h\o\dź.'
5530:             ),
5531:             'ur' => array(
5532:                 'name' => 'Urdu',
5533:                 'dateFormat' => 'd/m/Y',
5534:                 'timeFormat' => 'g:i A',
5535:                 'dateTimeFormat' => 'd/m/Y g:i A'
5536:             ),
5537:             'ur-IN' => array(
5538:                 'name' => 'Urdu (India)',
5539:                 'dateFormat' => 'j/n/y',
5540:                 'timeFormat' => 'g:i A',
5541:                 'dateTimeFormat' => 'j/n/y g:i A'
5542:             ),
5543:             'ur-PK' => array(
5544:                 'name' => 'Urdu (Islamic Republic of Pakistan)',
5545:                 'dateFormat' => 'd/m/Y',
5546:                 'timeFormat' => 'g:i A',
5547:                 'dateTimeFormat' => 'd/m/Y g:i A'
5548:             ),
5549:             'ug' => array(
5550:                 'name' => 'Uyghur',
5551:                 'dateFormat' => 'Y-n-j',
5552:                 'timeFormat' => 'G:i',
5553:                 'dateTimeFormat' => 'Y-n-j G:i'
5554:             ),
5555:             'ug-CN' => array(
5556:                 'name' => 'Uyghur (China)',
5557:                 'dateFormat' => 'Y-n-j',
5558:                 'timeFormat' => 'G:i',
5559:                 'dateTimeFormat' => 'Y-n-j G:i'
5560:             ),
5561:             'uz' => array(
5562:                 'name' => 'Uzbek',
5563:                 'dateFormat' => 'd/m/Y',
5564:                 'timeFormat' => 'H:i',
5565:                 'dateTimeFormat' => 'd/m/Y H:i'
5566:             ),
5567:             'uz-Cyrl' => array(
5568:                 'name' => 'Uzbek (Cyrillic)',
5569:                 'dateFormat' => 'd/m/Y',
5570:                 'timeFormat' => 'H:i',
5571:                 'dateTimeFormat' => 'd/m/Y H:i'
5572:             ),
5573:             'uz-Cyrl-UZ' => array(
5574:                 'name' => 'Uzbek (Cyrillic, Uzbekistan)',
5575:                 'dateFormat' => 'd/m/Y',
5576:                 'timeFormat' => 'H:i',
5577:                 'dateTimeFormat' => 'd/m/Y H:i'
5578:             ),
5579:             'uz-Latn' => array(
5580:                 'name' => 'Uzbek (Latin)',
5581:                 'dateFormat' => 'd/m/Y',
5582:                 'timeFormat' => 'H:i',
5583:                 'dateTimeFormat' => 'd/m/Y H:i'
5584:             ),
5585:             'uz-Latn-UZ' => array(
5586:                 'name' => 'Uzbek (Latin, Uzbekistan)',
5587:                 'dateFormat' => 'd/m/Y',
5588:                 'timeFormat' => 'H:i',
5589:                 'dateTimeFormat' => 'd/m/Y H:i'
5590:             ),
5591:             'uz-Arab' => array(
5592:                 'name' => 'Uzbek (Perso-Arabic)',
5593:                 'dateFormat' => 'd/m Y',
5594:                 'timeFormat' => 'G:i',
5595:                 'dateTimeFormat' => 'd/m Y G:i'
5596:             ),
5597:             'uz-Arab-AF' => array(
5598:                 'name' => 'Uzbek (Perso-Arabic, Afghanistan)',
5599:                 'dateFormat' => 'd/m Y',
5600:                 'timeFormat' => 'G:i',
5601:                 'dateTimeFormat' => 'd/m Y G:i'
5602:             ),
5603:             'vai' => array(
5604:                 'name' => 'Vai',
5605:                 'dateFormat' => 'd/m/Y',
5606:                 'timeFormat' => 'g:i A',
5607:                 'dateTimeFormat' => 'd/m/Y g:i A'
5608:             ),
5609:             'vai-Latn' => array(
5610:                 'name' => 'Vai (Latin)',
5611:                 'dateFormat' => 'd/m/Y',
5612:                 'timeFormat' => 'g:i A',
5613:                 'dateTimeFormat' => 'd/m/Y g:i A'
5614:             ),
5615:             'vai-Latn-LR' => array(
5616:                 'name' => 'Vai (Latin, Liberia)',
5617:                 'dateFormat' => 'd/m/Y',
5618:                 'timeFormat' => 'g:i A',
5619:                 'dateTimeFormat' => 'd/m/Y g:i A'
5620:             ),
5621:             'vai-Vaii' => array(
5622:                 'name' => 'Vai (Vai)',
5623:                 'dateFormat' => 'd/m/Y',
5624:                 'timeFormat' => 'g:i A',
5625:                 'dateTimeFormat' => 'd/m/Y g:i A'
5626:             ),
5627:             'vai-Vaii-LR' => array(
5628:                 'name' => 'Vai (Vai, Liberia)',
5629:                 'dateFormat' => 'd/m/Y',
5630:                 'timeFormat' => 'g:i A',
5631:                 'dateTimeFormat' => 'd/m/Y g:i A'
5632:             ),
5633:             'ca-ES-valencia' => array(
5634:                 'name' => 'Valencian (Spain)',
5635:                 'dateFormat' => 'j/n/Y',
5636:                 'timeFormat' => 'G:i',
5637:                 'dateTimeFormat' => 'j/n/Y G:i'
5638:             ),
5639:             've' => array(
5640:                 'name' => 'Venda',
5641:                 'dateFormat' => 'Y-m-d',
5642:                 'timeFormat' => 'H:i',
5643:                 'dateTimeFormat' => 'Y-m-d H:i'
5644:             ),
5645:             've-ZA' => array(
5646:                 'name' => 'Venda (South Africa)',
5647:                 'dateFormat' => 'Y-m-d',
5648:                 'timeFormat' => 'H:i',
5649:                 'dateTimeFormat' => 'Y-m-d H:i'
5650:             ),
5651:             'vi' => array(
5652:                 'name' => 'Vietnamese',
5653:                 'dateFormat' => 'd/m/Y',
5654:                 'timeFormat' => 'g:i A',
5655:                 'dateTimeFormat' => 'd/m/Y g:i A'
5656:             ),
5657:             'vi-VN' => array(
5658:                 'name' => 'Vietnamese (Vietnam)',
5659:                 'dateFormat' => 'd/m/Y',
5660:                 'timeFormat' => 'g:i A',
5661:                 'dateTimeFormat' => 'd/m/Y g:i A'
5662:             ),
5663:             'vo' => array(
5664:                 'name' => 'Volapük',
5665:                 'dateFormat' => 'Y-m-d',
5666:                 'timeFormat' => 'H:i',
5667:                 'dateTimeFormat' => 'Y-m-d H:i'
5668:             ),
5669:             'vo-001' => array(
5670:                 'name' => 'Volapük (World)',
5671:                 'dateFormat' => 'Y-m-d',
5672:                 'timeFormat' => 'H:i',
5673:                 'dateTimeFormat' => 'Y-m-d H:i'
5674:             ),
5675:             'vun' => array(
5676:                 'name' => 'Vunjo',
5677:                 'dateFormat' => 'd/m/Y',
5678:                 'timeFormat' => 'H:i',
5679:                 'dateTimeFormat' => 'd/m/Y H:i'
5680:             ),
5681:             'vun-TZ' => array(
5682:                 'name' => 'Vunjo (Tanzania)',
5683:                 'dateFormat' => 'd/m/Y',
5684:                 'timeFormat' => 'H:i',
5685:                 'dateTimeFormat' => 'd/m/Y H:i'
5686:             ),
5687:             'wae' => array(
5688:                 'name' => 'Walser',
5689:                 'dateFormat' => 'Y-m-d',
5690:                 'timeFormat' => 'H:i',
5691:                 'dateTimeFormat' => 'Y-m-d H:i'
5692:             ),
5693:             'wae-CH' => array(
5694:                 'name' => 'Walser (Switzerland)',
5695:                 'dateFormat' => 'Y-m-d',
5696:                 'timeFormat' => 'H:i',
5697:                 'dateTimeFormat' => 'Y-m-d H:i'
5698:             ),
5699:             'cy' => array(
5700:                 'name' => 'Welsh',
5701:                 'dateFormat' => 'd/m/Y',
5702:                 'timeFormat' => 'H:i',
5703:                 'dateTimeFormat' => 'd/m/Y H:i'
5704:             ),
5705:             'cy-GB' => array(
5706:                 'name' => 'Welsh (United Kingdom)',
5707:                 'dateFormat' => 'd/m/Y',
5708:                 'timeFormat' => 'H:i',
5709:                 'dateTimeFormat' => 'd/m/Y H:i'
5710:             ),
5711:             'wal' => array(
5712:                 'name' => 'Wolaytta',
5713:                 'dateFormat' => 'd/m/Y',
5714:                 'timeFormat' => 'g:i A',
5715:                 'dateTimeFormat' => 'd/m/Y g:i A'
5716:             ),
5717:             'wal-ET' => array(
5718:                 'name' => 'Wolaytta (Ethiopia)',
5719:                 'dateFormat' => 'd/m/Y',
5720:                 'timeFormat' => 'g:i A',
5721:                 'dateTimeFormat' => 'd/m/Y g:i A'
5722:             ),
5723:             'wo' => array(
5724:                 'name' => 'Wolof',
5725:                 'dateFormat' => 'd/m/Y',
5726:                 'timeFormat' => 'H:i',
5727:                 'dateTimeFormat' => 'd/m/Y H:i'
5728:             ),
5729:             'wo-SN' => array(
5730:                 'name' => 'Wolof (Senegal)',
5731:                 'dateFormat' => 'd/m/Y',
5732:                 'timeFormat' => 'H:i',
5733:                 'dateTimeFormat' => 'd/m/Y H:i'
5734:             ),
5735:             'xh' => array(
5736:                 'name' => 'Xhosa',
5737:                 'dateFormat' => 'Y-m-d',
5738:                 'timeFormat' => 'H:i',
5739:                 'dateTimeFormat' => 'Y-m-d H:i'
5740:             ),
5741:             'xh-ZA' => array(
5742:                 'name' => 'Xhosa (South Africa)',
5743:                 'dateFormat' => 'Y-m-d',
5744:                 'timeFormat' => 'H:i',
5745:                 'dateTimeFormat' => 'Y-m-d H:i'
5746:             ),
5747:             'yav' => array(
5748:                 'name' => 'Yangben',
5749:                 'dateFormat' => 'j/n/Y',
5750:                 'timeFormat' => 'H:i',
5751:                 'dateTimeFormat' => 'j/n/Y H:i'
5752:             ),
5753:             'yav-CM' => array(
5754:                 'name' => 'Yangben (Cameroon)',
5755:                 'dateFormat' => 'j/n/Y',
5756:                 'timeFormat' => 'H:i',
5757:                 'dateTimeFormat' => 'j/n/Y H:i'
5758:             ),
5759:             'ii' => array(
5760:                 'name' => 'Yi',
5761:                 'dateFormat' => 'Y/n/j',
5762:                 'timeFormat' => 'A g:i',
5763:                 'dateTimeFormat' => 'Y/n/j A g:i'
5764:             ),
5765:             'ii-CN' => array(
5766:                 'name' => 'Yi (China)',
5767:                 'dateFormat' => 'Y/n/j',
5768:                 'timeFormat' => 'A g:i',
5769:                 'dateTimeFormat' => 'Y/n/j A g:i'
5770:             ),
5771:             'yi' => array(
5772:                 'name' => 'Yiddish',
5773:                 'dateFormat' => 'd/m/Y',
5774:                 'timeFormat' => 'H:i',
5775:                 'dateTimeFormat' => 'd/m/Y H:i'
5776:             ),
5777:             'yi-001' => array(
5778:                 'name' => 'Yiddish (World)',
5779:                 'dateFormat' => 'd/m/Y',
5780:                 'timeFormat' => 'H:i',
5781:                 'dateTimeFormat' => 'd/m/Y H:i'
5782:             ),
5783:             'yo' => array(
5784:                 'name' => 'Yoruba',
5785:                 'dateFormat' => 'd/m/Y',
5786:                 'timeFormat' => 'g:i A',
5787:                 'dateTimeFormat' => 'd/m/Y g:i A'
5788:             ),
5789:             'yo-BJ' => array(
5790:                 'name' => 'Yoruba (Benin)',
5791:                 'dateFormat' => 'd/m/Y',
5792:                 'timeFormat' => 'H:i',
5793:                 'dateTimeFormat' => 'd/m/Y H:i'
5794:             ),
5795:             'yo-NG' => array(
5796:                 'name' => 'Yoruba (Nigeria)',
5797:                 'dateFormat' => 'd/m/Y',
5798:                 'timeFormat' => 'g:i A',
5799:                 'dateTimeFormat' => 'd/m/Y g:i A'
5800:             ),
5801:             'dje' => array(
5802:                 'name' => 'Zarma',
5803:                 'dateFormat' => 'j/n/Y',
5804:                 'timeFormat' => 'H:i',
5805:                 'dateTimeFormat' => 'j/n/Y H:i'
5806:             ),
5807:             'dje-NE' => array(
5808:                 'name' => 'Zarma (Niger)',
5809:                 'dateFormat' => 'j/n/Y',
5810:                 'timeFormat' => 'H:i',
5811:                 'dateTimeFormat' => 'j/n/Y H:i'
5812:             ),
5813:             'zu' => array(
5814:                 'name' => 'Zulu',
5815:                 'dateFormat' => 'n/j/Y',
5816:                 'timeFormat' => 'g:i A',
5817:                 'dateTimeFormat' => 'n/j/Y g:i A'
5818:             ),
5819:             'zu-ZA' => array(
5820:                 'name' => 'Zulu (South Africa)',
5821:                 'dateFormat' => 'n/j/Y',
5822:                 'timeFormat' => 'g:i A',
5823:                 'dateTimeFormat' => 'n/j/Y g:i A'
5824:             )
5825:         );
5826:     }
5827: 
5828:     /**
5829:      * Get the locale data with the given locale code
5830:      *
5831:      * If the locale does not exist, the default en-US locale will be returned
5832:      *
5833:      * @param   string  $locale
5834:      * @return  array
5835:      */
5836:     public static function getLocale($locale = '')
5837:     {
5838:         $locales = Quform::getLocales();
5839: 
5840:         if ( ! empty($locales[$locale])) {
5841:             return $locales[$locale];
5842:         }
5843: 
5844:         return $locales['en-US'];
5845:     }
5846: 
5847:     /**
5848:      * Get the plugin icon SVG in the given color
5849:      *
5850:      * @param   string  $color
5851:      * @return  string
5852:      */
5853:     public static function getPluginIcon($color = '')
5854:     {
5855:         $icon = '<?xml version="1.0" standalone="no"?>
5856: <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
5857:  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
5858: <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5859:  width="397.000000pt" height="354.000000pt" viewBox="0 0 397.000000 354.000000"
5860:  preserveAspectRatio="xMidYMid meet">
5861: 
5862: <g transform="translate(0.000000,354.000000) scale(0.100000,-0.100000)"
5863: fill="#82878c" stroke="none">
5864: <path d="M1660 3530 c-548 -67 -1036 -347 -1337 -768 -146 -204 -244 -433
5865: -295 -687 -32 -160 -32 -451 0 -614 157 -784 810 -1360 1644 -1450 136 -15
5866: 2208 -15 2241 0 53 24 57 47 57 304 0 257 -4 280 -57 304 -16 7 -128 11 -319
5867: 11 l-295 0 67 83 c226 277 344 569 376 929 19 224 -6 432 -82 659 -206 622
5868: -766 1089 -1450 1210 -131 24 -428 33 -550 19z m400 -635 c135 -21 230 -49
5869: 346 -104 139 -67 244 -140 344 -240 451 -454 449 -1114 -5 -1566 -467 -465
5870: -1243 -473 -1726 -18 -148 140 -275 352 -326 548 -22 87 -26 120 -26 255 0
5871: 136 4 168 27 255 46 174 144 355 268 490 272 297 692 443 1098 380z"/>
5872: <path d="M1255 2341 c-11 -5 -31 -21 -45 -36 -22 -23 -25 -36 -25 -96 0 -64 2
5873: -71 33 -101 l32 -33 660 0 660 0 32 33 c31 30 33 37 33 102 0 65 -2 72 -33
5874: 102 l-32 33 -648 2 c-356 1 -656 -2 -667 -6z"/>
5875: <path d="M1255 1901 c-11 -5 -31 -21 -45 -36 -22 -23 -25 -36 -25 -96 0 -64 2
5876: -71 33 -101 l32 -33 405 0 405 0 32 33 c31 30 33 37 33 102 0 65 -2 72 -33
5877: 102 l-32 33 -393 2 c-215 1 -401 -2 -412 -6z"/>
5878: <path d="M1255 1461 c-11 -5 -31 -21 -45 -36 -22 -23 -25 -36 -25 -96 0 -64 2
5879: -71 33 -101 l32 -33 165 0 165 0 32 33 c31 30 33 37 33 102 0 65 -2 72 -33
5880: 102 l-32 33 -153 2 c-83 1 -161 -1 -172 -6z"/>
5881: </g>
5882: </svg>';
5883: 
5884:         if (Quform::isNonEmptyString($color)) {
5885:             $icon = str_replace('fill="#82878c"', sprintf('fill="%s"', $color), $icon);
5886:         }
5887: 
5888:         return 'data:image/svg+xml;base64,' . base64_encode($icon);
5889:     }
5890: 
5891:     /**
5892:      * Does the current user have any of the given capabilities?
5893:      *
5894:      * @deprecated  2.1.0
5895:      * @param       array|string  $caps
5896:      * @return      bool
5897:      */
5898:     public static function currentUserCan($caps)
5899:     {
5900:         _deprecated_function(__METHOD__, '2.1.0', 'current_user_can()');
5901: 
5902:         if ( ! is_user_logged_in()) {
5903:             return false;
5904:         }
5905: 
5906:         if (current_user_can('quform_full_access')) {
5907:             return true;
5908:         }
5909: 
5910:         if ( ! is_array($caps)) {
5911:             $caps = array($caps);
5912:         }
5913: 
5914:         foreach ($caps as $cap) {
5915:             if (current_user_can($cap)) {
5916:                 return true;
5917:             }
5918:         }
5919: 
5920:         return false;
5921:     }
5922: 
5923:     /**
5924:      * If the value is a non-zero number it will append 'px' otherwise return the value unchanged
5925:      *
5926:      * @param   string  $value
5927:      * @return  string
5928:      */
5929:     public static function addCssUnit($value)
5930:     {
5931:         if (is_numeric($value) && (string) $value !== '0') {
5932:             $value = sprintf('%spx', $value);
5933:         }
5934: 
5935:         return $value;
5936:     }
5937: 
5938:     /**
5939:      * Format the given count into thousands if necessary e.g. 1100 becomes 1.1k
5940:      *
5941:      * @param   int     $count
5942:      * @return  string
5943:      */
5944:     public static function formatCount($count)
5945:     {
5946:         if ($count >= 1000000000) {
5947:             $count = floor($count / 100000000) * 100000000;
5948:             $precision = $count % 1000000000 < 100000000 ? 0 : 1;
5949: 
5950:             /* translators: %s: number (in billions) */
5951:             return sprintf(_x('%sb', 'number ending in b (billions)', 'quform'), number_format_i18n($count / 1000000000, $precision));
5952:         } else if ($count >= 1000000) {
5953:             $count = floor($count / 100000) * 100000;
5954:             $precision = $count % 1000000 < 100000 ? 0 : 1;
5955: 
5956:             /* translators: %s: number (in millions) */
5957:             return sprintf(_x('%sm', 'number ending in m (millions)', 'quform'), number_format_i18n($count / 1000000, $precision));
5958:         } else if ($count >= 1000) {
5959:             $count = floor($count / 100) * 100;
5960:             $precision = $count % 1000 < 100 ? 0 : 1;
5961: 
5962:             /* translators: %s: number (in thousands) */
5963:             return sprintf(_x('%sk', 'number ending in k (thousands)', 'quform'), number_format_i18n($count / 1000, $precision));
5964:         } else {
5965:             return $count;
5966:         }
5967:     }
5968: 
5969:     /**
5970:      * Base 64 encode the given data in a format safe for URLs
5971:      *
5972:      * Credit: http://php.net/manual/en/function.base64-encode.php#103849
5973:      *
5974:      * @param   mixed  $data
5975:      * @return  string
5976:      */
5977:     public static function base64UrlEncode($data)
5978:     {
5979:         return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
5980:     }
5981: 
5982:     /**
5983:      * Get all pages in an array formatted for select2
5984:      *
5985:      * @deprecated 2.10.0
5986:      * @return array
5987:      */
5988:     public static function getPages()
5989:     {
5990:         $values = array();
5991: 
5992:         $pages = get_pages(array(
5993:             'number' => 250,
5994:             'sort_column' => 'post_modified',
5995:             'sort_order' => 'DESC'
5996:         ));
5997: 
5998:         if (is_array($pages) && count($pages)) {
5999:             foreach ($pages as $page) {
6000:                 $values[] = array(
6001:                     'id' => (string) $page->ID,
6002:                     'title' => Quform::getPostTitle($page)
6003:                 );
6004:             }
6005:         }
6006: 
6007:         return $values;
6008:     }
6009: 
6010:     /**
6011:      * Get all posts in an array formatted for select2
6012:      *
6013:      * @deprecated 2.10.0
6014:      * @return array
6015:      */
6016:     public static function getPosts()
6017:     {
6018:         $values = array();
6019: 
6020:         $posts = get_posts(array(
6021:             'numberposts' => 250,
6022:             'orderby' => 'modified',
6023:             'order' => 'DESC'
6024:         ));
6025: 
6026:         if (is_array($posts) && count($posts)) {
6027:             foreach ($posts as $post) {
6028:                 $values[] = array(
6029:                     'id' => (string) $post->ID,
6030:                     'title' => Quform::getPostTitle($post)
6031:                 );
6032:             }
6033:         }
6034: 
6035:         return $values;
6036:     }
6037: 
6038:     /**
6039:      * Get the title of the given post
6040:      *
6041:      * @deprecated 2.10.0
6042:      * @param   WP_Post  $post
6043:      * @return  string
6044:      */
6045:     public static function getPostTitle($post)
6046:     {
6047:         $title = '';
6048: 
6049:         if ($post instanceof WP_Post) {
6050:             /* translators: %d: the post ID */
6051:             $title = $post->post_title === '' ? sprintf(__('(no title) [%d]', 'quform'), $post->ID) : $post->post_title;
6052:         }
6053: 
6054:         return $title;
6055:     }
6056: 
6057:     /**
6058:      * Get the title of the post by ID
6059:      *
6060:      * @param   int     $id  The post ID
6061:      * @return  string       The post title
6062:      */
6063:     public static function getPostTitleById($id)
6064:     {
6065:         $post = get_post($id);
6066: 
6067:         if ($post instanceof WP_Post) {
6068:             /* translators: %d: the post ID */
6069:             $title = Quform::isNonEmptyString($post->post_title) ? $post->post_title : sprintf(__('(no title) [%d]', 'quform'), $post->ID);
6070:         } else {
6071:             /* translators: %d: the post ID */
6072:             $title = sprintf(__('(post not found) [%d]', 'quform'), $id);
6073:         }
6074: 
6075:         return $title;
6076:     }
6077: 
6078:     /**
6079:      * Search all public post types for the given search term
6080:      *
6081:      * @param   string  $search
6082:      * @return  array
6083:      */
6084:     public static function searchPosts($search)
6085:     {
6086:         global $wpdb;
6087: 
6088:         $search = '%' . $wpdb->esc_like($search) . '%';
6089: 
6090:         $postTypes = get_post_types(array('public' => true));
6091:         unset($postTypes['attachment']);
6092: 
6093:         $postTypesPlaceholders = join(', ', array_fill(0, count($postTypes), '%s'));
6094: 
6095:         $args = array($search);
6096: 
6097:         foreach ($postTypes as $postType) {
6098:             $args[] = $postType;
6099:         }
6100: 
6101:         $query = $wpdb->prepare("SELECT ID, post_title FROM {$wpdb->posts} WHERE post_title LIKE %s AND post_status = 'publish' AND post_type IN ({$postTypesPlaceholders}) LIMIT 10;", $args);
6102: 
6103:         $results = $wpdb->get_results($query);
6104: 
6105:         if (!is_array($results)) {
6106:             $results = array();
6107:         }
6108: 
6109:         return $results;
6110:     }
6111: 
6112:     /**
6113:      * Search all users for the given search term
6114:      *
6115:      * @param   string  $search
6116:      * @return  array
6117:      */
6118:     public static function searchUsers($search)
6119:     {
6120:         $users = new WP_User_Query(array(
6121:             'search' => '*' . $search . '*'
6122:         ));
6123: 
6124:         return $users->get_results();
6125:     }
6126: 
6127:     /**
6128:      * Format a date
6129:      *
6130:      * @param   string        $format    The format of the returned date
6131:      * @param   DateTime      $date      The DateTime instance representing the moment of time in UTC, or null for the current time
6132:      * @param   DateTimeZone  $timezone  The timezone of the returned date, will default to the WP timezone if omitted
6133:      * @return  string|false             The formatted date or false if there was an error
6134:      */
6135:     public static function date($format, ?DateTime $date = null, ?DateTimeZone $timezone = null)
6136:     {
6137:         if ( ! $date) {
6138:             try {
6139:                 $date = new DateTime('now', new DateTimeZone('UTC'));
6140:             } catch (Exception $e) {
6141:                 return false;
6142:             }
6143:         }
6144: 
6145:         $timestamp = $date->getTimestamp();
6146: 
6147:         if ($timestamp === false || ! function_exists('wp_date')) {
6148:             $timezone = $timezone ? $timezone : self::getTimezone();
6149:             $date->setTimezone($timezone);
6150: 
6151:             return $date->format($format);
6152:         }
6153: 
6154:         return wp_date($format, $timestamp, $timezone);
6155:     }
6156: 
6157:     /**
6158:      * Get the WP timezone as a DateTimeZone instance
6159:      *
6160:      * Duplicate of wp_timezone() for WP <5.3.
6161:      *
6162:      * @return DateTimeZone
6163:      */
6164:     public static function getTimezone()
6165:     {
6166:         if (function_exists('wp_timezone')) {
6167:             return wp_timezone();
6168:         }
6169: 
6170:         return new DateTimeZone(self::getTimezoneString());
6171:     }
6172: 
6173:     /**
6174:      * Get the WP timezone as a string
6175:      *
6176:      * Duplicate of wp_timezone_string() for WP <5.3.
6177:      *
6178:      * @return string
6179:      */
6180:     public static function getTimezoneString()
6181:     {
6182:         if (function_exists('wp_timezone_string')) {
6183:             return wp_timezone_string();
6184:         }
6185: 
6186:         $timezone_string = get_option('timezone_string');
6187: 
6188:         if ($timezone_string) {
6189:             return $timezone_string;
6190:         }
6191: 
6192:         // PHP versions below 5.5.10 don't support the offset timezone format in the DateTimeZone constructor
6193:         if (version_compare(PHP_VERSION, '5.5.10', '<')) {
6194:             return 'UTC';
6195:         }
6196: 
6197:         $offset  = (float) get_option('gmt_offset');
6198:         $hours   = (int) $offset;
6199:         $minutes = ($offset - $hours);
6200: 
6201:         $sign      = ($offset < 0) ? '-' : '+';
6202:         $abs_hour  = abs($hours);
6203:         $abs_mins  = abs($minutes * 60);
6204:         $tz_offset = sprintf('%s%02d:%02d', $sign, $abs_hour, $abs_mins);
6205: 
6206:         return $tz_offset;
6207:     }
6208: 
6209:     /**
6210:      * Compare the two given dates
6211:      *
6212:      * Returns:
6213:      *  -1     if first is before second
6214:      *  0      if the dates are the same
6215:      *  1      if first is after the second
6216:      * false   if either date is invalid
6217:      *
6218:      * @param   string  $first   The first date in YYYY-MM-DD format
6219:      * @param   string  $second  The second date in YYYY-MM-DD format
6220:      * @return  int|bool
6221:      */
6222:     public static function compareDates($first, $second)
6223:     {
6224:         try {
6225:             $first = new DateTime($first, new DateTimeZone('UTC'));
6226:             $second = new DateTime($second, new DateTimeZone('UTC'));
6227: 
6228:             if ($first < $second) {
6229:                 return -1;
6230:             } elseif ($first > $second) {
6231:                 return 1;
6232:             }
6233: 
6234:             return 0;
6235:         } catch (Exception $e) {
6236:             return false;
6237:         }
6238:     }
6239: }
6240: 
API documentation generated by ApiGen