diff --git a/client/mysqldump.c b/client/mysqldump.c
index 2d2fe439f766ee1f3dc5684d131cfc3358ded6b2..3bf9fff1b863292f7ce4210426f681ea2b57153f 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -2589,6 +2589,8 @@ static char *primary_key_fields(const char *table_name)
   char show_keys_buff[15 + 64 * 2 + 3];
   uint result_length = 0;
   char *result = 0;
+  char buff[NAME_LEN * 2 + 3];
+  char *quoted_field;
 
   my_snprintf(show_keys_buff, sizeof(show_keys_buff), 
 	      "SHOW KEYS FROM %s", table_name);
@@ -2612,8 +2614,10 @@ static char *primary_key_fields(const char *table_name)
   {
     /* Key is unique */
     do
-      result_length += strlen(row[4]) + 1;      /* + 1 for ',' or \0 */
-    while ((row = mysql_fetch_row(res)) && atoi(row[3]) > 1);
+    {
+      quoted_field= quote_name(row[4], buff, 0);
+      result_length+= strlen(quoted_field) + 1; /* + 1 for ',' or \0 */
+    } while ((row= mysql_fetch_row(res)) && atoi(row[3]) > 1);
   }
 
   /* Build the ORDER BY clause result */
@@ -2627,9 +2631,13 @@ static char *primary_key_fields(const char *table_name)
     }
     mysql_data_seek(res, 0);
     row = mysql_fetch_row(res);
-    end = strmov(result, row[4]);
-    while ((row = mysql_fetch_row(res)) && atoi(row[3]) > 1)
-      end = strxmov(end, ",", row[4], NullS);
+    quoted_field= quote_name(row[4], buff, 0);
+    end= strmov(result, quoted_field);
+    while ((row= mysql_fetch_row(res)) && atoi(row[3]) > 1)
+    {
+      quoted_field= quote_name(row[4], buff, 0);
+      end= strxmov(end, ",", quoted_field, NullS);
+    }
   }
 
 cleanup:
