]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
Update Windows list of locales.
authorBruno Haible <bruno@clisp.org>
Tue, 2 Dec 2003 21:41:51 +0000 (21:41 +0000)
committerBruno Haible <bruno@clisp.org>
Tue, 23 Jun 2009 10:11:27 +0000 (12:11 +0200)
gettext-runtime/intl/ChangeLog
gettext-runtime/intl/localename.c

index 07db064efdd53d937f63515d2bdeed80eed47f30..1c16987c351da11f3260feb33094f14aebc6b357 100644 (file)
@@ -1,3 +1,31 @@
+2003-12-02  Bruno Haible  <bruno@clisp.org>
+
+       * localename.c (LANG_AMHARIC, LANG_BURMESE, LANG_CAMBODIAN,
+       LANG_CHEROKEE, LANG_EDO, LANG_FRISIAN, LANG_FULFULDE, LANG_GUARANI,
+       LANG_HAUSA, LANG_HAWAIIAN, LANG_IBIBIO, LANG_IGBO, LANG_INUKTITUT,
+       LANG_KANURI, LANG_LAO, LANG_LATIN, LANG_OROMO, LANG_PAPIAMENTU,
+       LANG_PASHTO, LANG_SINHALESE, LANG_SOMALI, LANG_TAGALOG, LANG_TAJIK,
+       LANG_TAMAZIGHT, LANG_TIBETAN, LANG_TIGRINYA, LANG_TURKMEN, LANG_YI,
+       LANG_YIDDISH, LANG_YORUBA): New macros.
+       (LANG_GAELIC, LANG_MALTESE, LANG_RHAETO_ROMANCE, LANG_SAAMI, LANG_SUTU,
+       LANG_TSONGA, LANG_TSWANA, LANG_VENDA, LANG_WELSH, LANG_XHOSA,
+       LANG_ZULU): New macros, consistent with those found in Wine.
+       (SUBLANG_BENGALI_INDIA, SUBLANG_BENGALI_BANGLADESH,
+       SUBLANG_ENGLISH_INDONESIA, SUBLANG_ENGLISH_HONGKONG,
+       SUBLANG_ENGLISH_INDIA, SUBLANG_ENGLISH_MALAYSIA,
+       SUBLANG_ENGLISH_SINGAPORE, SUBLANG_FRENCH_WESTINDIES,
+       SUBLANG_FRENCH_REUNION, SUBLANG_FRENCH_CONGO, SUBLANG_FRENCH_SENEGAL,
+       SUBLANG_FRENCH_CAMEROON, SUBLANG_FRENCH_COTEDIVOIRE,
+       SUBLANG_FRENCH_MALI, SUBLANG_FRENCH_MOROCCO, SUBLANG_FRENCH_HAITI,
+       SUBLANG_PUNJABI_INDIA, SUBLANG_PUNJABI_PAKISTAN,
+       SUBLANG_ROMANIAN_ROMANIA, SUBLANG_ROMANIAN_MOLDOVA,
+       SUBLANG_SINDHI_INDIA, SUBLANG_SINDHI_PAKISTAN,
+       SUBLANG_TAMAZIGHT_ARABIC, SUBLANG_TAMAZIGHT_LATIN,
+       SUBLANG_TIGRINYA_ETHIOPIA, SUBLANG_TIGRINYA_ERITREA): New macros.
+       (_nl_locale_name) [WIN32]: Use them. Improve handling of Bengali,
+       Serbian, English, French, Punjabi, Romanian, Sindhi, Tamazight,
+       Tigrinya.
+
 2003-12-02  Bruno Haible  <bruno@clisp.org>
 
        * config.charset: Treat the new country name CS like the old country
index 62ae45bf8e00f86fc3d246b722dfc5675747e2cc..b6c3827cbbd84e148c2a80399175d0b93f2555ff 100644 (file)
 #ifdef WIN32
 # define WIN32_LEAN_AND_MEAN
 # include <windows.h>
