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