diff --git a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result
index fdf21a50a028b1e26d776d91f375fa60d509813c..24f29b23e87d13f18c943a7442ea8e79e346de41 100644
--- a/mysql-test/r/ctype_utf8.result
+++ b/mysql-test/r/ctype_utf8.result
@@ -124,12 +124,34 @@ create table t1 select date_format("2004-01-19 10:10:10", "%Y-%m-%d");
 show create table t1;
 Table	Create Table
 t1	CREATE TABLE `t1` (
-  `date_format("2004-01-19 10:10:10", "%Y-%m-%d")` binary(10) default NULL
+  `date_format("2004-01-19 10:10:10", "%Y-%m-%d")` char(10) character set utf8 default NULL
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
 select * from t1;
 date_format("2004-01-19 10:10:10", "%Y-%m-%d")
 2004-01-19
 drop table t1;
+set names utf8;
+set LC_TIME_NAMES='fr_FR';
+create table t1 (s1 char(20) character set latin1);
+insert into t1 values (date_format('2004-02-02','%M'));
+select hex(s1) from t1;
+hex(s1)
+66E97672696572
+drop table t1;
+create table t1 (s1 char(20) character set koi8r);
+set LC_TIME_NAMES='ru_RU';
+insert into t1 values (date_format('2004-02-02','%M'));
+insert into t1 values (date_format('2004-02-02','%b'));
+insert into t1 values (date_format('2004-02-02','%W'));
+insert into t1 values (date_format('2004-02-02','%a'));
+select hex(s1), s1 from t1;
+hex(s1)	s1
+E6C5D7D2C1CCD1	Февраля
+E6C5D7	Фев
+F0CFCEC5C4C5CCD8CEC9CB	Понедельник
+F0CEC4	Пнд
+drop table t1;
+set LC_TIME_NAMES='en_US';
 set names koi8r;
 create table t1 (s1 char(1) character set utf8);
 insert into t1 values (_koi8r'ÁÂ');
diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result
index 721982e11e3462c512b428eb22744ef3efe4f606..498fee2d03783be25c5fdd37bc3c3fd589abcd16 100644
--- a/mysql-test/r/mysqldump.result
+++ b/mysql-test/r/mysqldump.result
@@ -1584,4 +1584,66 @@ CREATE TABLE `t1` (
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
 drop table t1;
+CREATE TABLE `t1` (
+`a b` INT,
+`c"d` INT,
+`e``f` INT,
+PRIMARY KEY (`a b`, `c"d`, `e``f`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+insert into t1 values (0815, 4711, 2006);
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO,ANSI' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+DROP TABLE IF EXISTS "t1";
+CREATE TABLE "t1" (
+  "a b" int(11) NOT NULL default '0',
+  "c""d" int(11) NOT NULL default '0',
+  "e`f" int(11) NOT NULL default '0',
+  PRIMARY KEY  ("a b","c""d","e`f")
+);
+
+LOCK TABLES "t1" WRITE;
+/*!40000 ALTER TABLE "t1" DISABLE KEYS */;
+INSERT INTO "t1" VALUES (815,4711,2006);
+/*!40000 ALTER TABLE "t1" ENABLE KEYS */;
+UNLOCK TABLES;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+DROP TABLE IF EXISTS `t1`;
+CREATE TABLE `t1` (
+  `a b` int(11) NOT NULL default '0',
+  `c"d` int(11) NOT NULL default '0',
+  `e``f` int(11) NOT NULL default '0',
+  PRIMARY KEY  (`a b`,`c"d`,`e``f`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+LOCK TABLES `t1` WRITE;
+/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
+INSERT INTO `t1` VALUES (815,4711,2006);
+/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
+UNLOCK TABLES;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+DROP TABLE `t1`;
 End of 4.1 tests
diff --git a/mysql-test/r/rpl_locale.result b/mysql-test/r/rpl_locale.result
new file mode 100644
index 0000000000000000000000000000000000000000..5de5bab9a0b93c21ec97a90307be1c10b96f9a13
--- /dev/null
+++ b/mysql-test/r/rpl_locale.result
@@ -0,0 +1,16 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+create table t1 (s1 char(10));
+set lc_time_names= 'de_DE';
+insert into t1 values (date_format('2001-01-01','%W'));
+select * from t1;
+s1
+Montag
+select * from t1;
+s1
+Montag
+drop table t1;
diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result
index 0aa7ea7f83cd4d628f35cdfeea4d4d55069ac166..14f1eb7d306e7f02d86eda4c235a7a27c92f1a9f 100644
--- a/mysql-test/r/variables.result
+++ b/mysql-test/r/variables.result
@@ -499,6 +499,63 @@ set names latin1;
 select @@have_innodb;
 @@have_innodb
 #
+*** Various tests with LC_TIME_NAMES
+*** LC_TIME_NAMES: testing case insensitivity
+set @@lc_time_names='ru_ru';
+select @@lc_time_names;
+@@lc_time_names
+ru_RU
+*** LC_TIME_NAMES: testing with a user variable
+set @lc='JA_JP';
+set @@lc_time_names=@lc;
+select @@lc_time_names;
+@@lc_time_names
+ja_JP
+*** LC_TIME_NAMES: testing with string expressions
+set lc_time_names=concat('de','_','DE');
+select @@lc_time_names;
+@@lc_time_names
+de_DE
+set lc_time_names=concat('de','+','DE');
+ERROR HY000: Unknown locale: 'de+DE'
+select @@lc_time_names;
+@@lc_time_names
+de_DE
+LC_TIME_NAMES: testing with numeric expressions
+set @@lc_time_names=1+2;
+select @@lc_time_names;
+@@lc_time_names
+sv_SE
+set @@lc_time_names=1/0;
+ERROR 42000: Incorrect argument type to variable 'lc_time_names'
+select @@lc_time_names;
+@@lc_time_names
+sv_SE
+set lc_time_names=en_US;
+LC_TIME_NAMES: testing NULL and a negative number:
+set lc_time_names=NULL;
+ERROR 42000: Variable 'lc_time_names' can't be set to the value of 'NULL'
+set lc_time_names=-1;
+ERROR HY000: Unknown locale: '-1'
+select @@lc_time_names;
+@@lc_time_names
+en_US
+LC_TIME_NAMES: testing locale with the last ID:
+set lc_time_names=108;
+select @@lc_time_names;
+@@lc_time_names
+zh_HK
+LC_TIME_NAMES: testing a number beyond the valid ID range:
+set lc_time_names=109;
+ERROR HY000: Unknown locale: '109'
+select @@lc_time_names;
+@@lc_time_names
+zh_HK
+LC_TIME_NAMES: testing that 0 is en_US:
+set lc_time_names=0;
+select @@lc_time_names;
+@@lc_time_names
+en_US
 set @test = @@query_prealloc_size;
 set @@query_prealloc_size = @test;
 select @@query_prealloc_size = @test;
diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test
index af40121852f37b4b7a05532b2f38fbe3db6bfcde..0b3f9ed2400d4fdd25239de87d619cb83b8615fa 100644
--- a/mysql-test/t/ctype_utf8.test
+++ b/mysql-test/t/ctype_utf8.test
@@ -93,6 +93,26 @@ show create table t1;
 select * from t1;
 drop table t1;
 
+#
+# Bug#22646 LC_TIME_NAMES: Assignment to non-UTF8 target fails
+#
+set names utf8;
+set LC_TIME_NAMES='fr_FR';
+create table t1 (s1 char(20) character set latin1);
+insert into t1 values (date_format('2004-02-02','%M'));
+select hex(s1) from t1;
+drop table t1;
+create table t1 (s1 char(20) character set koi8r);
+set LC_TIME_NAMES='ru_RU';
+insert into t1 values (date_format('2004-02-02','%M'));
+insert into t1 values (date_format('2004-02-02','%b'));
+insert into t1 values (date_format('2004-02-02','%W'));
+insert into t1 values (date_format('2004-02-02','%a'));
+select hex(s1), s1 from t1;
+drop table t1;
+set LC_TIME_NAMES='en_US';
+
+
 #
 # Bug #2366  	Wrong utf8 behaviour when data is truncated
 #
diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test
index b0df2bb9db2bb800b0bbd4fb5fcb23c4e95096fb..4a077f1ffa36c9a3564054d40a0b19a88e69a4b2 100644
--- a/mysql-test/t/mysqldump.test
+++ b/mysql-test/t/mysqldump.test
@@ -702,4 +702,19 @@ create table t1 (a int);
 --exec $MYSQL_DUMP --skip-comments --force test t1 --where='xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 2>&1
 drop table t1;
 
+#
+# BUG#13926: --order-by-primary fails if PKEY contains quote character
+#
+CREATE TABLE `t1` (
+  `a b` INT,
+  `c"d` INT,
+  `e``f` INT,
+  PRIMARY KEY (`a b`, `c"d`, `e``f`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+insert into t1 values (0815, 4711, 2006);
+
+--exec $MYSQL_DUMP --skip-comments --compatible=ansi --order-by-primary test t1
+--exec $MYSQL_DUMP --skip-comments --order-by-primary test t1
+DROP TABLE `t1`;
+
 --echo End of 4.1 tests
diff --git a/mysql-test/t/rpl_locale.test b/mysql-test/t/rpl_locale.test
new file mode 100644
index 0000000000000000000000000000000000000000..530a3d77636d30055a3b7afae86c83c88aba13ad
--- /dev/null
+++ b/mysql-test/t/rpl_locale.test
@@ -0,0 +1,22 @@
+# Replication of locale variables
+
+source include/master-slave.inc;
+
+#
+# Bug#22645 LC_TIME_NAMES: Statement not replicated
+#
+connection master;
+create table t1 (s1 char(10));
+set lc_time_names= 'de_DE';
+insert into t1 values (date_format('2001-01-01','%W'));
+select * from t1;
+sync_slave_with_master;
+connection slave;
+select * from t1;
+connection master;
+drop table t1;
+sync_slave_with_master;
+
+# End of 4.1 tests
+
+
diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test
index 8322c0f84bd9c9ae1f7c20c9960c8ee119e62aaf..808dc0973d464f56a97f8edb7f24e076f1c12856 100644
--- a/mysql-test/t/variables.test
+++ b/mysql-test/t/variables.test
@@ -396,6 +396,50 @@ set names latin1;
 --replace_column 1 #
 select @@have_innodb;
 
+#
+# Tests for lc_time_names
+# Note, when adding new locales, please fix ID accordingly:
+# - to test the last ID (currently 108)
+# - and the next after the last (currently 109)
+#
+--echo *** Various tests with LC_TIME_NAMES
+--echo *** LC_TIME_NAMES: testing case insensitivity
+set @@lc_time_names='ru_ru';
+select @@lc_time_names;
+--echo *** LC_TIME_NAMES: testing with a user variable
+set @lc='JA_JP';
+set @@lc_time_names=@lc;
+select @@lc_time_names;
+--echo *** LC_TIME_NAMES: testing with string expressions
+set lc_time_names=concat('de','_','DE');
+select @@lc_time_names;
+--error 1105
+set lc_time_names=concat('de','+','DE');
+select @@lc_time_names;
+--echo LC_TIME_NAMES: testing with numeric expressions
+set @@lc_time_names=1+2;
+select @@lc_time_names;
+--error 1232
+set @@lc_time_names=1/0;
+select @@lc_time_names;
+set lc_time_names=en_US;
+--echo LC_TIME_NAMES: testing NULL and a negative number:
+--error 1231
+set lc_time_names=NULL;
+--error 1105
+set lc_time_names=-1;
+select @@lc_time_names;
+--echo LC_TIME_NAMES: testing locale with the last ID:
+set lc_time_names=108;
+select @@lc_time_names;
+--echo LC_TIME_NAMES: testing a number beyond the valid ID range:
+--error 1105
+set lc_time_names=109;
+select @@lc_time_names;
+--echo LC_TIME_NAMES: testing that 0 is en_US:
+set lc_time_names=0;
+select @@lc_time_names;
+
 #
 # Bug #13334: query_prealloc_size default less than minimum
 #
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc
index d6465406c682acbe2082aff05200b58021f10fc2..6c002918479a7b52a7ca96db18a17e1cb4dea228 100644
--- a/sql/item_timefunc.cc
+++ b/sql/item_timefunc.cc
@@ -595,16 +595,10 @@ bool make_date_time(DATE_TIME_FORMAT *format, TIME *l_time,
   uint weekday;
   ulong length;
   const char *ptr, *end;
-  MY_LOCALE *locale;
   THD *thd= current_thd;
-  char buf[128];
-  String tmp(buf, sizeof(buf), thd->variables.character_set_results);
-  uint errors= 0;
+  MY_LOCALE *locale= thd->variables.lc_time_names;
 
-  tmp.length(0);
   str->length(0);
-  str->set_charset(&my_charset_bin);
-  locale = thd->variables.lc_time_names;
 
   if (l_time->neg)
     str->append("-", 1);
@@ -618,41 +612,37 @@ bool make_date_time(DATE_TIME_FORMAT *format, TIME *l_time,
     {
       switch (*++ptr) {
       case 'M':
-	if (!l_time->month)
-	  return 1;
-	tmp.copy(locale->month_names->type_names[l_time->month-1],
-		   strlen(locale->month_names->type_names[l_time->month-1]),
-		   system_charset_info, tmp.charset(), &errors);
-	str->append(tmp.ptr(), tmp.length());
-	break;
+        if (!l_time->month)
+          return 1;
+        str->append(locale->month_names->type_names[l_time->month-1],
+                    strlen(locale->month_names->type_names[l_time->month-1]),
+                    system_charset_info);
+        break;
       case 'b':
-	if (!l_time->month)
-	  return 1;
-	tmp.copy(locale->ab_month_names->type_names[l_time->month-1],
-		 strlen(locale->ab_month_names->type_names[l_time->month-1]),
-		 system_charset_info, tmp.charset(), &errors);
-	str->append(tmp.ptr(), tmp.length());
-	break;
+        if (!l_time->month)
+          return 1;
+        str->append(locale->ab_month_names->type_names[l_time->month-1],
+                    strlen(locale->ab_month_names->type_names[l_time->month-1]),
+                    system_charset_info);
+        break;
       case 'W':
-	if (type == MYSQL_TIMESTAMP_TIME)
-	  return 1;
-	weekday= calc_weekday(calc_daynr(l_time->year,l_time->month,
-					 l_time->day),0);
-	tmp.copy(locale->day_names->type_names[weekday],
-		 strlen(locale->day_names->type_names[weekday]),
-		 system_charset_info, tmp.charset(), &errors);
-	str->append(tmp.ptr(), tmp.length());
-	break;
+        if (type == MYSQL_TIMESTAMP_TIME)
+          return 1;
+        weekday= calc_weekday(calc_daynr(l_time->year,l_time->month,
+                              l_time->day),0);
+        str->append(locale->day_names->type_names[weekday],
+                    strlen(locale->day_names->type_names[weekday]),
+                    system_charset_info);
+        break;
       case 'a':
-	if (type == MYSQL_TIMESTAMP_TIME)
-	  return 1;
-	weekday=calc_weekday(calc_daynr(l_time->year,l_time->month,
-					l_time->day),0);
-	tmp.copy(locale->ab_day_names->type_names[weekday],
-		 strlen(locale->ab_day_names->type_names[weekday]),
-		 system_charset_info, tmp.charset(), &errors);
-	str->append(tmp.ptr(), tmp.length());
-	break;
+        if (type == MYSQL_TIMESTAMP_TIME)
+          return 1;
+        weekday=calc_weekday(calc_daynr(l_time->year,l_time->month,
+                             l_time->day),0);
+        str->append(locale->ab_day_names->type_names[weekday],
+                    strlen(locale->ab_day_names->type_names[weekday]),
+                    system_charset_info);
+        break;
       case 'D':
 	if (type == MYSQL_TIMESTAMP_TIME)
 	  return 1;
@@ -1638,8 +1628,9 @@ longlong Item_func_sec_to_time::val_int()
 
 void Item_func_date_format::fix_length_and_dec()
 {
+  THD* thd= current_thd;
   decimals=0;
-  collation.set(&my_charset_bin);
+  collation.set(thd->variables.collation_connection);
   if (args[1]->type() == STRING_ITEM)
   {						// Optimize the normal case
     fixed_length=1;
@@ -1653,17 +1644,14 @@ void Item_func_date_format::fix_length_and_dec()
     args[1]->collation.set(
         get_charset_by_csname(args[1]->collation.collation->csname,
                               MY_CS_BINSORT,MYF(0)), DERIVATION_COERCIBLE);
-    /*
-      The result is a binary string (no reason to use collation->mbmaxlen
-      This is becasue make_date_time() only returns binary strings
-    */
-    max_length= format_length(((Item_string*) args[1])->const_string());
+    max_length= format_length(((Item_string*) args[1])->const_string()) *
+                collation.collation->mbmaxlen;
   }
   else
   {
     fixed_length=0;
-    /* The result is a binary string (no reason to use collation->mbmaxlen */
-    max_length=min(args[1]->max_length,MAX_BLOB_WIDTH) * 10;
+    max_length= min(args[1]->max_length,MAX_BLOB_WIDTH) * 10 * 
+                collation.collation->mbmaxlen;
     set_if_smaller(max_length,MAX_BLOB_WIDTH);
   }
   maybe_null=1;					// If wrong date
@@ -1783,6 +1771,7 @@ String *Item_func_date_format::val_str(String *str)
   date_time_format.format.length= format->length(); 
 
   /* Create the result string */
+  str->set_charset(collation.collation);
   if (!make_date_time(&date_time_format, &l_time,
                       is_time_format ? MYSQL_TIMESTAMP_TIME :
                                        MYSQL_TIMESTAMP_DATE,
diff --git a/sql/log.cc b/sql/log.cc
index 7e97bfd071299c887bbf76f8f6f796773d30a896..b91ec2b3dee4952db39b46f51f7fdc1a5c919ac2 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -1350,6 +1350,21 @@ COLLATION_CONNECTION=%u,COLLATION_DATABASE=%u,COLLATION_SERVER=%u",
         if (e.write(file))
           goto err;
       }
+      /*
+        Use the same ONE_SHOT trick for making replication of lc_time_names.
+      */
+      if (thd->variables.lc_time_names->number) // Not en_US
+      {
+        char buf[32];
+        uint length= my_snprintf(buf, sizeof(buf),
+                                 "SET ONE_SHOT LC_TIME_NAMES=%u", 
+                                 (uint) thd->variables.lc_time_names->number);
+        Query_log_event e(thd, buf, length, 0, FALSE);
+        e.set_log_pos(this);
+	e.error_code= 0;	// This statement cannot fail (see [1]).
+        if (e.write(file))
+          goto err;
+      }
 #endif
 
       if (thd->last_insert_id_used)
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h
index 8d6cdebe1f74d04d0e9b4f7070912b0dbc51b95e..51fd22f294377bf9dd0a688f3bbe0dc52f11dafa 100644
--- a/sql/mysql_priv.h
+++ b/sql/mysql_priv.h
@@ -71,6 +71,7 @@ extern CHARSET_INFO *national_charset_info, *table_alias_charset;
 
 typedef struct my_locale_st
 {
+  uint  number;
   const char *name;
   const char *description;
   const bool is_ascii;
@@ -84,6 +85,7 @@ extern MY_LOCALE my_locale_en_US;
 extern MY_LOCALE *my_locales[];
 
 MY_LOCALE *my_locale_by_name(const char *name);
+MY_LOCALE *my_locale_by_number(uint number);
 
 /***************************************************************************
   Configuration parameters
diff --git a/sql/set_var.cc b/sql/set_var.cc
index 71ca382f9d95085cffb525e98dbf863cf080b21c..30724c78a62ce15160ae74ee639e42a3c6d34ba3 100644
--- a/sql/set_var.cc
+++ b/sql/set_var.cc
@@ -2570,19 +2570,38 @@ void sys_var_thd_time_zone::set_default(THD *thd, enum_var_type type)
 
 bool sys_var_thd_lc_time_names::check(THD *thd, set_var *var)
 {
-  char *locale_str =var->value->str_value.c_ptr();
-  MY_LOCALE *locale_match=  my_locale_by_name(locale_str);
+  MY_LOCALE *locale_match;
 
-  if(locale_match == NULL) 
+  if (var->value->result_type() == INT_RESULT)
   {
-    my_printf_error(ER_UNKNOWN_ERROR, "Unknown locale: '%s'", MYF(0), locale_str);
-    return 1;
+    if (!(locale_match= my_locale_by_number((uint) var->value->val_int())))
+    {
+      char buf[20];
+      int10_to_str((int) var->value->val_int(), buf, -10);
+      my_printf_error(ER_UNKNOWN_ERROR, "Unknown locale: '%s'", MYF(0), buf);
+      return 1;
+    }
   }
-  else 
+  else // STRING_RESULT
   {
-    var->save_result.locale_value= locale_match;
-    return 0;
+    char buff[6]; 
+    String str(buff, sizeof(buff), &my_charset_latin1), *res;
+    if (!(res=var->value->val_str(&str)))
+    {
+      my_error(ER_WRONG_VALUE_FOR_VAR, MYF(0), name, "NULL");
+      return 1;
+    }
+    const char *locale_str= res->c_ptr();
+    if (!(locale_match= my_locale_by_name(locale_str)))
+    {
+      my_printf_error(ER_UNKNOWN_ERROR,
+                      "Unknown locale: '%s'", MYF(0), locale_str);
+      return 1;
+    }
   }
+
+  var->save_result.locale_value= locale_match;
+  return 0;
 }
 
 
diff --git a/sql/set_var.h b/sql/set_var.h
index 1ae3a18111f5546e11ae6d08e91acd6b5eca2168..78b34963e9d61916f45e1ecdfb3b846a51a86bed 100644
--- a/sql/set_var.h
+++ b/sql/set_var.h
@@ -764,12 +764,16 @@ class sys_var_thd_lc_time_names :public sys_var_thd
 public:
   sys_var_thd_lc_time_names(const char *name_arg):
     sys_var_thd(name_arg) 
-  {}
+  {
+#if MYSQL_VERSION_ID < 50000
+    no_support_one_shot= 0;
+#endif
+  }
   bool check(THD *thd, set_var *var);
   SHOW_TYPE type() { return SHOW_CHAR; }
   bool check_update_type(Item_result type)
   {
-    return type != STRING_RESULT;		/* Only accept strings */
+    return ((type != STRING_RESULT) && (type != INT_RESULT));
   }
   bool check_default(enum_var_type type) { return 0; }
   bool update(THD *thd, set_var *var);
diff --git a/sql/sql_locale.cc b/sql/sql_locale.cc
index 9dae55e450865cfc65e009fe61e407f0ba014ad1..1f60c61ed46f9f9e9f091dc066c599e4dd1b7bd1 100644
--- a/sql/sql_locale.cc
+++ b/sql/sql_locale.cc
@@ -24,17 +24,6 @@
 #include "mysql_priv.h"
 
 
-MY_LOCALE *my_locale_by_name(const char *name)
-{
-  MY_LOCALE **locale;
-  for( locale= my_locales; *locale != NULL; locale++) 
-  {
-    if(!strcmp((*locale)->name, name))
-      return *locale;
-  }
-  return NULL;
-}
-
 /***** LOCALE BEGIN ar_AE: Arabic - United Arab Emirates *****/
 static const char *my_locale_month_names_ar_AE[13] = 
  {"يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر", NullS };
@@ -53,7 +42,16 @@ static TYPELIB my_locale_typelib_day_names_ar_AE =
 static TYPELIB my_locale_typelib_ab_day_names_ar_AE = 
  { array_elements(my_locale_ab_day_names_ar_AE)-1, "", my_locale_ab_day_names_ar_AE, NULL };
 MY_LOCALE my_locale_ar_AE=
- { "ar_AE", "Arabic - United Arab Emirates", FALSE, &my_locale_typelib_month_names_ar_AE, &my_locale_typelib_ab_month_names_ar_AE, &my_locale_typelib_day_names_ar_AE, &my_locale_typelib_ab_day_names_ar_AE };
+{
+  6,
+  "ar_AE",
+  "Arabic - United Arab Emirates",
+  FALSE,
+  &my_locale_typelib_month_names_ar_AE,
+  &my_locale_typelib_ab_month_names_ar_AE,
+  &my_locale_typelib_day_names_ar_AE,
+  &my_locale_typelib_ab_day_names_ar_AE
+};
 /***** LOCALE END ar_AE *****/
 
 /***** LOCALE BEGIN ar_BH: Arabic - Bahrain *****/
@@ -74,7 +72,16 @@ static TYPELIB my_locale_typelib_day_names_ar_BH =
 static TYPELIB my_locale_typelib_ab_day_names_ar_BH = 
  { array_elements(my_locale_ab_day_names_ar_BH)-1, "", my_locale_ab_day_names_ar_BH, NULL };
 MY_LOCALE my_locale_ar_BH=
- { "ar_BH", "Arabic - Bahrain", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+{
+  7,
+  "ar_BH",
+  "Arabic - Bahrain",
+  FALSE,
+  &my_locale_typelib_month_names_ar_BH,
+  &my_locale_typelib_ab_month_names_ar_BH,
+  &my_locale_typelib_day_names_ar_BH,
+  &my_locale_typelib_ab_day_names_ar_BH
+};
 /***** LOCALE END ar_BH *****/
 
 /***** LOCALE BEGIN ar_JO: Arabic - Jordan *****/
@@ -95,7 +102,16 @@ static TYPELIB my_locale_typelib_day_names_ar_JO =
 static TYPELIB my_locale_typelib_ab_day_names_ar_JO = 
  { array_elements(my_locale_ab_day_names_ar_JO)-1, "", my_locale_ab_day_names_ar_JO, NULL };
 MY_LOCALE my_locale_ar_JO=
- { "ar_JO", "Arabic - Jordan", FALSE, &my_locale_typelib_month_names_ar_JO, &my_locale_typelib_ab_month_names_ar_JO, &my_locale_typelib_day_names_ar_JO, &my_locale_typelib_ab_day_names_ar_JO };
+{
+  8,
+  "ar_JO",
+  "Arabic - Jordan",
+  FALSE,
+  &my_locale_typelib_month_names_ar_JO,
+  &my_locale_typelib_ab_month_names_ar_JO,
+  &my_locale_typelib_day_names_ar_JO,
+  &my_locale_typelib_ab_day_names_ar_JO
+};
 /***** LOCALE END ar_JO *****/
 
 /***** LOCALE BEGIN ar_SA: Arabic - Saudi Arabia *****/
@@ -116,7 +132,16 @@ static TYPELIB my_locale_typelib_day_names_ar_SA =
 static TYPELIB my_locale_typelib_ab_day_names_ar_SA = 
  { array_elements(my_locale_ab_day_names_ar_SA)-1, "", my_locale_ab_day_names_ar_SA, NULL };
 MY_LOCALE my_locale_ar_SA=
- { "ar_SA", "Arabic - Saudi Arabia", FALSE, &my_locale_typelib_month_names_ar_SA, &my_locale_typelib_ab_month_names_ar_SA, &my_locale_typelib_day_names_ar_SA, &my_locale_typelib_ab_day_names_ar_SA };
+{
+  9,
+  "ar_SA",
+  "Arabic - Saudi Arabia",
+  FALSE,
+  &my_locale_typelib_month_names_ar_SA,
+  &my_locale_typelib_ab_month_names_ar_SA,
+  &my_locale_typelib_day_names_ar_SA,
+  &my_locale_typelib_ab_day_names_ar_SA
+};
 /***** LOCALE END ar_SA *****/
 
 /***** LOCALE BEGIN ar_SY: Arabic - Syria *****/
@@ -137,7 +162,16 @@ static TYPELIB my_locale_typelib_day_names_ar_SY =
 static TYPELIB my_locale_typelib_ab_day_names_ar_SY = 
  { array_elements(my_locale_ab_day_names_ar_SY)-1, "", my_locale_ab_day_names_ar_SY, NULL };
 MY_LOCALE my_locale_ar_SY=
- { "ar_SY", "Arabic - Syria", FALSE, &my_locale_typelib_month_names_ar_SY, &my_locale_typelib_ab_month_names_ar_SY, &my_locale_typelib_day_names_ar_SY, &my_locale_typelib_ab_day_names_ar_SY };
+{
+  10,
+  "ar_SY",
+  "Arabic - Syria",
+  FALSE,
+  &my_locale_typelib_month_names_ar_SY,
+  &my_locale_typelib_ab_month_names_ar_SY,
+  &my_locale_typelib_day_names_ar_SY,
+  &my_locale_typelib_ab_day_names_ar_SY
+};
 /***** LOCALE END ar_SY *****/
 
 /***** LOCALE BEGIN be_BY: Belarusian - Belarus *****/
@@ -158,7 +192,16 @@ static TYPELIB my_locale_typelib_day_names_be_BY =
 static TYPELIB my_locale_typelib_ab_day_names_be_BY = 
  { array_elements(my_locale_ab_day_names_be_BY)-1, "", my_locale_ab_day_names_be_BY, NULL };
 MY_LOCALE my_locale_be_BY=
- { "be_BY", "Belarusian - Belarus", FALSE, &my_locale_typelib_month_names_be_BY, &my_locale_typelib_ab_month_names_be_BY, &my_locale_typelib_day_names_be_BY, &my_locale_typelib_ab_day_names_be_BY };
+{
+  11,
+  "be_BY",
+  "Belarusian - Belarus",
+  FALSE,
+  &my_locale_typelib_month_names_be_BY,
+  &my_locale_typelib_ab_month_names_be_BY,
+  &my_locale_typelib_day_names_be_BY,
+  &my_locale_typelib_ab_day_names_be_BY
+};
 /***** LOCALE END be_BY *****/
 
 /***** LOCALE BEGIN bg_BG: Bulgarian - Bulgaria *****/
@@ -179,7 +222,16 @@ static TYPELIB my_locale_typelib_day_names_bg_BG =
 static TYPELIB my_locale_typelib_ab_day_names_bg_BG = 
  { array_elements(my_locale_ab_day_names_bg_BG)-1, "", my_locale_ab_day_names_bg_BG, NULL };
 MY_LOCALE my_locale_bg_BG=
- { "bg_BG", "Bulgarian - Bulgaria", FALSE, &my_locale_typelib_month_names_bg_BG, &my_locale_typelib_ab_month_names_bg_BG, &my_locale_typelib_day_names_bg_BG, &my_locale_typelib_ab_day_names_bg_BG };
+{
+  12,
+  "bg_BG",
+  "Bulgarian - Bulgaria",
+  FALSE,
+  &my_locale_typelib_month_names_bg_BG,
+  &my_locale_typelib_ab_month_names_bg_BG,
+  &my_locale_typelib_day_names_bg_BG,
+  &my_locale_typelib_ab_day_names_bg_BG
+};
 /***** LOCALE END bg_BG *****/
 
 /***** LOCALE BEGIN ca_ES: Catalan - Catalan *****/
@@ -200,7 +252,16 @@ static TYPELIB my_locale_typelib_day_names_ca_ES =
 static TYPELIB my_locale_typelib_ab_day_names_ca_ES = 
  { array_elements(my_locale_ab_day_names_ca_ES)-1, "", my_locale_ab_day_names_ca_ES, NULL };
 MY_LOCALE my_locale_ca_ES=
- { "ca_ES", "Catalan - Catalan", FALSE, &my_locale_typelib_month_names_ca_ES, &my_locale_typelib_ab_month_names_ca_ES, &my_locale_typelib_day_names_ca_ES, &my_locale_typelib_ab_day_names_ca_ES };
+{
+  13,
+  "ca_ES",
+  "Catalan - Catalan",
+  FALSE,
+  &my_locale_typelib_month_names_ca_ES,
+  &my_locale_typelib_ab_month_names_ca_ES,
+  &my_locale_typelib_day_names_ca_ES,
+  &my_locale_typelib_ab_day_names_ca_ES
+};
 /***** LOCALE END ca_ES *****/
 
 /***** LOCALE BEGIN cs_CZ: Czech - Czech Republic *****/
@@ -221,7 +282,16 @@ static TYPELIB my_locale_typelib_day_names_cs_CZ =
 static TYPELIB my_locale_typelib_ab_day_names_cs_CZ = 
  { array_elements(my_locale_ab_day_names_cs_CZ)-1, "", my_locale_ab_day_names_cs_CZ, NULL };
 MY_LOCALE my_locale_cs_CZ=
- { "cs_CZ", "Czech - Czech Republic", FALSE, &my_locale_typelib_month_names_cs_CZ, &my_locale_typelib_ab_month_names_cs_CZ, &my_locale_typelib_day_names_cs_CZ, &my_locale_typelib_ab_day_names_cs_CZ };
+{
+  14,
+  "cs_CZ",
+  "Czech - Czech Republic",
+  FALSE,
+  &my_locale_typelib_month_names_cs_CZ,
+  &my_locale_typelib_ab_month_names_cs_CZ,
+  &my_locale_typelib_day_names_cs_CZ,
+  &my_locale_typelib_ab_day_names_cs_CZ
+};
 /***** LOCALE END cs_CZ *****/
 
 /***** LOCALE BEGIN da_DK: Danish - Denmark *****/
@@ -242,7 +312,16 @@ static TYPELIB my_locale_typelib_day_names_da_DK =
 static TYPELIB my_locale_typelib_ab_day_names_da_DK = 
  { array_elements(my_locale_ab_day_names_da_DK)-1, "", my_locale_ab_day_names_da_DK, NULL };
 MY_LOCALE my_locale_da_DK=
- { "da_DK", "Danish - Denmark", FALSE, &my_locale_typelib_month_names_da_DK, &my_locale_typelib_ab_month_names_da_DK, &my_locale_typelib_day_names_da_DK, &my_locale_typelib_ab_day_names_da_DK };
+{
+  15,
+  "da_DK",
+  "Danish - Denmark",
+  FALSE,
+  &my_locale_typelib_month_names_da_DK,
+  &my_locale_typelib_ab_month_names_da_DK,
+  &my_locale_typelib_day_names_da_DK,
+  &my_locale_typelib_ab_day_names_da_DK
+};
 /***** LOCALE END da_DK *****/
 
 /***** LOCALE BEGIN de_AT: German - Austria *****/
@@ -263,7 +342,16 @@ static TYPELIB my_locale_typelib_day_names_de_AT =
 static TYPELIB my_locale_typelib_ab_day_names_de_AT = 
  { array_elements(my_locale_ab_day_names_de_AT)-1, "", my_locale_ab_day_names_de_AT, NULL };
 MY_LOCALE my_locale_de_AT=
- { "de_AT", "German - Austria", FALSE, &my_locale_typelib_month_names_de_AT, &my_locale_typelib_ab_month_names_de_AT, &my_locale_typelib_day_names_de_AT, &my_locale_typelib_ab_day_names_de_AT };
+{
+  16,
+  "de_AT",
+  "German - Austria",
+  FALSE,
+  &my_locale_typelib_month_names_de_AT,
+  &my_locale_typelib_ab_month_names_de_AT,
+  &my_locale_typelib_day_names_de_AT,
+  &my_locale_typelib_ab_day_names_de_AT
+};
 /***** LOCALE END de_AT *****/
 
 /***** LOCALE BEGIN de_DE: German - Germany *****/
@@ -284,7 +372,16 @@ static TYPELIB my_locale_typelib_day_names_de_DE =
 static TYPELIB my_locale_typelib_ab_day_names_de_DE = 
  { array_elements(my_locale_ab_day_names_de_DE)-1, "", my_locale_ab_day_names_de_DE, NULL };
 MY_LOCALE my_locale_de_DE=
- { "de_DE", "German - Germany", FALSE, &my_locale_typelib_month_names_de_DE, &my_locale_typelib_ab_month_names_de_DE, &my_locale_typelib_day_names_de_DE, &my_locale_typelib_ab_day_names_de_DE };
+{
+  4,
+  "de_DE",
+  "German - Germany",
+  FALSE,
+  &my_locale_typelib_month_names_de_DE,
+  &my_locale_typelib_ab_month_names_de_DE,
+  &my_locale_typelib_day_names_de_DE,
+  &my_locale_typelib_ab_day_names_de_DE
+};
 /***** LOCALE END de_DE *****/
 
 /***** LOCALE BEGIN en_US: English - United States *****/
@@ -305,7 +402,16 @@ static TYPELIB my_locale_typelib_day_names_en_US =
 static TYPELIB my_locale_typelib_ab_day_names_en_US = 
  { array_elements(my_locale_ab_day_names_en_US)-1, "", my_locale_ab_day_names_en_US, NULL };
 MY_LOCALE my_locale_en_US=
- { "en_US", "English - United States", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+{
+  0,
+  "en_US",
+  "English - United States",
+  TRUE,
+  &my_locale_typelib_month_names_en_US,
+  &my_locale_typelib_ab_month_names_en_US,
+  &my_locale_typelib_day_names_en_US,
+  &my_locale_typelib_ab_day_names_en_US
+};
 /***** LOCALE END en_US *****/
 
 /***** LOCALE BEGIN es_ES: Spanish - Spain *****/
@@ -326,7 +432,16 @@ static TYPELIB my_locale_typelib_day_names_es_ES =
 static TYPELIB my_locale_typelib_ab_day_names_es_ES = 
  { array_elements(my_locale_ab_day_names_es_ES)-1, "", my_locale_ab_day_names_es_ES, NULL };
 MY_LOCALE my_locale_es_ES=
- { "es_ES", "Spanish - Spain", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  17,
+  "es_ES",
+  "Spanish - Spain",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_ES *****/
 
 /***** LOCALE BEGIN et_EE: Estonian - Estonia *****/
@@ -347,7 +462,16 @@ static TYPELIB my_locale_typelib_day_names_et_EE =
 static TYPELIB my_locale_typelib_ab_day_names_et_EE = 
  { array_elements(my_locale_ab_day_names_et_EE)-1, "", my_locale_ab_day_names_et_EE, NULL };
 MY_LOCALE my_locale_et_EE=
- { "et_EE", "Estonian - Estonia", FALSE, &my_locale_typelib_month_names_et_EE, &my_locale_typelib_ab_month_names_et_EE, &my_locale_typelib_day_names_et_EE, &my_locale_typelib_ab_day_names_et_EE };
+{
+  18,
+  "et_EE",
+  "Estonian - Estonia",
+  FALSE,
+  &my_locale_typelib_month_names_et_EE,
+  &my_locale_typelib_ab_month_names_et_EE,
+  &my_locale_typelib_day_names_et_EE,
+  &my_locale_typelib_ab_day_names_et_EE
+};
 /***** LOCALE END et_EE *****/
 
 /***** LOCALE BEGIN eu_ES: Basque - Basque *****/
@@ -368,7 +492,16 @@ static TYPELIB my_locale_typelib_day_names_eu_ES =
 static TYPELIB my_locale_typelib_ab_day_names_eu_ES = 
  { array_elements(my_locale_ab_day_names_eu_ES)-1, "", my_locale_ab_day_names_eu_ES, NULL };
 MY_LOCALE my_locale_eu_ES=
- { "eu_ES", "Basque - Basque", TRUE, &my_locale_typelib_month_names_eu_ES, &my_locale_typelib_ab_month_names_eu_ES, &my_locale_typelib_day_names_eu_ES, &my_locale_typelib_ab_day_names_eu_ES };
+{
+  19,
+  "eu_ES",
+  "Basque - Basque",
+  TRUE,
+  &my_locale_typelib_month_names_eu_ES,
+  &my_locale_typelib_ab_month_names_eu_ES,
+  &my_locale_typelib_day_names_eu_ES,
+  &my_locale_typelib_ab_day_names_eu_ES
+};
 /***** LOCALE END eu_ES *****/
 
 /***** LOCALE BEGIN fi_FI: Finnish - Finland *****/
@@ -389,7 +522,16 @@ static TYPELIB my_locale_typelib_day_names_fi_FI =
 static TYPELIB my_locale_typelib_ab_day_names_fi_FI = 
  { array_elements(my_locale_ab_day_names_fi_FI)-1, "", my_locale_ab_day_names_fi_FI, NULL };
 MY_LOCALE my_locale_fi_FI=
- { "fi_FI", "Finnish - Finland", FALSE, &my_locale_typelib_month_names_fi_FI, &my_locale_typelib_ab_month_names_fi_FI, &my_locale_typelib_day_names_fi_FI, &my_locale_typelib_ab_day_names_fi_FI };
+{
+  20,
+  "fi_FI",
+  "Finnish - Finland",
+  FALSE,
+  &my_locale_typelib_month_names_fi_FI,
+  &my_locale_typelib_ab_month_names_fi_FI,
+  &my_locale_typelib_day_names_fi_FI,
+  &my_locale_typelib_ab_day_names_fi_FI
+};
 /***** LOCALE END fi_FI *****/
 
 /***** LOCALE BEGIN fo_FO: Faroese - Faroe Islands *****/
@@ -410,7 +552,16 @@ static TYPELIB my_locale_typelib_day_names_fo_FO =
 static TYPELIB my_locale_typelib_ab_day_names_fo_FO = 
  { array_elements(my_locale_ab_day_names_fo_FO)-1, "", my_locale_ab_day_names_fo_FO, NULL };
 MY_LOCALE my_locale_fo_FO=
- { "fo_FO", "Faroese - Faroe Islands", FALSE, &my_locale_typelib_month_names_fo_FO, &my_locale_typelib_ab_month_names_fo_FO, &my_locale_typelib_day_names_fo_FO, &my_locale_typelib_ab_day_names_fo_FO };
+{
+  21,
+  "fo_FO",
+  "Faroese - Faroe Islands",
+  FALSE,
+  &my_locale_typelib_month_names_fo_FO,
+  &my_locale_typelib_ab_month_names_fo_FO,
+  &my_locale_typelib_day_names_fo_FO,
+  &my_locale_typelib_ab_day_names_fo_FO
+};
 /***** LOCALE END fo_FO *****/
 
 /***** LOCALE BEGIN fr_FR: French - France *****/
@@ -431,7 +582,16 @@ static TYPELIB my_locale_typelib_day_names_fr_FR =
 static TYPELIB my_locale_typelib_ab_day_names_fr_FR = 
  { array_elements(my_locale_ab_day_names_fr_FR)-1, "", my_locale_ab_day_names_fr_FR, NULL };
 MY_LOCALE my_locale_fr_FR=
- { "fr_FR", "French - France", FALSE, &my_locale_typelib_month_names_fr_FR, &my_locale_typelib_ab_month_names_fr_FR, &my_locale_typelib_day_names_fr_FR, &my_locale_typelib_ab_day_names_fr_FR };
+{
+  5,
+  "fr_FR",
+  "French - France",
+  FALSE,
+  &my_locale_typelib_month_names_fr_FR,
+  &my_locale_typelib_ab_month_names_fr_FR,
+  &my_locale_typelib_day_names_fr_FR,
+  &my_locale_typelib_ab_day_names_fr_FR
+};
 /***** LOCALE END fr_FR *****/
 
 /***** LOCALE BEGIN gl_ES: Galician - Galician *****/
@@ -452,7 +612,16 @@ static TYPELIB my_locale_typelib_day_names_gl_ES =
 static TYPELIB my_locale_typelib_ab_day_names_gl_ES = 
  { array_elements(my_locale_ab_day_names_gl_ES)-1, "", my_locale_ab_day_names_gl_ES, NULL };
 MY_LOCALE my_locale_gl_ES=
- { "gl_ES", "Galician - Galician", FALSE, &my_locale_typelib_month_names_gl_ES, &my_locale_typelib_ab_month_names_gl_ES, &my_locale_typelib_day_names_gl_ES, &my_locale_typelib_ab_day_names_gl_ES };
+{
+  22,
+  "gl_ES",
+  "Galician - Galician",
+  FALSE,
+  &my_locale_typelib_month_names_gl_ES,
+  &my_locale_typelib_ab_month_names_gl_ES,
+  &my_locale_typelib_day_names_gl_ES,
+  &my_locale_typelib_ab_day_names_gl_ES
+};
 /***** LOCALE END gl_ES *****/
 
 /***** LOCALE BEGIN gu_IN: Gujarati - India *****/
@@ -473,7 +642,16 @@ static TYPELIB my_locale_typelib_day_names_gu_IN =
 static TYPELIB my_locale_typelib_ab_day_names_gu_IN = 
  { array_elements(my_locale_ab_day_names_gu_IN)-1, "", my_locale_ab_day_names_gu_IN, NULL };
 MY_LOCALE my_locale_gu_IN=
- { "gu_IN", "Gujarati - India", FALSE, &my_locale_typelib_month_names_gu_IN, &my_locale_typelib_ab_month_names_gu_IN, &my_locale_typelib_day_names_gu_IN, &my_locale_typelib_ab_day_names_gu_IN };
+{
+  23,
+  "gu_IN",
+  "Gujarati - India",
+  FALSE,
+  &my_locale_typelib_month_names_gu_IN,
+  &my_locale_typelib_ab_month_names_gu_IN,
+  &my_locale_typelib_day_names_gu_IN,
+  &my_locale_typelib_ab_day_names_gu_IN
+};
 /***** LOCALE END gu_IN *****/
 
 /***** LOCALE BEGIN he_IL: Hebrew - Israel *****/
@@ -494,7 +672,16 @@ static TYPELIB my_locale_typelib_day_names_he_IL =
 static TYPELIB my_locale_typelib_ab_day_names_he_IL = 
  { array_elements(my_locale_ab_day_names_he_IL)-1, "", my_locale_ab_day_names_he_IL, NULL };
 MY_LOCALE my_locale_he_IL=
- { "he_IL", "Hebrew - Israel", FALSE, &my_locale_typelib_month_names_he_IL, &my_locale_typelib_ab_month_names_he_IL, &my_locale_typelib_day_names_he_IL, &my_locale_typelib_ab_day_names_he_IL };
+{
+  24,
+  "he_IL",
+  "Hebrew - Israel",
+  FALSE,
+  &my_locale_typelib_month_names_he_IL,
+  &my_locale_typelib_ab_month_names_he_IL,
+  &my_locale_typelib_day_names_he_IL,
+  &my_locale_typelib_ab_day_names_he_IL
+};
 /***** LOCALE END he_IL *****/
 
 /***** LOCALE BEGIN hi_IN: Hindi - India *****/
@@ -515,7 +702,16 @@ static TYPELIB my_locale_typelib_day_names_hi_IN =
 static TYPELIB my_locale_typelib_ab_day_names_hi_IN = 
  { array_elements(my_locale_ab_day_names_hi_IN)-1, "", my_locale_ab_day_names_hi_IN, NULL };
 MY_LOCALE my_locale_hi_IN=
- { "hi_IN", "Hindi - India", FALSE, &my_locale_typelib_month_names_hi_IN, &my_locale_typelib_ab_month_names_hi_IN, &my_locale_typelib_day_names_hi_IN, &my_locale_typelib_ab_day_names_hi_IN };
+{
+  25,
+  "hi_IN",
+  "Hindi - India",
+  FALSE,
+  &my_locale_typelib_month_names_hi_IN,
+  &my_locale_typelib_ab_month_names_hi_IN,
+  &my_locale_typelib_day_names_hi_IN,
+  &my_locale_typelib_ab_day_names_hi_IN
+};
 /***** LOCALE END hi_IN *****/
 
 /***** LOCALE BEGIN hr_HR: Croatian - Croatia *****/
@@ -536,7 +732,16 @@ static TYPELIB my_locale_typelib_day_names_hr_HR =
 static TYPELIB my_locale_typelib_ab_day_names_hr_HR = 
  { array_elements(my_locale_ab_day_names_hr_HR)-1, "", my_locale_ab_day_names_hr_HR, NULL };
 MY_LOCALE my_locale_hr_HR=
- { "hr_HR", "Croatian - Croatia", FALSE, &my_locale_typelib_month_names_hr_HR, &my_locale_typelib_ab_month_names_hr_HR, &my_locale_typelib_day_names_hr_HR, &my_locale_typelib_ab_day_names_hr_HR };
+{
+  26,
+  "hr_HR",
+  "Croatian - Croatia",
+  FALSE,
+  &my_locale_typelib_month_names_hr_HR,
+  &my_locale_typelib_ab_month_names_hr_HR,
+  &my_locale_typelib_day_names_hr_HR,
+  &my_locale_typelib_ab_day_names_hr_HR
+};
 /***** LOCALE END hr_HR *****/
 
 /***** LOCALE BEGIN hu_HU: Hungarian - Hungary *****/
@@ -557,7 +762,16 @@ static TYPELIB my_locale_typelib_day_names_hu_HU =
 static TYPELIB my_locale_typelib_ab_day_names_hu_HU = 
  { array_elements(my_locale_ab_day_names_hu_HU)-1, "", my_locale_ab_day_names_hu_HU, NULL };
 MY_LOCALE my_locale_hu_HU=
- { "hu_HU", "Hungarian - Hungary", FALSE, &my_locale_typelib_month_names_hu_HU, &my_locale_typelib_ab_month_names_hu_HU, &my_locale_typelib_day_names_hu_HU, &my_locale_typelib_ab_day_names_hu_HU };
+{
+  27,
+  "hu_HU",
+  "Hungarian - Hungary",
+  FALSE,
+  &my_locale_typelib_month_names_hu_HU,
+  &my_locale_typelib_ab_month_names_hu_HU,
+  &my_locale_typelib_day_names_hu_HU,
+  &my_locale_typelib_ab_day_names_hu_HU
+};
 /***** LOCALE END hu_HU *****/
 
 /***** LOCALE BEGIN id_ID: Indonesian - Indonesia *****/
@@ -578,7 +792,16 @@ static TYPELIB my_locale_typelib_day_names_id_ID =
 static TYPELIB my_locale_typelib_ab_day_names_id_ID = 
  { array_elements(my_locale_ab_day_names_id_ID)-1, "", my_locale_ab_day_names_id_ID, NULL };
 MY_LOCALE my_locale_id_ID=
- { "id_ID", "Indonesian - Indonesia", TRUE, &my_locale_typelib_month_names_id_ID, &my_locale_typelib_ab_month_names_id_ID, &my_locale_typelib_day_names_id_ID, &my_locale_typelib_ab_day_names_id_ID };
+{
+  28,
+  "id_ID",
+  "Indonesian - Indonesia",
+  TRUE,
+  &my_locale_typelib_month_names_id_ID,
+  &my_locale_typelib_ab_month_names_id_ID,
+  &my_locale_typelib_day_names_id_ID,
+  &my_locale_typelib_ab_day_names_id_ID
+};
 /***** LOCALE END id_ID *****/
 
 /***** LOCALE BEGIN is_IS: Icelandic - Iceland *****/
@@ -599,7 +822,16 @@ static TYPELIB my_locale_typelib_day_names_is_IS =
 static TYPELIB my_locale_typelib_ab_day_names_is_IS = 
  { array_elements(my_locale_ab_day_names_is_IS)-1, "", my_locale_ab_day_names_is_IS, NULL };
 MY_LOCALE my_locale_is_IS=
- { "is_IS", "Icelandic - Iceland", FALSE, &my_locale_typelib_month_names_is_IS, &my_locale_typelib_ab_month_names_is_IS, &my_locale_typelib_day_names_is_IS, &my_locale_typelib_ab_day_names_is_IS };
+{
+  29,
+  "is_IS",
+  "Icelandic - Iceland",
+  FALSE,
+  &my_locale_typelib_month_names_is_IS,
+  &my_locale_typelib_ab_month_names_is_IS,
+  &my_locale_typelib_day_names_is_IS,
+  &my_locale_typelib_ab_day_names_is_IS
+};
 /***** LOCALE END is_IS *****/
 
 /***** LOCALE BEGIN it_CH: Italian - Switzerland *****/
@@ -620,7 +852,16 @@ static TYPELIB my_locale_typelib_day_names_it_CH =
 static TYPELIB my_locale_typelib_ab_day_names_it_CH = 
  { array_elements(my_locale_ab_day_names_it_CH)-1, "", my_locale_ab_day_names_it_CH, NULL };
 MY_LOCALE my_locale_it_CH=
- { "it_CH", "Italian - Switzerland", FALSE, &my_locale_typelib_month_names_it_CH, &my_locale_typelib_ab_month_names_it_CH, &my_locale_typelib_day_names_it_CH, &my_locale_typelib_ab_day_names_it_CH };
+{
+  30,
+  "it_CH",
+  "Italian - Switzerland",
+  FALSE,
+  &my_locale_typelib_month_names_it_CH,
+  &my_locale_typelib_ab_month_names_it_CH,
+  &my_locale_typelib_day_names_it_CH,
+  &my_locale_typelib_ab_day_names_it_CH
+};
 /***** LOCALE END it_CH *****/
 
 /***** LOCALE BEGIN ja_JP: Japanese - Japan *****/
@@ -641,7 +882,16 @@ static TYPELIB my_locale_typelib_day_names_ja_JP =
 static TYPELIB my_locale_typelib_ab_day_names_ja_JP = 
  { array_elements(my_locale_ab_day_names_ja_JP)-1, "", my_locale_ab_day_names_ja_JP, NULL };
 MY_LOCALE my_locale_ja_JP=
- { "ja_JP", "Japanese - Japan", FALSE, &my_locale_typelib_month_names_ja_JP, &my_locale_typelib_ab_month_names_ja_JP, &my_locale_typelib_day_names_ja_JP, &my_locale_typelib_ab_day_names_ja_JP };
+{
+  2,
+  "ja_JP",
+  "Japanese - Japan",
+  FALSE,
+  &my_locale_typelib_month_names_ja_JP,
+  &my_locale_typelib_ab_month_names_ja_JP,
+  &my_locale_typelib_day_names_ja_JP,
+  &my_locale_typelib_ab_day_names_ja_JP
+};
 /***** LOCALE END ja_JP *****/
 
 /***** LOCALE BEGIN ko_KR: Korean - Korea *****/
@@ -662,7 +912,16 @@ static TYPELIB my_locale_typelib_day_names_ko_KR =
 static TYPELIB my_locale_typelib_ab_day_names_ko_KR = 
  { array_elements(my_locale_ab_day_names_ko_KR)-1, "", my_locale_ab_day_names_ko_KR, NULL };
 MY_LOCALE my_locale_ko_KR=
- { "ko_KR", "Korean - Korea", FALSE, &my_locale_typelib_month_names_ko_KR, &my_locale_typelib_ab_month_names_ko_KR, &my_locale_typelib_day_names_ko_KR, &my_locale_typelib_ab_day_names_ko_KR };
+{
+  31,
+  "ko_KR",
+  "Korean - Korea",
+  FALSE,
+  &my_locale_typelib_month_names_ko_KR,
+  &my_locale_typelib_ab_month_names_ko_KR,
+  &my_locale_typelib_day_names_ko_KR,
+  &my_locale_typelib_ab_day_names_ko_KR
+};
 /***** LOCALE END ko_KR *****/
 
 /***** LOCALE BEGIN lt_LT: Lithuanian - Lithuania *****/
@@ -683,7 +942,16 @@ static TYPELIB my_locale_typelib_day_names_lt_LT =
 static TYPELIB my_locale_typelib_ab_day_names_lt_LT = 
  { array_elements(my_locale_ab_day_names_lt_LT)-1, "", my_locale_ab_day_names_lt_LT, NULL };
 MY_LOCALE my_locale_lt_LT=
- { "lt_LT", "Lithuanian - Lithuania", FALSE, &my_locale_typelib_month_names_lt_LT, &my_locale_typelib_ab_month_names_lt_LT, &my_locale_typelib_day_names_lt_LT, &my_locale_typelib_ab_day_names_lt_LT };
+{
+  32,
+  "lt_LT",
+  "Lithuanian - Lithuania",
+  FALSE,
+  &my_locale_typelib_month_names_lt_LT,
+  &my_locale_typelib_ab_month_names_lt_LT,
+  &my_locale_typelib_day_names_lt_LT,
+  &my_locale_typelib_ab_day_names_lt_LT
+};
 /***** LOCALE END lt_LT *****/
 
 /***** LOCALE BEGIN lv_LV: Latvian - Latvia *****/
@@ -704,7 +972,16 @@ static TYPELIB my_locale_typelib_day_names_lv_LV =
 static TYPELIB my_locale_typelib_ab_day_names_lv_LV = 
  { array_elements(my_locale_ab_day_names_lv_LV)-1, "", my_locale_ab_day_names_lv_LV, NULL };
 MY_LOCALE my_locale_lv_LV=
- { "lv_LV", "Latvian - Latvia", FALSE, &my_locale_typelib_month_names_lv_LV, &my_locale_typelib_ab_month_names_lv_LV, &my_locale_typelib_day_names_lv_LV, &my_locale_typelib_ab_day_names_lv_LV };
+{
+  33,
+  "lv_LV",
+  "Latvian - Latvia",
+  FALSE,
+  &my_locale_typelib_month_names_lv_LV,
+  &my_locale_typelib_ab_month_names_lv_LV,
+  &my_locale_typelib_day_names_lv_LV,
+  &my_locale_typelib_ab_day_names_lv_LV
+};
 /***** LOCALE END lv_LV *****/
 
 /***** LOCALE BEGIN mk_MK: Macedonian - FYROM *****/
@@ -725,7 +1002,16 @@ static TYPELIB my_locale_typelib_day_names_mk_MK =
 static TYPELIB my_locale_typelib_ab_day_names_mk_MK = 
  { array_elements(my_locale_ab_day_names_mk_MK)-1, "", my_locale_ab_day_names_mk_MK, NULL };
 MY_LOCALE my_locale_mk_MK=
- { "mk_MK", "Macedonian - FYROM", FALSE, &my_locale_typelib_month_names_mk_MK, &my_locale_typelib_ab_month_names_mk_MK, &my_locale_typelib_day_names_mk_MK, &my_locale_typelib_ab_day_names_mk_MK };
+{
+  34,
+  "mk_MK",
+  "Macedonian - FYROM",
+  FALSE,
+  &my_locale_typelib_month_names_mk_MK,
+  &my_locale_typelib_ab_month_names_mk_MK,
+  &my_locale_typelib_day_names_mk_MK,
+  &my_locale_typelib_ab_day_names_mk_MK
+};
 /***** LOCALE END mk_MK *****/
 
 /***** LOCALE BEGIN mn_MN: Mongolia - Mongolian *****/
@@ -746,7 +1032,16 @@ static TYPELIB my_locale_typelib_day_names_mn_MN =
 static TYPELIB my_locale_typelib_ab_day_names_mn_MN = 
  { array_elements(my_locale_ab_day_names_mn_MN)-1, "", my_locale_ab_day_names_mn_MN, NULL };
 MY_LOCALE my_locale_mn_MN=
- { "mn_MN", "Mongolia - Mongolian", FALSE, &my_locale_typelib_month_names_mn_MN, &my_locale_typelib_ab_month_names_mn_MN, &my_locale_typelib_day_names_mn_MN, &my_locale_typelib_ab_day_names_mn_MN };
+{
+  35,
+  "mn_MN",
+  "Mongolia - Mongolian",
+  FALSE,
+  &my_locale_typelib_month_names_mn_MN,
+  &my_locale_typelib_ab_month_names_mn_MN,
+  &my_locale_typelib_day_names_mn_MN,
+  &my_locale_typelib_ab_day_names_mn_MN
+};
 /***** LOCALE END mn_MN *****/
 
 /***** LOCALE BEGIN ms_MY: Malay - Malaysia *****/
@@ -767,7 +1062,16 @@ static TYPELIB my_locale_typelib_day_names_ms_MY =
 static TYPELIB my_locale_typelib_ab_day_names_ms_MY = 
  { array_elements(my_locale_ab_day_names_ms_MY)-1, "", my_locale_ab_day_names_ms_MY, NULL };
 MY_LOCALE my_locale_ms_MY=
- { "ms_MY", "Malay - Malaysia", TRUE, &my_locale_typelib_month_names_ms_MY, &my_locale_typelib_ab_month_names_ms_MY, &my_locale_typelib_day_names_ms_MY, &my_locale_typelib_ab_day_names_ms_MY };
+{
+  36,
+  "ms_MY",
+  "Malay - Malaysia",
+  TRUE,
+  &my_locale_typelib_month_names_ms_MY,
+  &my_locale_typelib_ab_month_names_ms_MY,
+  &my_locale_typelib_day_names_ms_MY,
+  &my_locale_typelib_ab_day_names_ms_MY
+};
 /***** LOCALE END ms_MY *****/
 
 /***** LOCALE BEGIN nb_NO: Norwegian(Bokml) - Norway *****/
@@ -788,7 +1092,16 @@ static TYPELIB my_locale_typelib_day_names_nb_NO =
 static TYPELIB my_locale_typelib_ab_day_names_nb_NO = 
  { array_elements(my_locale_ab_day_names_nb_NO)-1, "", my_locale_ab_day_names_nb_NO, NULL };
 MY_LOCALE my_locale_nb_NO=
- { "nb_NO", "Norwegian(Bokml) - Norway", FALSE, &my_locale_typelib_month_names_nb_NO, &my_locale_typelib_ab_month_names_nb_NO, &my_locale_typelib_day_names_nb_NO, &my_locale_typelib_ab_day_names_nb_NO };
+{
+  37,
+  "nb_NO",
+  "Norwegian(Bokml) - Norway",
+  FALSE,
+  &my_locale_typelib_month_names_nb_NO,
+  &my_locale_typelib_ab_month_names_nb_NO,
+  &my_locale_typelib_day_names_nb_NO,
+  &my_locale_typelib_ab_day_names_nb_NO
+};
 /***** LOCALE END nb_NO *****/
 
 /***** LOCALE BEGIN nl_NL: Dutch - The Netherlands *****/
@@ -809,7 +1122,16 @@ static TYPELIB my_locale_typelib_day_names_nl_NL =
 static TYPELIB my_locale_typelib_ab_day_names_nl_NL = 
  { array_elements(my_locale_ab_day_names_nl_NL)-1, "", my_locale_ab_day_names_nl_NL, NULL };
 MY_LOCALE my_locale_nl_NL=
- { "nl_NL", "Dutch - The Netherlands", TRUE, &my_locale_typelib_month_names_nl_NL, &my_locale_typelib_ab_month_names_nl_NL, &my_locale_typelib_day_names_nl_NL, &my_locale_typelib_ab_day_names_nl_NL };
+{
+  38,
+  "nl_NL",
+  "Dutch - The Netherlands",
+  TRUE,
+  &my_locale_typelib_month_names_nl_NL,
+  &my_locale_typelib_ab_month_names_nl_NL,
+  &my_locale_typelib_day_names_nl_NL,
+  &my_locale_typelib_ab_day_names_nl_NL
+};
 /***** LOCALE END nl_NL *****/
 
 /***** LOCALE BEGIN pl_PL: Polish - Poland *****/
@@ -830,7 +1152,16 @@ static TYPELIB my_locale_typelib_day_names_pl_PL =
 static TYPELIB my_locale_typelib_ab_day_names_pl_PL = 
  { array_elements(my_locale_ab_day_names_pl_PL)-1, "", my_locale_ab_day_names_pl_PL, NULL };
 MY_LOCALE my_locale_pl_PL=
- { "pl_PL", "Polish - Poland", FALSE, &my_locale_typelib_month_names_pl_PL, &my_locale_typelib_ab_month_names_pl_PL, &my_locale_typelib_day_names_pl_PL, &my_locale_typelib_ab_day_names_pl_PL };
+{
+  39,
+  "pl_PL",
+  "Polish - Poland",
+  FALSE,
+  &my_locale_typelib_month_names_pl_PL,
+  &my_locale_typelib_ab_month_names_pl_PL,
+  &my_locale_typelib_day_names_pl_PL,
+  &my_locale_typelib_ab_day_names_pl_PL
+};
 /***** LOCALE END pl_PL *****/
 
 /***** LOCALE BEGIN pt_BR: Portugese - Brazil *****/
@@ -851,7 +1182,16 @@ static TYPELIB my_locale_typelib_day_names_pt_BR =
 static TYPELIB my_locale_typelib_ab_day_names_pt_BR = 
  { array_elements(my_locale_ab_day_names_pt_BR)-1, "", my_locale_ab_day_names_pt_BR, NULL };
 MY_LOCALE my_locale_pt_BR=
- { "pt_BR", "Portugese - Brazil", FALSE, &my_locale_typelib_month_names_pt_BR, &my_locale_typelib_ab_month_names_pt_BR, &my_locale_typelib_day_names_pt_BR, &my_locale_typelib_ab_day_names_pt_BR };
+{
+  40,
+  "pt_BR",
+  "Portugese - Brazil",
+  FALSE,
+  &my_locale_typelib_month_names_pt_BR,
+  &my_locale_typelib_ab_month_names_pt_BR,
+  &my_locale_typelib_day_names_pt_BR,
+  &my_locale_typelib_ab_day_names_pt_BR
+};
 /***** LOCALE END pt_BR *****/
 
 /***** LOCALE BEGIN pt_PT: Portugese - Portugal *****/
@@ -872,7 +1212,16 @@ static TYPELIB my_locale_typelib_day_names_pt_PT =
 static TYPELIB my_locale_typelib_ab_day_names_pt_PT = 
  { array_elements(my_locale_ab_day_names_pt_PT)-1, "", my_locale_ab_day_names_pt_PT, NULL };
 MY_LOCALE my_locale_pt_PT=
- { "pt_PT", "Portugese - Portugal", FALSE, &my_locale_typelib_month_names_pt_PT, &my_locale_typelib_ab_month_names_pt_PT, &my_locale_typelib_day_names_pt_PT, &my_locale_typelib_ab_day_names_pt_PT };
+{
+  41,
+  "pt_PT",
+  "Portugese - Portugal",
+  FALSE,
+  &my_locale_typelib_month_names_pt_PT,
+  &my_locale_typelib_ab_month_names_pt_PT,
+  &my_locale_typelib_day_names_pt_PT,
+  &my_locale_typelib_ab_day_names_pt_PT
+};
 /***** LOCALE END pt_PT *****/
 
 /***** LOCALE BEGIN ro_RO: Romanian - Romania *****/
@@ -893,7 +1242,16 @@ static TYPELIB my_locale_typelib_day_names_ro_RO =
 static TYPELIB my_locale_typelib_ab_day_names_ro_RO = 
  { array_elements(my_locale_ab_day_names_ro_RO)-1, "", my_locale_ab_day_names_ro_RO, NULL };
 MY_LOCALE my_locale_ro_RO=
- { "ro_RO", "Romanian - Romania", FALSE, &my_locale_typelib_month_names_ro_RO, &my_locale_typelib_ab_month_names_ro_RO, &my_locale_typelib_day_names_ro_RO, &my_locale_typelib_ab_day_names_ro_RO };
+{
+  42,
+  "ro_RO",
+  "Romanian - Romania",
+  FALSE,
+  &my_locale_typelib_month_names_ro_RO,
+  &my_locale_typelib_ab_month_names_ro_RO,
+  &my_locale_typelib_day_names_ro_RO,
+  &my_locale_typelib_ab_day_names_ro_RO
+};
 /***** LOCALE END ro_RO *****/
 
 /***** LOCALE BEGIN ru_RU: Russian - Russia *****/
@@ -914,7 +1272,16 @@ static TYPELIB my_locale_typelib_day_names_ru_RU =
 static TYPELIB my_locale_typelib_ab_day_names_ru_RU = 
  { array_elements(my_locale_ab_day_names_ru_RU)-1, "", my_locale_ab_day_names_ru_RU, NULL };
 MY_LOCALE my_locale_ru_RU=
- { "ru_RU", "Russian - Russia", FALSE, &my_locale_typelib_month_names_ru_RU, &my_locale_typelib_ab_month_names_ru_RU, &my_locale_typelib_day_names_ru_RU, &my_locale_typelib_ab_day_names_ru_RU };
+{
+  43,
+  "ru_RU",
+  "Russian - Russia",
+  FALSE,
+  &my_locale_typelib_month_names_ru_RU,
+  &my_locale_typelib_ab_month_names_ru_RU,
+  &my_locale_typelib_day_names_ru_RU,
+  &my_locale_typelib_ab_day_names_ru_RU
+};
 /***** LOCALE END ru_RU *****/
 
 /***** LOCALE BEGIN ru_UA: Russian - Ukraine *****/
@@ -935,7 +1302,16 @@ static TYPELIB my_locale_typelib_day_names_ru_UA =
 static TYPELIB my_locale_typelib_ab_day_names_ru_UA = 
  { array_elements(my_locale_ab_day_names_ru_UA)-1, "", my_locale_ab_day_names_ru_UA, NULL };
 MY_LOCALE my_locale_ru_UA=
- { "ru_UA", "Russian - Ukraine", FALSE, &my_locale_typelib_month_names_ru_UA, &my_locale_typelib_ab_month_names_ru_UA, &my_locale_typelib_day_names_ru_UA, &my_locale_typelib_ab_day_names_ru_UA };
+{
+  44,
+  "ru_UA",
+  "Russian - Ukraine",
+  FALSE,
+  &my_locale_typelib_month_names_ru_UA,
+  &my_locale_typelib_ab_month_names_ru_UA,
+  &my_locale_typelib_day_names_ru_UA,
+  &my_locale_typelib_ab_day_names_ru_UA
+};
 /***** LOCALE END ru_UA *****/
 
 /***** LOCALE BEGIN sk_SK: Slovak - Slovakia *****/
@@ -956,7 +1332,16 @@ static TYPELIB my_locale_typelib_day_names_sk_SK =
 static TYPELIB my_locale_typelib_ab_day_names_sk_SK = 
  { array_elements(my_locale_ab_day_names_sk_SK)-1, "", my_locale_ab_day_names_sk_SK, NULL };
 MY_LOCALE my_locale_sk_SK=
- { "sk_SK", "Slovak - Slovakia", FALSE, &my_locale_typelib_month_names_sk_SK, &my_locale_typelib_ab_month_names_sk_SK, &my_locale_typelib_day_names_sk_SK, &my_locale_typelib_ab_day_names_sk_SK };
+{
+  45,
+  "sk_SK",
+  "Slovak - Slovakia",
+  FALSE,
+  &my_locale_typelib_month_names_sk_SK,
+  &my_locale_typelib_ab_month_names_sk_SK,
+  &my_locale_typelib_day_names_sk_SK,
+  &my_locale_typelib_ab_day_names_sk_SK
+};
 /***** LOCALE END sk_SK *****/
 
 /***** LOCALE BEGIN sl_SI: Slovenian - Slovenia *****/
@@ -977,7 +1362,16 @@ static TYPELIB my_locale_typelib_day_names_sl_SI =
 static TYPELIB my_locale_typelib_ab_day_names_sl_SI = 
  { array_elements(my_locale_ab_day_names_sl_SI)-1, "", my_locale_ab_day_names_sl_SI, NULL };
 MY_LOCALE my_locale_sl_SI=
- { "sl_SI", "Slovenian - Slovenia", FALSE, &my_locale_typelib_month_names_sl_SI, &my_locale_typelib_ab_month_names_sl_SI, &my_locale_typelib_day_names_sl_SI, &my_locale_typelib_ab_day_names_sl_SI };
+{
+  46,
+  "sl_SI",
+  "Slovenian - Slovenia",
+  FALSE,
+  &my_locale_typelib_month_names_sl_SI,
+  &my_locale_typelib_ab_month_names_sl_SI,
+  &my_locale_typelib_day_names_sl_SI,
+  &my_locale_typelib_ab_day_names_sl_SI
+};
 /***** LOCALE END sl_SI *****/
 
 /***** LOCALE BEGIN sq_AL: Albanian - Albania *****/
@@ -998,7 +1392,16 @@ static TYPELIB my_locale_typelib_day_names_sq_AL =
 static TYPELIB my_locale_typelib_ab_day_names_sq_AL = 
  { array_elements(my_locale_ab_day_names_sq_AL)-1, "", my_locale_ab_day_names_sq_AL, NULL };
 MY_LOCALE my_locale_sq_AL=
- { "sq_AL", "Albanian - Albania", FALSE, &my_locale_typelib_month_names_sq_AL, &my_locale_typelib_ab_month_names_sq_AL, &my_locale_typelib_day_names_sq_AL, &my_locale_typelib_ab_day_names_sq_AL };
+{
+  47,
+  "sq_AL",
+  "Albanian - Albania",
+  FALSE,
+  &my_locale_typelib_month_names_sq_AL,
+  &my_locale_typelib_ab_month_names_sq_AL,
+  &my_locale_typelib_day_names_sq_AL,
+  &my_locale_typelib_ab_day_names_sq_AL
+};
 /***** LOCALE END sq_AL *****/
 
 /***** LOCALE BEGIN sr_YU: Servian - Yugoslavia *****/
@@ -1019,7 +1422,16 @@ static TYPELIB my_locale_typelib_day_names_sr_YU =
 static TYPELIB my_locale_typelib_ab_day_names_sr_YU = 
  { array_elements(my_locale_ab_day_names_sr_YU)-1, "", my_locale_ab_day_names_sr_YU, NULL };
 MY_LOCALE my_locale_sr_YU=
- { "sr_YU", "Servian - Yugoslavia", FALSE, &my_locale_typelib_month_names_sr_YU, &my_locale_typelib_ab_month_names_sr_YU, &my_locale_typelib_day_names_sr_YU, &my_locale_typelib_ab_day_names_sr_YU };
+{
+  48,
+  "sr_YU",
+  "Servian - Yugoslavia",
+  FALSE,
+  &my_locale_typelib_month_names_sr_YU,
+  &my_locale_typelib_ab_month_names_sr_YU,
+  &my_locale_typelib_day_names_sr_YU,
+  &my_locale_typelib_ab_day_names_sr_YU
+};
 /***** LOCALE END sr_YU *****/
 
 /***** LOCALE BEGIN sv_SE: Swedish - Sweden *****/
@@ -1040,7 +1452,16 @@ static TYPELIB my_locale_typelib_day_names_sv_SE =
 static TYPELIB my_locale_typelib_ab_day_names_sv_SE = 
  { array_elements(my_locale_ab_day_names_sv_SE)-1, "", my_locale_ab_day_names_sv_SE, NULL };
 MY_LOCALE my_locale_sv_SE=
- { "sv_SE", "Swedish - Sweden", FALSE, &my_locale_typelib_month_names_sv_SE, &my_locale_typelib_ab_month_names_sv_SE, &my_locale_typelib_day_names_sv_SE, &my_locale_typelib_ab_day_names_sv_SE };
+{
+  3,
+  "sv_SE",
+  "Swedish - Sweden",
+  FALSE,
+  &my_locale_typelib_month_names_sv_SE,
+  &my_locale_typelib_ab_month_names_sv_SE,
+  &my_locale_typelib_day_names_sv_SE,
+  &my_locale_typelib_ab_day_names_sv_SE
+};
 /***** LOCALE END sv_SE *****/
 
 /***** LOCALE BEGIN ta_IN: Tamil - India *****/
@@ -1061,7 +1482,16 @@ static TYPELIB my_locale_typelib_day_names_ta_IN =
 static TYPELIB my_locale_typelib_ab_day_names_ta_IN = 
  { array_elements(my_locale_ab_day_names_ta_IN)-1, "", my_locale_ab_day_names_ta_IN, NULL };
 MY_LOCALE my_locale_ta_IN=
- { "ta_IN", "Tamil - India", FALSE, &my_locale_typelib_month_names_ta_IN, &my_locale_typelib_ab_month_names_ta_IN, &my_locale_typelib_day_names_ta_IN, &my_locale_typelib_ab_day_names_ta_IN };
+{
+  49,
+  "ta_IN",
+  "Tamil - India",
+  FALSE,
+  &my_locale_typelib_month_names_ta_IN,
+  &my_locale_typelib_ab_month_names_ta_IN,
+  &my_locale_typelib_day_names_ta_IN,
+  &my_locale_typelib_ab_day_names_ta_IN
+};
 /***** LOCALE END ta_IN *****/
 
 /***** LOCALE BEGIN te_IN: Telugu - India *****/
@@ -1082,7 +1512,16 @@ static TYPELIB my_locale_typelib_day_names_te_IN =
 static TYPELIB my_locale_typelib_ab_day_names_te_IN = 
  { array_elements(my_locale_ab_day_names_te_IN)-1, "", my_locale_ab_day_names_te_IN, NULL };
 MY_LOCALE my_locale_te_IN=
- { "te_IN", "Telugu - India", FALSE, &my_locale_typelib_month_names_te_IN, &my_locale_typelib_ab_month_names_te_IN, &my_locale_typelib_day_names_te_IN, &my_locale_typelib_ab_day_names_te_IN };
+{
+  50,
+  "te_IN",
+  "Telugu - India",
+  FALSE,
+  &my_locale_typelib_month_names_te_IN,
+  &my_locale_typelib_ab_month_names_te_IN,
+  &my_locale_typelib_day_names_te_IN,
+  &my_locale_typelib_ab_day_names_te_IN
+};
 /***** LOCALE END te_IN *****/
 
 /***** LOCALE BEGIN th_TH: Thai - Thailand *****/
@@ -1103,7 +1542,16 @@ static TYPELIB my_locale_typelib_day_names_th_TH =
 static TYPELIB my_locale_typelib_ab_day_names_th_TH = 
  { array_elements(my_locale_ab_day_names_th_TH)-1, "", my_locale_ab_day_names_th_TH, NULL };
 MY_LOCALE my_locale_th_TH=
- { "th_TH", "Thai - Thailand", FALSE, &my_locale_typelib_month_names_th_TH, &my_locale_typelib_ab_month_names_th_TH, &my_locale_typelib_day_names_th_TH, &my_locale_typelib_ab_day_names_th_TH };
+{
+  51,
+  "th_TH",
+  "Thai - Thailand",
+  FALSE,
+  &my_locale_typelib_month_names_th_TH,
+  &my_locale_typelib_ab_month_names_th_TH,
+  &my_locale_typelib_day_names_th_TH,
+  &my_locale_typelib_ab_day_names_th_TH
+};
 /***** LOCALE END th_TH *****/
 
 /***** LOCALE BEGIN tr_TR: Turkish - Turkey *****/
@@ -1124,7 +1572,16 @@ static TYPELIB my_locale_typelib_day_names_tr_TR =
 static TYPELIB my_locale_typelib_ab_day_names_tr_TR = 
  { array_elements(my_locale_ab_day_names_tr_TR)-1, "", my_locale_ab_day_names_tr_TR, NULL };
 MY_LOCALE my_locale_tr_TR=
- { "tr_TR", "Turkish - Turkey", FALSE, &my_locale_typelib_month_names_tr_TR, &my_locale_typelib_ab_month_names_tr_TR, &my_locale_typelib_day_names_tr_TR, &my_locale_typelib_ab_day_names_tr_TR };
+{
+  52,
+  "tr_TR",
+  "Turkish - Turkey",
+  FALSE,
+  &my_locale_typelib_month_names_tr_TR,
+  &my_locale_typelib_ab_month_names_tr_TR,
+  &my_locale_typelib_day_names_tr_TR,
+  &my_locale_typelib_ab_day_names_tr_TR
+};
 /***** LOCALE END tr_TR *****/
 
 /***** LOCALE BEGIN uk_UA: Ukrainian - Ukraine *****/
@@ -1145,7 +1602,16 @@ static TYPELIB my_locale_typelib_day_names_uk_UA =
 static TYPELIB my_locale_typelib_ab_day_names_uk_UA = 
  { array_elements(my_locale_ab_day_names_uk_UA)-1, "", my_locale_ab_day_names_uk_UA, NULL };
 MY_LOCALE my_locale_uk_UA=
- { "uk_UA", "Ukrainian - Ukraine", FALSE, &my_locale_typelib_month_names_uk_UA, &my_locale_typelib_ab_month_names_uk_UA, &my_locale_typelib_day_names_uk_UA, &my_locale_typelib_ab_day_names_uk_UA };
+{
+  53,
+  "uk_UA",
+  "Ukrainian - Ukraine",
+  FALSE,
+  &my_locale_typelib_month_names_uk_UA,
+  &my_locale_typelib_ab_month_names_uk_UA,
+  &my_locale_typelib_day_names_uk_UA,
+  &my_locale_typelib_ab_day_names_uk_UA
+};
 /***** LOCALE END uk_UA *****/
 
 /***** LOCALE BEGIN ur_PK: Urdu - Pakistan *****/
@@ -1166,7 +1632,16 @@ static TYPELIB my_locale_typelib_day_names_ur_PK =
 static TYPELIB my_locale_typelib_ab_day_names_ur_PK = 
  { array_elements(my_locale_ab_day_names_ur_PK)-1, "", my_locale_ab_day_names_ur_PK, NULL };
 MY_LOCALE my_locale_ur_PK=
- { "ur_PK", "Urdu - Pakistan", FALSE, &my_locale_typelib_month_names_ur_PK, &my_locale_typelib_ab_month_names_ur_PK, &my_locale_typelib_day_names_ur_PK, &my_locale_typelib_ab_day_names_ur_PK };
+{
+  54,
+  "ur_PK",
+  "Urdu - Pakistan",
+  FALSE,
+  &my_locale_typelib_month_names_ur_PK,
+  &my_locale_typelib_ab_month_names_ur_PK,
+  &my_locale_typelib_day_names_ur_PK,
+  &my_locale_typelib_ab_day_names_ur_PK
+};
 /***** LOCALE END ur_PK *****/
 
 /***** LOCALE BEGIN vi_VN: Vietnamese - Vietnam *****/
@@ -1187,7 +1662,16 @@ static TYPELIB my_locale_typelib_day_names_vi_VN =
 static TYPELIB my_locale_typelib_ab_day_names_vi_VN = 
  { array_elements(my_locale_ab_day_names_vi_VN)-1, "", my_locale_ab_day_names_vi_VN, NULL };
 MY_LOCALE my_locale_vi_VN=
- { "vi_VN", "Vietnamese - Vietnam", FALSE, &my_locale_typelib_month_names_vi_VN, &my_locale_typelib_ab_month_names_vi_VN, &my_locale_typelib_day_names_vi_VN, &my_locale_typelib_ab_day_names_vi_VN };
+{
+  55,
+  "vi_VN",
+  "Vietnamese - Vietnam",
+  FALSE,
+  &my_locale_typelib_month_names_vi_VN,
+  &my_locale_typelib_ab_month_names_vi_VN,
+  &my_locale_typelib_day_names_vi_VN,
+  &my_locale_typelib_ab_day_names_vi_VN
+};
 /***** LOCALE END vi_VN *****/
 
 /***** LOCALE BEGIN zh_CN: Chinese - Peoples Republic of China *****/
@@ -1208,7 +1692,16 @@ static TYPELIB my_locale_typelib_day_names_zh_CN =
 static TYPELIB my_locale_typelib_ab_day_names_zh_CN = 
  { array_elements(my_locale_ab_day_names_zh_CN)-1, "", my_locale_ab_day_names_zh_CN, NULL };
 MY_LOCALE my_locale_zh_CN=
- { "zh_CN", "Chinese - Peoples Republic of China", FALSE, &my_locale_typelib_month_names_zh_CN, &my_locale_typelib_ab_month_names_zh_CN, &my_locale_typelib_day_names_zh_CN, &my_locale_typelib_ab_day_names_zh_CN };
+{
+  56,
+  "zh_CN",
+  "Chinese - Peoples Republic of China",
+  FALSE,
+  &my_locale_typelib_month_names_zh_CN,
+  &my_locale_typelib_ab_month_names_zh_CN,
+  &my_locale_typelib_day_names_zh_CN,
+  &my_locale_typelib_ab_day_names_zh_CN
+};
 /***** LOCALE END zh_CN *****/
 
 /***** LOCALE BEGIN zh_TW: Chinese - Taiwan *****/
@@ -1229,269 +1722,753 @@ static TYPELIB my_locale_typelib_day_names_zh_TW =
 static TYPELIB my_locale_typelib_ab_day_names_zh_TW = 
  { array_elements(my_locale_ab_day_names_zh_TW)-1, "", my_locale_ab_day_names_zh_TW, NULL };
 MY_LOCALE my_locale_zh_TW=
- { "zh_TW", "Chinese - Taiwan", FALSE, &my_locale_typelib_month_names_zh_TW, &my_locale_typelib_ab_month_names_zh_TW, &my_locale_typelib_day_names_zh_TW, &my_locale_typelib_ab_day_names_zh_TW };
+{
+  57,
+  "zh_TW",
+  "Chinese - Taiwan",
+  FALSE,
+  &my_locale_typelib_month_names_zh_TW,
+  &my_locale_typelib_ab_month_names_zh_TW,
+  &my_locale_typelib_day_names_zh_TW,
+  &my_locale_typelib_ab_day_names_zh_TW
+};
 /***** LOCALE END zh_TW *****/
 
 /***** LOCALE BEGIN ar_DZ: Arabic - Algeria *****/
 MY_LOCALE my_locale_ar_DZ=
- { "ar_DZ", "Arabic - Algeria", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+{
+  58,
+  "ar_DZ",
+  "Arabic - Algeria",
+  FALSE,
+  &my_locale_typelib_month_names_ar_BH,
+  &my_locale_typelib_ab_month_names_ar_BH,
+  &my_locale_typelib_day_names_ar_BH,
+  &my_locale_typelib_ab_day_names_ar_BH
+};
 /***** LOCALE END ar_DZ *****/
 
 /***** LOCALE BEGIN ar_EG: Arabic - Egypt *****/
 MY_LOCALE my_locale_ar_EG=
- { "ar_EG", "Arabic - Egypt", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+{
+  59,
+  "ar_EG",
+  "Arabic - Egypt",
+  FALSE,
+  &my_locale_typelib_month_names_ar_BH,
+  &my_locale_typelib_ab_month_names_ar_BH,
+  &my_locale_typelib_day_names_ar_BH,
+  &my_locale_typelib_ab_day_names_ar_BH
+};
 /***** LOCALE END ar_EG *****/
 
 /***** LOCALE BEGIN ar_IN: Arabic - Iran *****/
 MY_LOCALE my_locale_ar_IN=
- { "ar_IN", "Arabic - Iran", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+{
+  60,
+  "ar_IN",
+  "Arabic - Iran",
+  FALSE,
+  &my_locale_typelib_month_names_ar_BH,
+  &my_locale_typelib_ab_month_names_ar_BH,
+  &my_locale_typelib_day_names_ar_BH,
+  &my_locale_typelib_ab_day_names_ar_BH
+};
 /***** LOCALE END ar_IN *****/
 
 /***** LOCALE BEGIN ar_IQ: Arabic - Iraq *****/
 MY_LOCALE my_locale_ar_IQ=
- { "ar_IQ", "Arabic - Iraq", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+{
+  61,
+  "ar_IQ",
+  "Arabic - Iraq",
+  FALSE,
+  &my_locale_typelib_month_names_ar_BH,
+  &my_locale_typelib_ab_month_names_ar_BH,
+  &my_locale_typelib_day_names_ar_BH,
+  &my_locale_typelib_ab_day_names_ar_BH
+};
 /***** LOCALE END ar_IQ *****/
 
 /***** LOCALE BEGIN ar_KW: Arabic - Kuwait *****/
 MY_LOCALE my_locale_ar_KW=
- { "ar_KW", "Arabic - Kuwait", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+{
+  62,
+  "ar_KW",
+  "Arabic - Kuwait",
+  FALSE,
+  &my_locale_typelib_month_names_ar_BH,
+  &my_locale_typelib_ab_month_names_ar_BH,
+  &my_locale_typelib_day_names_ar_BH,
+  &my_locale_typelib_ab_day_names_ar_BH
+};
 /***** LOCALE END ar_KW *****/
 
 /***** LOCALE BEGIN ar_LB: Arabic - Lebanon *****/
 MY_LOCALE my_locale_ar_LB=
- { "ar_LB", "Arabic - Lebanon", FALSE, &my_locale_typelib_month_names_ar_JO, &my_locale_typelib_ab_month_names_ar_JO, &my_locale_typelib_day_names_ar_JO, &my_locale_typelib_ab_day_names_ar_JO };
+{
+  63,
+  "ar_LB",
+  "Arabic - Lebanon",
+  FALSE,
+  &my_locale_typelib_month_names_ar_JO,
+  &my_locale_typelib_ab_month_names_ar_JO,
+  &my_locale_typelib_day_names_ar_JO,
+  &my_locale_typelib_ab_day_names_ar_JO
+};
 /***** LOCALE END ar_LB *****/
 
 /***** LOCALE BEGIN ar_LY: Arabic - Libya *****/
 MY_LOCALE my_locale_ar_LY=
- { "ar_LY", "Arabic - Libya", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+{
+  64,
+  "ar_LY",
+  "Arabic - Libya",
+  FALSE,
+  &my_locale_typelib_month_names_ar_BH,
+  &my_locale_typelib_ab_month_names_ar_BH,
+  &my_locale_typelib_day_names_ar_BH,
+  &my_locale_typelib_ab_day_names_ar_BH
+};
 /***** LOCALE END ar_LY *****/
 
 /***** LOCALE BEGIN ar_MA: Arabic - Morocco *****/
 MY_LOCALE my_locale_ar_MA=
- { "ar_MA", "Arabic - Morocco", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+{
+  65,
+  "ar_MA",
+  "Arabic - Morocco",
+  FALSE,
+  &my_locale_typelib_month_names_ar_BH,
+  &my_locale_typelib_ab_month_names_ar_BH,
+  &my_locale_typelib_day_names_ar_BH,
+  &my_locale_typelib_ab_day_names_ar_BH
+};
 /***** LOCALE END ar_MA *****/
 
 /***** LOCALE BEGIN ar_OM: Arabic - Oman *****/
 MY_LOCALE my_locale_ar_OM=
- { "ar_OM", "Arabic - Oman", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+{
+  66,
+  "ar_OM",
+  "Arabic - Oman",
+  FALSE,
+  &my_locale_typelib_month_names_ar_BH,
+  &my_locale_typelib_ab_month_names_ar_BH,
+  &my_locale_typelib_day_names_ar_BH,
+  &my_locale_typelib_ab_day_names_ar_BH
+};
 /***** LOCALE END ar_OM *****/
 
 /***** LOCALE BEGIN ar_QA: Arabic - Qatar *****/
 MY_LOCALE my_locale_ar_QA=
- { "ar_QA", "Arabic - Qatar", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+{
+  67,
+  "ar_QA",
+  "Arabic - Qatar",
+  FALSE,
+  &my_locale_typelib_month_names_ar_BH,
+  &my_locale_typelib_ab_month_names_ar_BH,
+  &my_locale_typelib_day_names_ar_BH,
+  &my_locale_typelib_ab_day_names_ar_BH
+};
 /***** LOCALE END ar_QA *****/
 
 /***** LOCALE BEGIN ar_SD: Arabic - Sudan *****/
 MY_LOCALE my_locale_ar_SD=
- { "ar_SD", "Arabic - Sudan", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+{
+  68,
+  "ar_SD",
+  "Arabic - Sudan",
+  FALSE,
+  &my_locale_typelib_month_names_ar_BH,
+  &my_locale_typelib_ab_month_names_ar_BH,
+  &my_locale_typelib_day_names_ar_BH,
+  &my_locale_typelib_ab_day_names_ar_BH
+};
 /***** LOCALE END ar_SD *****/
 
 /***** LOCALE BEGIN ar_TN: Arabic - Tunisia *****/
 MY_LOCALE my_locale_ar_TN=
- { "ar_TN", "Arabic - Tunisia", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+{
+  69,
+  "ar_TN",
+  "Arabic - Tunisia",
+  FALSE,
+  &my_locale_typelib_month_names_ar_BH,
+  &my_locale_typelib_ab_month_names_ar_BH,
+  &my_locale_typelib_day_names_ar_BH,
+  &my_locale_typelib_ab_day_names_ar_BH
+};
 /***** LOCALE END ar_TN *****/
 
 /***** LOCALE BEGIN ar_YE: Arabic - Yemen *****/
 MY_LOCALE my_locale_ar_YE=
- { "ar_YE", "Arabic - Yemen", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+{
+  70,
+  "ar_YE",
+  "Arabic - Yemen",
+  FALSE,
+  &my_locale_typelib_month_names_ar_BH,
+  &my_locale_typelib_ab_month_names_ar_BH,
+  &my_locale_typelib_day_names_ar_BH,
+  &my_locale_typelib_ab_day_names_ar_BH
+};
 /***** LOCALE END ar_YE *****/
 
 /***** LOCALE BEGIN de_BE: German - Belgium *****/
 MY_LOCALE my_locale_de_BE=
- { "de_BE", "German - Belgium", FALSE, &my_locale_typelib_month_names_de_DE, &my_locale_typelib_ab_month_names_de_DE, &my_locale_typelib_day_names_de_DE, &my_locale_typelib_ab_day_names_de_DE };
+{
+  71,
+  "de_BE",
+  "German - Belgium",
+  FALSE,
+  &my_locale_typelib_month_names_de_DE,
+  &my_locale_typelib_ab_month_names_de_DE,
+  &my_locale_typelib_day_names_de_DE,
+  &my_locale_typelib_ab_day_names_de_DE
+};
 /***** LOCALE END de_BE *****/
 
 /***** LOCALE BEGIN de_CH: German - Switzerland *****/
 MY_LOCALE my_locale_de_CH=
- { "de_CH", "German - Switzerland", FALSE, &my_locale_typelib_month_names_de_DE, &my_locale_typelib_ab_month_names_de_DE, &my_locale_typelib_day_names_de_DE, &my_locale_typelib_ab_day_names_de_DE };
+{
+  72,
+  "de_CH",
+  "German - Switzerland",
+  FALSE,
+  &my_locale_typelib_month_names_de_DE,
+  &my_locale_typelib_ab_month_names_de_DE,
+  &my_locale_typelib_day_names_de_DE,
+  &my_locale_typelib_ab_day_names_de_DE
+};
 /***** LOCALE END de_CH *****/
 
 /***** LOCALE BEGIN de_LU: German - Luxembourg *****/
 MY_LOCALE my_locale_de_LU=
- { "de_LU", "German - Luxembourg", FALSE, &my_locale_typelib_month_names_de_DE, &my_locale_typelib_ab_month_names_de_DE, &my_locale_typelib_day_names_de_DE, &my_locale_typelib_ab_day_names_de_DE };
+{
+  73,
+  "de_LU",
+  "German - Luxembourg",
+  FALSE,
+  &my_locale_typelib_month_names_de_DE,
+  &my_locale_typelib_ab_month_names_de_DE,
+  &my_locale_typelib_day_names_de_DE,
+  &my_locale_typelib_ab_day_names_de_DE
+};
 /***** LOCALE END de_LU *****/
 
 /***** LOCALE BEGIN en_AU: English - Australia *****/
 MY_LOCALE my_locale_en_AU=
- { "en_AU", "English - Australia", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+{
+  74,
+  "en_AU",
+  "English - Australia",
+  TRUE,
+  &my_locale_typelib_month_names_en_US,
+  &my_locale_typelib_ab_month_names_en_US,
+  &my_locale_typelib_day_names_en_US,
+  &my_locale_typelib_ab_day_names_en_US
+};
 /***** LOCALE END en_AU *****/
 
 /***** LOCALE BEGIN en_CA: English - Canada *****/
 MY_LOCALE my_locale_en_CA=
- { "en_CA", "English - Canada", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+{
+  75,
+  "en_CA",
+  "English - Canada",
+  TRUE,
+  &my_locale_typelib_month_names_en_US,
+  &my_locale_typelib_ab_month_names_en_US,
+  &my_locale_typelib_day_names_en_US,
+  &my_locale_typelib_ab_day_names_en_US
+};
 /***** LOCALE END en_CA *****/
 
 /***** LOCALE BEGIN en_GB: English - United Kingdom *****/
 MY_LOCALE my_locale_en_GB=
- { "en_GB", "English - United Kingdom", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+{
+  1,
+  "en_GB",
+  "English - United Kingdom",
+  TRUE,
+  &my_locale_typelib_month_names_en_US,
+  &my_locale_typelib_ab_month_names_en_US,
+  &my_locale_typelib_day_names_en_US,
+  &my_locale_typelib_ab_day_names_en_US
+};
 /***** LOCALE END en_GB *****/
 
 /***** LOCALE BEGIN en_IN: English - India *****/
 MY_LOCALE my_locale_en_IN=
- { "en_IN", "English - India", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+{
+  76,
+  "en_IN",
+  "English - India",
+  TRUE,
+  &my_locale_typelib_month_names_en_US,
+  &my_locale_typelib_ab_month_names_en_US,
+  &my_locale_typelib_day_names_en_US,
+  &my_locale_typelib_ab_day_names_en_US
+};
 /***** LOCALE END en_IN *****/
 
 /***** LOCALE BEGIN en_NZ: English - New Zealand *****/
 MY_LOCALE my_locale_en_NZ=
- { "en_NZ", "English - New Zealand", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+{
+  77,
+  "en_NZ",
+  "English - New Zealand",
+  TRUE,
+  &my_locale_typelib_month_names_en_US,
+  &my_locale_typelib_ab_month_names_en_US,
+  &my_locale_typelib_day_names_en_US,
+  &my_locale_typelib_ab_day_names_en_US
+};
 /***** LOCALE END en_NZ *****/
 
 /***** LOCALE BEGIN en_PH: English - Philippines *****/
 MY_LOCALE my_locale_en_PH=
- { "en_PH", "English - Philippines", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+{
+  78,
+  "en_PH",
+  "English - Philippines",
+  TRUE,
+  &my_locale_typelib_month_names_en_US,
+  &my_locale_typelib_ab_month_names_en_US,
+  &my_locale_typelib_day_names_en_US,
+  &my_locale_typelib_ab_day_names_en_US
+};
 /***** LOCALE END en_PH *****/
 
 /***** LOCALE BEGIN en_ZA: English - South Africa *****/
 MY_LOCALE my_locale_en_ZA=
- { "en_ZA", "English - South Africa", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+{
+  79,
+  "en_ZA",
+  "English - South Africa",
+  TRUE,
+  &my_locale_typelib_month_names_en_US,
+  &my_locale_typelib_ab_month_names_en_US,
+  &my_locale_typelib_day_names_en_US,
+  &my_locale_typelib_ab_day_names_en_US
+};
 /***** LOCALE END en_ZA *****/
 
 /***** LOCALE BEGIN en_ZW: English - Zimbabwe *****/
 MY_LOCALE my_locale_en_ZW=
- { "en_ZW", "English - Zimbabwe", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+{
+  80,
+  "en_ZW",
+  "English - Zimbabwe",
+  TRUE,
+  &my_locale_typelib_month_names_en_US,
+  &my_locale_typelib_ab_month_names_en_US,
+  &my_locale_typelib_day_names_en_US,
+  &my_locale_typelib_ab_day_names_en_US
+};
 /***** LOCALE END en_ZW *****/
 
 /***** LOCALE BEGIN es_AR: Spanish - Argentina *****/
 MY_LOCALE my_locale_es_AR=
- { "es_AR", "Spanish - Argentina", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  81,
+  "es_AR",
+  "Spanish - Argentina",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_AR *****/
 
 /***** LOCALE BEGIN es_BO: Spanish - Bolivia *****/
 MY_LOCALE my_locale_es_BO=
- { "es_BO", "Spanish - Bolivia", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  82,
+  "es_BO",
+  "Spanish - Bolivia",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_BO *****/
 
 /***** LOCALE BEGIN es_CL: Spanish - Chile *****/
 MY_LOCALE my_locale_es_CL=
- { "es_CL", "Spanish - Chile", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  83,
+  "es_CL",
+  "Spanish - Chile",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_CL *****/
 
 /***** LOCALE BEGIN es_CO: Spanish - Columbia *****/
 MY_LOCALE my_locale_es_CO=
- { "es_CO", "Spanish - Columbia", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  84,
+  "es_CO",
+  "Spanish - Columbia",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_CO *****/
 
 /***** LOCALE BEGIN es_CR: Spanish - Costa Rica *****/
 MY_LOCALE my_locale_es_CR=
- { "es_CR", "Spanish - Costa Rica", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  85,
+  "es_CR",
+  "Spanish - Costa Rica",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_CR *****/
 
 /***** LOCALE BEGIN es_DO: Spanish - Dominican Republic *****/
 MY_LOCALE my_locale_es_DO=
- { "es_DO", "Spanish - Dominican Republic", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  86,
+  "es_DO",
+  "Spanish - Dominican Republic",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_DO *****/
 
 /***** LOCALE BEGIN es_EC: Spanish - Ecuador *****/
 MY_LOCALE my_locale_es_EC=
- { "es_EC", "Spanish - Ecuador", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  87,
+  "es_EC",
+  "Spanish - Ecuador",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_EC *****/
 
 /***** LOCALE BEGIN es_GT: Spanish - Guatemala *****/
 MY_LOCALE my_locale_es_GT=
- { "es_GT", "Spanish - Guatemala", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  88,
+  "es_GT",
+  "Spanish - Guatemala",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_GT *****/
 
 /***** LOCALE BEGIN es_HN: Spanish - Honduras *****/
 MY_LOCALE my_locale_es_HN=
- { "es_HN", "Spanish - Honduras", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  89,
+  "es_HN",
+  "Spanish - Honduras",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_HN *****/
 
 /***** LOCALE BEGIN es_MX: Spanish - Mexico *****/
 MY_LOCALE my_locale_es_MX=
- { "es_MX", "Spanish - Mexico", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  90,
+  "es_MX",
+  "Spanish - Mexico",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_MX *****/
 
 /***** LOCALE BEGIN es_NI: Spanish - Nicaragua *****/
 MY_LOCALE my_locale_es_NI=
- { "es_NI", "Spanish - Nicaragua", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  91,
+  "es_NI",
+  "Spanish - Nicaragua",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_NI *****/
 
 /***** LOCALE BEGIN es_PA: Spanish - Panama *****/
 MY_LOCALE my_locale_es_PA=
- { "es_PA", "Spanish - Panama", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  92,
+  "es_PA",
+  "Spanish - Panama",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_PA *****/
 
 /***** LOCALE BEGIN es_PE: Spanish - Peru *****/
 MY_LOCALE my_locale_es_PE=
- { "es_PE", "Spanish - Peru", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  93,
+  "es_PE",
+  "Spanish - Peru",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_PE *****/
 
 /***** LOCALE BEGIN es_PR: Spanish - Puerto Rico *****/
 MY_LOCALE my_locale_es_PR=
- { "es_PR", "Spanish - Puerto Rico", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  94,
+  "es_PR",
+  "Spanish - Puerto Rico",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_PR *****/
 
 /***** LOCALE BEGIN es_PY: Spanish - Paraguay *****/
 MY_LOCALE my_locale_es_PY=
- { "es_PY", "Spanish - Paraguay", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  95,
+  "es_PY",
+  "Spanish - Paraguay",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_PY *****/
 
 /***** LOCALE BEGIN es_SV: Spanish - El Salvador *****/
 MY_LOCALE my_locale_es_SV=
- { "es_SV", "Spanish - El Salvador", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  96,
+  "es_SV",
+  "Spanish - El Salvador",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_SV *****/
 
 /***** LOCALE BEGIN es_US: Spanish - United States *****/
 MY_LOCALE my_locale_es_US=
- { "es_US", "Spanish - United States", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  97,
+  "es_US",
+  "Spanish - United States",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_US *****/
 
 /***** LOCALE BEGIN es_UY: Spanish - Uruguay *****/
 MY_LOCALE my_locale_es_UY=
- { "es_UY", "Spanish - Uruguay", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  98,
+  "es_UY",
+  "Spanish - Uruguay",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_UY *****/
 
 /***** LOCALE BEGIN es_VE: Spanish - Venezuela *****/
 MY_LOCALE my_locale_es_VE=
- { "es_VE", "Spanish - Venezuela", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+{
+  99,
+  "es_VE",
+  "Spanish - Venezuela",
+  FALSE,
+  &my_locale_typelib_month_names_es_ES,
+  &my_locale_typelib_ab_month_names_es_ES,
+  &my_locale_typelib_day_names_es_ES,
+  &my_locale_typelib_ab_day_names_es_ES
+};
 /***** LOCALE END es_VE *****/
 
 /***** LOCALE BEGIN fr_BE: French - Belgium *****/
 MY_LOCALE my_locale_fr_BE=
- { "fr_BE", "French - Belgium", FALSE, &my_locale_typelib_month_names_fr_FR, &my_locale_typelib_ab_month_names_fr_FR, &my_locale_typelib_day_names_fr_FR, &my_locale_typelib_ab_day_names_fr_FR };
+{
+  100,
+  "fr_BE",
+  "French - Belgium",
+  FALSE,
+  &my_locale_typelib_month_names_fr_FR,
+  &my_locale_typelib_ab_month_names_fr_FR,
+  &my_locale_typelib_day_names_fr_FR,
+  &my_locale_typelib_ab_day_names_fr_FR
+};
 /***** LOCALE END fr_BE *****/
 
 /***** LOCALE BEGIN fr_CA: French - Canada *****/
 MY_LOCALE my_locale_fr_CA=
- { "fr_CA", "French - Canada", FALSE, &my_locale_typelib_month_names_fr_FR, &my_locale_typelib_ab_month_names_fr_FR, &my_locale_typelib_day_names_fr_FR, &my_locale_typelib_ab_day_names_fr_FR };
+{
+  101,
+  "fr_CA",
+  "French - Canada",
+  FALSE,
+  &my_locale_typelib_month_names_fr_FR,
+  &my_locale_typelib_ab_month_names_fr_FR,
+  &my_locale_typelib_day_names_fr_FR,
+  &my_locale_typelib_ab_day_names_fr_FR
+};
 /***** LOCALE END fr_CA *****/
 
 /***** LOCALE BEGIN fr_CH: French - Switzerland *****/
 MY_LOCALE my_locale_fr_CH=
- { "fr_CH", "French - Switzerland", FALSE, &my_locale_typelib_month_names_fr_FR, &my_locale_typelib_ab_month_names_fr_FR, &my_locale_typelib_day_names_fr_FR, &my_locale_typelib_ab_day_names_fr_FR };
+{
+  102,
+  "fr_CH",
+  "French - Switzerland",
+  FALSE,
+  &my_locale_typelib_month_names_fr_FR,
+  &my_locale_typelib_ab_month_names_fr_FR,
+  &my_locale_typelib_day_names_fr_FR,
+  &my_locale_typelib_ab_day_names_fr_FR
+};
 /***** LOCALE END fr_CH *****/
 
 /***** LOCALE BEGIN fr_LU: French - Luxembourg *****/
 MY_LOCALE my_locale_fr_LU=
- { "fr_LU", "French - Luxembourg", FALSE, &my_locale_typelib_month_names_fr_FR, &my_locale_typelib_ab_month_names_fr_FR, &my_locale_typelib_day_names_fr_FR, &my_locale_typelib_ab_day_names_fr_FR };
+{
+  103,
+  "fr_LU",
+  "French - Luxembourg",
+  FALSE,
+  &my_locale_typelib_month_names_fr_FR,
+  &my_locale_typelib_ab_month_names_fr_FR,
+  &my_locale_typelib_day_names_fr_FR,
+  &my_locale_typelib_ab_day_names_fr_FR
+};
 /***** LOCALE END fr_LU *****/
 
 /***** LOCALE BEGIN it_IT: Italian - Italy *****/
 MY_LOCALE my_locale_it_IT=
- { "it_IT", "Italian - Italy", FALSE, &my_locale_typelib_month_names_it_CH, &my_locale_typelib_ab_month_names_it_CH, &my_locale_typelib_day_names_it_CH, &my_locale_typelib_ab_day_names_it_CH };
+{
+  104,
+  "it_IT",
+  "Italian - Italy",
+  FALSE,
+  &my_locale_typelib_month_names_it_CH,
+  &my_locale_typelib_ab_month_names_it_CH,
+  &my_locale_typelib_day_names_it_CH,
+  &my_locale_typelib_ab_day_names_it_CH
+};
 /***** LOCALE END it_IT *****/
 
 /***** LOCALE BEGIN nl_BE: Dutch - Belgium *****/
 MY_LOCALE my_locale_nl_BE=
- { "nl_BE", "Dutch - Belgium", TRUE, &my_locale_typelib_month_names_nl_NL, &my_locale_typelib_ab_month_names_nl_NL, &my_locale_typelib_day_names_nl_NL, &my_locale_typelib_ab_day_names_nl_NL };
+{
+  105,
+  "nl_BE",
+  "Dutch - Belgium",
+  TRUE,
+  &my_locale_typelib_month_names_nl_NL,
+  &my_locale_typelib_ab_month_names_nl_NL,
+  &my_locale_typelib_day_names_nl_NL,
+  &my_locale_typelib_ab_day_names_nl_NL
+};
 /***** LOCALE END nl_BE *****/
 
 /***** LOCALE BEGIN no_NO: Norwegian - Norway *****/
 MY_LOCALE my_locale_no_NO=
- { "no_NO", "Norwegian - Norway", FALSE, &my_locale_typelib_month_names_nb_NO, &my_locale_typelib_ab_month_names_nb_NO, &my_locale_typelib_day_names_nb_NO, &my_locale_typelib_ab_day_names_nb_NO };
+{
+  106,
+  "no_NO",
+  "Norwegian - Norway",
+  FALSE,
+  &my_locale_typelib_month_names_nb_NO,
+  &my_locale_typelib_ab_month_names_nb_NO,
+  &my_locale_typelib_day_names_nb_NO,
+  &my_locale_typelib_ab_day_names_nb_NO
+};
 /***** LOCALE END no_NO *****/
 
 /***** LOCALE BEGIN sv_FI: Swedish - Finland *****/
 MY_LOCALE my_locale_sv_FI=
- { "sv_FI", "Swedish - Finland", FALSE, &my_locale_typelib_month_names_sv_SE, &my_locale_typelib_ab_month_names_sv_SE, &my_locale_typelib_day_names_sv_SE, &my_locale_typelib_ab_day_names_sv_SE };
+{
+  107,
+  "sv_FI",
+  "Swedish - Finland",
+  FALSE,
+  &my_locale_typelib_month_names_sv_SE,
+  &my_locale_typelib_ab_month_names_sv_SE,
+  &my_locale_typelib_day_names_sv_SE,
+  &my_locale_typelib_ab_day_names_sv_SE
+};
 /***** LOCALE END sv_FI *****/
 
 /***** LOCALE BEGIN zh_HK: Chinese - Hong Kong SAR *****/
 MY_LOCALE my_locale_zh_HK=
- { "zh_HK", "Chinese - Hong Kong SAR", FALSE, &my_locale_typelib_month_names_zh_CN, &my_locale_typelib_ab_month_names_zh_CN, &my_locale_typelib_day_names_zh_CN, &my_locale_typelib_ab_day_names_zh_CN };
+{
+  108,
+  "zh_HK",
+  "Chinese - Hong Kong SAR",
+  FALSE,
+  &my_locale_typelib_month_names_zh_CN,
+  &my_locale_typelib_ab_month_names_zh_CN,
+  &my_locale_typelib_day_names_zh_CN,
+  &my_locale_typelib_ab_day_names_zh_CN
+};
 /***** LOCALE END zh_HK *****/
 
+
+/*
+  The list of all locales.
+  Note, locales must be ordered according to their
+  numbers to make my_locale_by_number() work fast.
+  Some debug asserts below check this.
+*/
 MY_LOCALE *my_locales[]=
   {
     &my_locale_en_US,
@@ -1605,3 +2582,31 @@ MY_LOCALE *my_locales[]=
     &my_locale_zh_HK,
     NULL 
   };
+
+
+MY_LOCALE *my_locale_by_number(uint number)
+{
+  MY_LOCALE *locale;
+  if (number >= array_elements(my_locales) - 1)
+    return NULL;
+  locale= my_locales[number];
+  // Check that locale is on its correct position in the array
+  DBUG_ASSERT(locale == my_locales[locale->number]);
+  return locale;
+}
+
+
+MY_LOCALE *my_locale_by_name(const char *name)
+{
+  MY_LOCALE **locale;
+  for (locale= my_locales; *locale != NULL; locale++) 
+  {
+    if (!my_strcasecmp(&my_charset_latin1, (*locale)->name, name))
+    {
+      // Check that locale is on its correct position in the array
+      DBUG_ASSERT((*locale) == my_locales[(*locale)->number]);
+      return *locale;
+    }
+  }
+  return NULL;
+}
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 19add72c23ef314c754d7fd765b8d82b85c7161a..f26c43774179cf517d32842020da0504e5b75f6e 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -1958,6 +1958,7 @@ static void reset_one_shot_variables(THD *thd)
   thd->update_charset();
   thd->variables.time_zone=
     global_system_variables.time_zone;
+  thd->variables.lc_time_names= &my_locale_en_US;
   thd->one_shot_set= 0;
 }