+/* List of language codes, sorted by value:
+   0x01 LANG_ARABIC
+   0x02 LANG_BULGARIAN
+   0x03 LANG_CATALAN
+   0x04 LANG_CHINESE
+   0x05 LANG_CZECH
+   0x06 LANG_DANISH
+   0x07 LANG_GERMAN
+   0x08 LANG_GREEK
+   0x09 LANG_ENGLISH
+   0x0a LANG_SPANISH
+   0x0b LANG_FINNISH
+   0x0c LANG_FRENCH
+   0x0d LANG_HEBREW
+   0x0e LANG_HUNGARIAN
+   0x0f LANG_ICELANDIC
+   0x10 LANG_ITALIAN
+   0x11 LANG_JAPANESE
+   0x12 LANG_KOREAN
+   0x13 LANG_DUTCH
+   0x14 LANG_NORWEGIAN
+   0x15 LANG_POLISH
+   0x16 LANG_PORTUGUESE
+   0x17 LANG_RHAETO_ROMANCE
+   0x18 LANG_ROMANIAN
+   0x19 LANG_RUSSIAN
+   0x1a LANG_CROATIAN == LANG_SERBIAN
+   0x1b LANG_SLOVAK
+   0x1c LANG_ALBANIAN
+   0x1d LANG_SWEDISH
+   0x1e LANG_THAI
+   0x1f LANG_TURKISH
+   0x20 LANG_URDU
+   0x21 LANG_INDONESIAN
+   0x22 LANG_UKRAINIAN
+   0x23 LANG_BELARUSIAN
+   0x24 LANG_SLOVENIAN
+   0x25 LANG_ESTONIAN
+   0x26 LANG_LATVIAN
+   0x27 LANG_LITHUANIAN
+   0x28 LANG_TAJIK
+   0x29 LANG_FARSI
+   0x2a LANG_VIETNAMESE
+   0x2b LANG_ARMENIAN
+   0x2c LANG_AZERI
+   0x2d LANG_BASQUE
+   0x2e LANG_SORBIAN
+   0x2f LANG_MACEDONIAN
+   0x30 LANG_SUTU
+   0x31 LANG_TSONGA
+   0x32 LANG_TSWANA
+   0x33 LANG_VENDA
+   0x34 LANG_XHOSA
+   0x35 LANG_ZULU
+   0x36 LANG_AFRIKAANS
+   0x37 LANG_GEORGIAN
+   0x38 LANG_FAEROESE
+   0x39 LANG_HINDI
+   0x3a LANG_MALTESE
+   0x3b LANG_SAAMI
+   0x3c LANG_GAELIC
+   0x3d LANG_YIDDISH
+   0x3e LANG_MALAY
+   0x3f LANG_KAZAK
+   0x40 LANG_KYRGYZ
+   0x41 LANG_SWAHILI
+   0x42 LANG_TURKMEN
+   0x43 LANG_UZBEK
+   0x44 LANG_TATAR
+   0x45 LANG_BENGALI
+   0x46 LANG_PUNJABI
+   0x47 LANG_GUJARATI
+   0x48 LANG_ORIYA
+   0x49 LANG_TAMIL
+   0x4a LANG_TELUGU
+   0x4b LANG_KANNADA
+   0x4c LANG_MALAYALAM
+   0x4d LANG_ASSAMESE
+   0x4e LANG_MARATHI
+   0x4f LANG_SANSKRIT
+   0x50 LANG_MONGOLIAN
+   0x51 LANG_TIBETAN
+   0x52 LANG_WELSH
+   0x53 LANG_CAMBODIAN
+   0x54 LANG_LAO
+   0x55 LANG_BURMESE
+   0x56 LANG_GALICIAN
+   0x57 LANG_KONKANI
+   0x58 LANG_MANIPURI
+   0x59 LANG_SINDHI
+   0x5a LANG_SYRIAC
+   0x5b LANG_SINHALESE
+   0x5c LANG_CHEROKEE
+   0x5d LANG_INUKTITUT
+   0x5e LANG_AMHARIC
+   0x5f LANG_TAMAZIGHT
+   0x60 LANG_KASHMIRI
+   0x61 LANG_NEPALI
+   0x62 LANG_FRISIAN
+   0x63 LANG_PASHTO
+   0x64 LANG_TAGALOG
+   0x65 LANG_DIVEHI
+   0x66 LANG_EDO
+   0x67 LANG_FULFULDE
+   0x68 LANG_HAUSA
+   0x69 LANG_IBIBIO
+   0x6a LANG_YORUBA
+   0x70 LANG_IGBO
+   0x71 LANG_KANURI
+   0x72 LANG_OROMO
+   0x73 LANG_TIGRINYA
+   0x74 LANG_GUARANI
+   0x75 LANG_HAWAIIAN
+   0x76 LANG_LATIN
+   0x77 LANG_SOMALI
+   0x78 LANG_YI
+   0x79 LANG_PAPIAMENTU
+*/
 /* Mingw headers don't have latest language and sublanguage codes.  */
 # ifndef LANG_AFRIKAANS
 # define LANG_AFRIKAANS 0x36
 # ifndef LANG_ALBANIAN
 # define LANG_ALBANIAN 0x1c
 # endif
+# ifndef LANG_AMHARIC
+# define LANG_AMHARIC 0x5e
+# endif
 # ifndef LANG_ARABIC
 # define LANG_ARABIC 0x01
 # endif
 # ifndef LANG_BENGALI
 # define LANG_BENGALI 0x45
 # endif
+# ifndef LANG_BURMESE
+# define LANG_BURMESE 0x55
+# endif
+# ifndef LANG_CAMBODIAN
+# define LANG_CAMBODIAN 0x53
+# endif
 # ifndef LANG_CATALAN
 # define LANG_CATALAN 0x03
 # endif
+# ifndef LANG_CHEROKEE
+# define LANG_CHEROKEE 0x5c
+# endif
 # ifndef LANG_DIVEHI
 # define LANG_DIVEHI 0x65
 # endif
+# ifndef LANG_EDO
+# define LANG_EDO 0x66
+# endif
 # ifndef LANG_ESTONIAN
 # define LANG_ESTONIAN 0x25
 # endif
 # ifndef LANG_FARSI
 # define LANG_FARSI 0x29
 # endif
+# ifndef LANG_FRISIAN
+# define LANG_FRISIAN 0x62
+# endif
+# ifndef LANG_FULFULDE
+# define LANG_FULFULDE 0x67
+# endif
+# ifndef LANG_GAELIC
+# define LANG_GAELIC 0x3c
+# endif
 # ifndef LANG_GALICIAN
 # define LANG_GALICIAN 0x56
 # endif
 # ifndef LANG_GEORGIAN
 # define LANG_GEORGIAN 0x37
 # endif
+# ifndef LANG_GUARANI
+# define LANG_GUARANI 0x74
+# endif
 # ifndef LANG_GUJARATI
 # define LANG_GUJARATI 0x47
 # endif
+# ifndef LANG_HAUSA
+# define LANG_HAUSA 0x68
+# endif
+# ifndef LANG_HAWAIIAN
+# define LANG_HAWAIIAN 0x75
+# endif
 # ifndef LANG_HEBREW
 # define LANG_HEBREW 0x0d
 # endif
 # ifndef LANG_HINDI
 # define LANG_HINDI 0x39
 # endif
+# ifndef LANG_IBIBIO
+# define LANG_IBIBIO 0x69
+# endif
+# ifndef LANG_IGBO
+# define LANG_IGBO 0x70
+# endif
 # ifndef LANG_INDONESIAN
 # define LANG_INDONESIAN 0x21
 # endif
+# ifndef LANG_INUKTITUT
+# define LANG_INUKTITUT 0x5d
+# endif
 # ifndef LANG_KANNADA
 # define LANG_KANNADA 0x4b
 # endif
+# ifndef LANG_KANURI
+# define LANG_KANURI 0x71
+# endif
 # ifndef LANG_KASHMIRI
 # define LANG_KASHMIRI 0x60
 # endif
 # ifndef LANG_KYRGYZ
 # define LANG_KYRGYZ 0x40
 # endif
+# ifndef LANG_LAO
+# define LANG_LAO 0x54
+# endif
+# ifndef LANG_LATIN
+# define LANG_LATIN 0x76
+# endif
 # ifndef LANG_LATVIAN
 # define LANG_LATVIAN 0x26
 # endif
 # ifndef LANG_MALAYALAM
 # define LANG_MALAYALAM 0x4c
 # endif
+# ifndef LANG_MALTESE
+# define LANG_MALTESE 0x3a
+# endif
 # ifndef LANG_MANIPURI
 # define LANG_MANIPURI 0x58
 # endif
 # ifndef LANG_ORIYA
 # define LANG_ORIYA 0x48
 # endif
+# ifndef LANG_OROMO
+# define LANG_OROMO 0x72
+# endif
+# ifndef LANG_PAPIAMENTU
+# define LANG_PAPIAMENTU 0x79
+# endif
+# ifndef LANG_PASHTO
+# define LANG_PASHTO 0x63
+# endif
 # ifndef LANG_PUNJABI
 # define LANG_PUNJABI 0x46
 # endif
+# ifndef LANG_RHAETO_ROMANCE
+# define LANG_RHAETO_ROMANCE 0x17
+# endif
+# ifndef LANG_SAAMI
+# define LANG_SAAMI 0x3b
+# endif
 # ifndef LANG_SANSKRIT
 # define LANG_SANSKRIT 0x4f
 # endif
 # ifndef LANG_SINDHI
 # define LANG_SINDHI 0x59
 # endif
+# ifndef LANG_SINHALESE
+# define LANG_SINHALESE 0x5b
+# endif
 # ifndef LANG_SLOVAK
 # define LANG_SLOVAK 0x1b
 # endif
+# ifndef LANG_SOMALI
+# define LANG_SOMALI 0x77
+# endif
 # ifndef LANG_SORBIAN
 # define LANG_SORBIAN 0x2e
 # endif
+# ifndef LANG_SUTU
+# define LANG_SUTU 0x30
+# endif
 # ifndef LANG_SWAHILI
 # define LANG_SWAHILI 0x41
 # endif
 # ifndef LANG_SYRIAC
 # define LANG_SYRIAC 0x5a
 # endif
+# ifndef LANG_TAGALOG
+# define LANG_TAGALOG 0x64
+# endif
+# ifndef LANG_TAJIK
+# define LANG_TAJIK 0x28
+# endif
+# ifndef LANG_TAMAZIGHT
+# define LANG_TAMAZIGHT 0x5f
+# endif
 # ifndef LANG_TAMIL
 # define LANG_TAMIL 0x49
 # endif
 # ifndef LANG_THAI
 # define LANG_THAI 0x1e
 # endif
+# ifndef LANG_TIBETAN
+# define LANG_TIBETAN 0x51
+# endif
+# ifndef LANG_TIGRINYA
+# define LANG_TIGRINYA 0x73
+# endif
+# ifndef LANG_TSONGA
+# define LANG_TSONGA 0x31
+# endif
+# ifndef LANG_TSWANA
+# define LANG_TSWANA 0x32
+# endif
+# ifndef LANG_TURKMEN
+# define LANG_TURKMEN 0x42
+# endif
 # ifndef LANG_UKRAINIAN
 # define LANG_UKRAINIAN 0x22
 # endif
 # ifndef LANG_UZBEK
 # define LANG_UZBEK 0x43
 # endif
+# ifndef LANG_VENDA
+# define LANG_VENDA 0x33
+# endif
 # ifndef LANG_VIETNAMESE
 # define LANG_VIETNAMESE 0x2a
 # endif
+# ifndef LANG_WELSH
+# define LANG_WELSH 0x52
+# endif
+# ifndef LANG_XHOSA
+# define LANG_XHOSA 0x34
+# endif
+# ifndef LANG_YI
+# define LANG_YI 0x78
+# endif
+# ifndef LANG_YIDDISH
+# define LANG_YIDDISH 0x3d
+# endif
+# ifndef LANG_YORUBA
+# define LANG_YORUBA 0x6a
+# endif
+# ifndef LANG_ZULU
+# define LANG_ZULU 0x35
+# endif
 # ifndef SUBLANG_ARABIC_SAUDI_ARABIA
 # define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
 # endif
 # ifndef SUBLANG_AZERI_CYRILLIC
 # define SUBLANG_AZERI_CYRILLIC 0x02
 # endif
+# ifndef SUBLANG_BENGALI_INDIA
+# define SUBLANG_BENGALI_INDIA 0x00
+# endif
+# ifndef SUBLANG_BENGALI_BANGLADESH
+# define SUBLANG_BENGALI_BANGLADESH 0x01
+# endif
 # ifndef SUBLANG_CHINESE_MACAU
 # define SUBLANG_CHINESE_MACAU 0x05
 # endif
 # ifndef SUBLANG_ENGLISH_PHILIPPINES
 # define SUBLANG_ENGLISH_PHILIPPINES 0x0d
 # endif
+# ifndef SUBLANG_ENGLISH_INDONESIA
+# define SUBLANG_ENGLISH_INDONESIA 0x0e
+# endif
+# ifndef SUBLANG_ENGLISH_HONGKONG
+# define SUBLANG_ENGLISH_HONGKONG 0x0f
+# endif
+# ifndef SUBLANG_ENGLISH_INDIA
+# define SUBLANG_ENGLISH_INDIA 0x10
+# endif
+# ifndef SUBLANG_ENGLISH_MALAYSIA
+# define SUBLANG_ENGLISH_MALAYSIA 0x11
+# endif
+# ifndef SUBLANG_ENGLISH_SINGAPORE
+# define SUBLANG_ENGLISH_SINGAPORE 0x12
+# endif
 # ifndef SUBLANG_FRENCH_LUXEMBOURG
 # define SUBLANG_FRENCH_LUXEMBOURG 0x05
 # endif
 # ifndef SUBLANG_FRENCH_MONACO
 # define SUBLANG_FRENCH_MONACO 0x06
 # endif
+# ifndef SUBLANG_FRENCH_WESTINDIES
+# define SUBLANG_FRENCH_WESTINDIES 0x07
+# endif
+# ifndef SUBLANG_FRENCH_REUNION
+# define SUBLANG_FRENCH_REUNION 0x08
+# endif
+# ifndef SUBLANG_FRENCH_CONGO
+# define SUBLANG_FRENCH_CONGO 0x09
+# endif
+# ifndef SUBLANG_FRENCH_SENEGAL
+# define SUBLANG_FRENCH_SENEGAL 0x0a
+# endif
+# ifndef SUBLANG_FRENCH_CAMEROON
+# define SUBLANG_FRENCH_CAMEROON 0x0b
+# endif
+# ifndef SUBLANG_FRENCH_COTEDIVOIRE
+# define SUBLANG_FRENCH_COTEDIVOIRE 0x0c
+# endif
+# ifndef SUBLANG_FRENCH_MALI
+# define SUBLANG_FRENCH_MALI 0x0d
+# endif
+# ifndef SUBLANG_FRENCH_MOROCCO
+# define SUBLANG_FRENCH_MOROCCO 0x0e
+# endif
+# ifndef SUBLANG_FRENCH_HAITI
+# define SUBLANG_FRENCH_HAITI 0x0f
+# endif
 # ifndef SUBLANG_GERMAN_LUXEMBOURG
 # define SUBLANG_GERMAN_LUXEMBOURG 0x04
 # endif
 # ifndef SUBLANG_NEPALI_INDIA
 # define SUBLANG_NEPALI_INDIA 0x02
 # endif
+# ifndef SUBLANG_PUNJABI_INDIA
+# define SUBLANG_PUNJABI_INDIA 0x00
+# endif
+# ifndef SUBLANG_PUNJABI_PAKISTAN
+# define SUBLANG_PUNJABI_PAKISTAN 0x01
+# endif
+# ifndef SUBLANG_ROMANIAN_ROMANIA
+# define SUBLANG_ROMANIAN_ROMANIA 0x00
+# endif
+# ifndef SUBLANG_ROMANIAN_MOLDOVA
+# define SUBLANG_ROMANIAN_MOLDOVA 0x01
+# endif
 # ifndef SUBLANG_SERBIAN_LATIN
 # define SUBLANG_SERBIAN_LATIN 0x02
 # endif
 # ifndef SUBLANG_SERBIAN_CYRILLIC
 # define SUBLANG_SERBIAN_CYRILLIC 0x03
 # endif
+# ifndef SUBLANG_SINDHI_INDIA
+# define SUBLANG_SINDHI_INDIA 0x00
+# endif
+# ifndef SUBLANG_SINDHI_PAKISTAN
+# define SUBLANG_SINDHI_PAKISTAN 0x01
+# endif
 # ifndef SUBLANG_SPANISH_GUATEMALA
 # define SUBLANG_SPANISH_GUATEMALA 0x04
 # endif
 # ifndef SUBLANG_SWEDISH_FINLAND
 # define SUBLANG_SWEDISH_FINLAND 0x02
 # endif
+# ifndef SUBLANG_TAMAZIGHT_ARABIC
+# define SUBLANG_TAMAZIGHT_ARABIC 0x01
+# endif
+# ifndef SUBLANG_TAMAZIGHT_LATIN
+# define SUBLANG_TAMAZIGHT_LATIN 0x02
+# endif
+# ifndef SUBLANG_TIGRINYA_ETHIOPIA
+# define SUBLANG_TIGRINYA_ETHIOPIA 0x00
+# endif
+# ifndef SUBLANG_TIGRINYA_ERITREA
+# define SUBLANG_TIGRINYA_ERITREA 0x01
+# endif
 # ifndef SUBLANG_URDU_PAKISTAN
 # define SUBLANG_URDU_PAKISTAN 0x01
 # endif
@@ -452,7 +771,7 @@ _nl_locale_name (int category, const char *categoryname)
     {
     case LANG_AFRIKAANS: return "af_ZA";
     case LANG_ALBANIAN: return "sq_AL";
-    case 0x5e: /* AMHARIC */ return "am_ET";
+    case LANG_AMHARIC: return "am_ET";
     case LANG_ARABIC:
       switch (sub)
        {
@@ -487,12 +806,18 @@ _nl_locale_name (int category, const char *categoryname)
     case LANG_BASQUE:
       return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR".  */
     case LANG_BELARUSIAN: return "be_BY";
-    case LANG_BENGALI: return "bn_IN";
+    case LANG_BENGALI:
+      switch (sub)
+       {
+       case SUBLANG_BENGALI_INDIA: return "bn_IN";
+       case SUBLANG_BENGALI_BANGLADESH: return "bn_BD";
+       }
+      return "bn";
     case LANG_BULGARIAN: return "bg_BG";
-    case 0x55: /* BURMESE */ return "my_MM";
-    case 0x53: /* CAMBODIAN */ return "km_KH";
+    case LANG_BURMESE: return "my_MM";
+    case LANG_CAMBODIAN: return "km_KH";
     case LANG_CATALAN: return "ca_ES";
-    case 0x5c: /* CHEROKEE */ return "chr_US";
+    case LANG_CHEROKEE: return "chr_US";
     case LANG_CHINESE:
       switch (sub)
        {
@@ -514,8 +839,8 @@ _nl_locale_name (int category, const char *categoryname)
       switch (sub)
        {
        case SUBLANG_DEFAULT: return "hr_HR";
-       case SUBLANG_SERBIAN_LATIN: return "sr_YU";
-       case SUBLANG_SERBIAN_CYRILLIC: return "sr_YU@cyrillic";
+       case SUBLANG_SERBIAN_LATIN: return "sr_CS";
+       case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic";
        }
       return "hr";
     case LANG_CZECH: return "cs_CZ";
@@ -528,7 +853,7 @@ _nl_locale_name (int category, const char *categoryname)
        case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE";
        }
       return "nl";
-    case 0x66: /* EDO */ return "bin_NG";
+    case LANG_EDO: return "bin_NG";
     case LANG_ENGLISH:
       switch (sub)
        {
@@ -549,6 +874,11 @@ _nl_locale_name (int category, const char *categoryname)
        case SUBLANG_ENGLISH_TRINIDAD: return "en_TT";
        case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW";
        case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH";
+       case SUBLANG_ENGLISH_INDONESIA: return "en_ID";
+       case SUBLANG_ENGLISH_HONGKONG: return "en_HK";
+       case SUBLANG_ENGLISH_INDIA: return "en_IN";
+       case SUBLANG_ENGLISH_MALAYSIA: return "en_MY";
+       case SUBLANG_ENGLISH_SINGAPORE: return "en_SG";
        }
       return "en";
     case LANG_ESTONIAN: return "et_EE";
@@ -564,11 +894,20 @@ _nl_locale_name (int category, const char *categoryname)
        case SUBLANG_FRENCH_SWISS: return "fr_CH";
        case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU";
        case SUBLANG_FRENCH_MONACO: return "fr_MC";
+       case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */
+       case SUBLANG_FRENCH_REUNION: return "fr_RE";
+       case SUBLANG_FRENCH_CONGO: return "fr_CG";
+       case SUBLANG_FRENCH_SENEGAL: return "fr_SN";
+       case SUBLANG_FRENCH_CAMEROON: return "fr_CM";
+       case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI";
+       case SUBLANG_FRENCH_MALI: return "fr_ML";
+       case SUBLANG_FRENCH_MOROCCO: return "fr_MA";
+       case SUBLANG_FRENCH_HAITI: return "fr_HT";
        }
       return "fr";
-    case 0x62: /* FRISIAN */ return "fy_NL";
-    case 0x67: /* FULFULDE */ return "ful_NG";
-    case 0x3c: /* GAELIC */
+    case LANG_FRISIAN: return "fy_NL";
+    case LANG_FULFULDE: return "ful_NG";
+    case LANG_GAELIC:
       switch (sub)
        {
        case 0x01: /* SCOTTISH */ return "gd_GB";
@@ -588,21 +927,21 @@ _nl_locale_name (int category, const char *categoryname)
        }
       return "de";
     case LANG_GREEK: return "el_GR";
-    case 0x74: /* GUARANI */ return "gn_PY";
+    case LANG_GUARANI: return "gn_PY";
     case LANG_GUJARATI: return "gu_IN";
-    case 0x68: /* HAUSA */ return "ha_NG";
-    case 0x75: /* HAWAIIAN */
+    case LANG_HAUSA: return "ha_NG";
+    case LANG_HAWAIIAN:
       /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers)
         or Hawaii Creole English ("cpe_US", 600000 speakers)?  */
       return "cpe_US";
     case LANG_HEBREW: return "he_IL";
     case LANG_HINDI: return "hi_IN";
     case LANG_HUNGARIAN: return "hu_HU";
-    case 0x69: /* IBIBIO */ return "nic_NG";
+    case LANG_IBIBIO: return "nic_NG";
     case LANG_ICELANDIC: return "is_IS";
-    case 0x70: /* IGBO */ return "ibo_NG";
+    case LANG_IGBO: return "ibo_NG";
     case LANG_INDONESIAN: return "id_ID";
-    case 0x5d: /* INUKTITUT */ return "iu_CA";
+    case LANG_INUKTITUT: return "iu_CA";
     case LANG_ITALIAN:
       switch (sub)
        {
@@ -612,7 +951,7 @@ _nl_locale_name (int category, const char *categoryname)
       return "it";
     case LANG_JAPANESE: return "ja_JP";
     case LANG_KANNADA: return "kn_IN";
-    case 0x71: /* KANURI */ return "kau_NG";
+    case LANG_KANURI: return "kau_NG";
     case LANG_KASHMIRI:
       switch (sub)
        {
@@ -626,8 +965,8 @@ _nl_locale_name (int category, const char *categoryname)
       return "kok_IN";
     case LANG_KOREAN: return "ko_KR";
     case LANG_KYRGYZ: return "ky_KG";
-    case 0x54: /* LAO */ return "lo_LA";
-    case 0x76: /* LATIN */ return "la_VA";
+    case LANG_LAO: return "lo_LA";
+    case LANG_LATIN: return "la_VA";
     case LANG_LATVIAN: return "lv_LV";
     case LANG_LITHUANIAN: return "lt_LT";
     case LANG_MACEDONIAN: return "mk_MK";
@@ -639,7 +978,7 @@ _nl_locale_name (int category, const char *categoryname)
        }
       return "ms";
     case LANG_MALAYALAM: return "ml_IN";
-    case 0x3a: /* MALTESE */ return "mt_MT";
+    case LANG_MALTESE: return "mt_MT";
     case LANG_MANIPURI:
       /* FIXME: Adjust this when such locales appear on Unix.  */
       return "mni_IN";
@@ -661,9 +1000,9 @@ _nl_locale_name (int category, const char *categoryname)
        }
       return "no";
     case LANG_ORIYA: return "or_IN";
-    case 0x72: /* OROMO */ return "om_ET";
-    case 0x79: /* PAPIAMENTU */ return "pap_AN";
-    case 0x63: /* PASHTO */
+    case LANG_OROMO: return "om_ET";
+    case LANG_PAPIAMENTU: return "pap_AN";
+    case LANG_PASHTO:
       return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF".  */
     case LANG_POLISH: return "pl_PL";
     case LANG_PORTUGUESE:
@@ -675,18 +1014,36 @@ _nl_locale_name (int category, const char *categoryname)
        case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR";
        }
       return "pt";
-    case LANG_PUNJABI: return "pa_IN";
-    case 0x17: /* RHAETO-ROMANCE */ return "rm_CH";
-    case LANG_ROMANIAN: return "ro_RO";
+    case LANG_PUNJABI:
+      switch (sub)
+       {
+       case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */
+       case SUBLANG_PUNJABI_PAKISTAN: return "pa_PK"; /* Arabic script */
+       }
+      return "pa";
+    case LANG_RHAETO_ROMANCE: return "rm_CH";
+    case LANG_ROMANIAN:
+      switch (sub)
+       {
+       case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO";
+       case SUBLANG_ROMANIAN_MOLDOVA: return "ro_MD";
+       }
+      return "ro";
     case LANG_RUSSIAN:
-      return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA".  */
-    case 0x3b: /* SAMI */ return "se_NO";
+      return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD".  */
+    case LANG_SAAMI: /* actually Northern Sami */ return "se_NO";
     case LANG_SANSKRIT: return "sa_IN";
-    case LANG_SINDHI: return "sd";
-    case 0x5b: /* SINHALESE */ return "si_LK";
+    case LANG_SINDHI:
+      switch (sub)
+       {
+       case SUBLANG_SINDHI_INDIA: return "sd_IN";
+       case SUBLANG_SINDHI_PAKISTAN: return "sd_PK";
+       }
+      return "sd";
+    case LANG_SINHALESE: return "si_LK";
     case LANG_SLOVAK: return "sk_SK";
     case LANG_SLOVENIAN: return "sl_SI";
-    case 0x77: /* SOMALI */ return "so_SO";
+    case LANG_SOMALI: return "so_SO";
     case LANG_SORBIAN:
       /* FIXME: Adjust this when such locales appear on Unix.  */
       return "wen_DE";
@@ -716,7 +1073,7 @@ _nl_locale_name (int category, const char *categoryname)
        case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR";
        }
       return "es";
-    case 0x30: /* SUTU */ return "bnt_TZ";
+    case LANG_SUTU: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */
     case LANG_SWAHILI: return "sw_KE";
     case LANG_SWEDISH:
       switch (sub)
@@ -726,19 +1083,33 @@ _nl_locale_name (int category, const char *categoryname)
        }
       return "sv";
     case LANG_SYRIAC: return "syr_TR"; /* An extinct language.  */
-    case 0x64: /* TAGALOG */ return "tl_PH";
-    case 0x28: /* TAJIK */ return "tg_TJ";
-    case 0x5f: /* TAMAZIGHT */ return "ber_MA";
+    case LANG_TAGALOG: return "tl_PH";
+    case LANG_TAJIK: return "tg_TJ";
+    case LANG_TAMAZIGHT:
+      switch (sub)
+       {
+       /* FIXME: Adjust this when Tamazight locales appear on Unix.  */
+       case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic";
+       case SUBLANG_TAMAZIGHT_LATIN: return "ber_MA@latin";
+       }
+      return "ber_MA";
     case LANG_TAMIL:
       return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG".  */
     case LANG_TATAR: return "tt_RU";
     case LANG_TELUGU: return "te_IN";
     case LANG_THAI: return "th_TH";
-    case 0x51: /* TIBETAN */ return "bo_CN";
-    case 0x73: /* TIGRINYA */ return "ti_ET";
-    case 0x31: /* TSONGA */ return "ts_ZA";
+    case LANG_TIBETAN: return "bo_CN";
+    case LANG_TIGRINYA:
+      switch (sub)
+       {
+       case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET";
+       case SUBLANG_TIGRINYA_ERITREA: return "ti_ER";
+       }
+      return "ti";
+    case LANG_TSONGA: return "ts_ZA";
+    case LANG_TSWANA: return "tn_BW";
     case LANG_TURKISH: return "tr_TR";
-    case 0x42: /* TURKMEN */ return "tk_TM";
+    case LANG_TURKMEN: return "tk_TM";
     case LANG_UKRAINIAN: return "uk_UA";
     case LANG_URDU:
       switch (sub)
@@ -755,14 +1126,19 @@ _nl_locale_name (int category, const char *categoryname)
        case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic";
        }
       return "uz";
-    case 0x33: /* VENDA */ return "ven_ZA";
+    case LANG_VENDA:
+      /* FIXME: It's not clear whether Venda has the ISO 639-2 two-letter code
+        "ve" or not.
+        http://www.loc.gov/standards/iso639-2/englangn.html has it, but
+        http://lcweb.loc.gov/standards/iso639-2/codechanges.html doesn't,  */
+      return "ven_ZA"; /* or "ve_ZA"? */
     case LANG_VIETNAMESE: return "vi_VN";
-    case 0x52: /* WELSH */ return "cy_GB";
-    case 0x34: /* XHOSA */ return "xh_ZA";
-    case 0x78: /* YI */ return "sit_CN";
-    case 0x3d: /* YIDDISH */ return "yi_IL";
-    case 0x6a: /* YORUBA */ return "yo_NG";
-    case 0x35: /* ZULU */ return "zu_ZA";
+    case LANG_WELSH: return "cy_GB";
+    case LANG_XHOSA: return "xh_ZA";
+    case LANG_YI: return "sit_CN";
+    case LANG_YIDDISH: return "yi_IL";
+    case LANG_YORUBA: return "yo_NG";
+    case LANG_ZULU: return "zu_ZA";
     default: return "C";
     }